Мы контролируем доступ к ресурсам и действиям нашего приложения с помощью 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.
Возможно ли достичь того, что я описал? Если да, пожалуйста, сообщите!
Благодаря
Спасибо, что ответили Стив. В самом деле, результаты наших вызовов моего переопределения CheckAccess должны быть главной проблемой здесь. Я думаю, что вы говорите, что нет никакой дополнительной выгоды при вызове CheckAccess по прокси-тесту теста, запрашивающего действие контроллера (и выполнение конвейера authz), чем при вызове CheckAccess непосредственно в методе тестирования? –
Не беспокойтесь, и это правильно, да :) –
Итак, в последней версии ClaimsAuthorizeAttribute, похоже, был переименован ResourceActionAuthorizeAttribute, но я еще не нашел хороших примеров того, как это использовать. Пример кода в проекте больше не создается, поскольку он не был переименован из ClaimsAuthorizeAttribute. Любые предложения по документации и примерам были бы приятным дополнением. Спасибо. –