2014-01-09 7 views
1

Мы контролируем доступ к ресурсам и действиям нашего приложения с помощью MVC ClaimsAuthorizeAttribute от ThinkTecture и хотели бы иметь возможность включать в себя некоторые единицы тестирования с использованием Moq.Утверждение с требованиями к тестированию на основе единиц измерения с помощью ThinkTecture ClaimsAuthorizeAttribute

В идеале, я хотел бы написать тест, который запрашивает действие контроллера украшенное:

[ClaimsAuthorize("operation_x", "resource_1")] 

... так, чтобы ввести метод переопределения CheckAccess нашей AuthorizationManager во время выполнения теста.

Наш CheckAccess override просто получает действие и ресурс из входящего AuthorizationContext («operation_x» и «resource_1») и определяет, имеет ли Принципал комбинацию ресурсов/действий в качестве претензии и возвращает true, если совпадение найдено.

Тест пройдет или не будет выполнен по результатам нашего CheckAccess-переопределения.

Большинство примеров, которые я нашел в Интернете, посвящены индивидуальному тестированию атрибутов авторизации или проверке того, было ли действие контроллера украшено атрибутом AuthzAttribute. Кажется, не так много примеров тестирования атрибута ClaimsAuthorize ThinkTecture.

Возможно ли достичь того, что я описал? Если да, пожалуйста, сообщите!

Благодаря

ответ

2

Вы можете смотреть, чтобы делать больше работы, чем это необходимо - вам не нужно, чтобы проверить ThinkTecture-х ClaimsAuthorizeAttribute, потому что ThinkTecture уже сделали это. Вы должны написать тесты, которые проверяют ваш собственный код, а именно результат действий, выполненных внутри вашего переопределения CheckAccess.

Если вы хотите проверить, работает ли атрибут ThinkTecture так, как следует, вы должны изучить настройку интеграции, которая вызывает вызванное действие контроллера.

+1

Спасибо, что ответили Стив. В самом деле, результаты наших вызовов моего переопределения CheckAccess должны быть главной проблемой здесь. Я думаю, что вы говорите, что нет никакой дополнительной выгоды при вызове CheckAccess по прокси-тесту теста, запрашивающего действие контроллера (и выполнение конвейера authz), чем при вызове CheckAccess непосредственно в методе тестирования? –

+0

Не беспокойтесь, и это правильно, да :) –

+1

Итак, в последней версии ClaimsAuthorizeAttribute, похоже, был переименован ResourceActionAuthorizeAttribute, но я еще не нашел хороших примеров того, как это использовать. Пример кода в проекте больше не создается, поскольку он не был переименован из ClaimsAuthorizeAttribute. Любые предложения по документации и примерам были бы приятным дополнением. Спасибо. –