我们通过使用ThinkTecture的MVC ClaimsAuthorizeAttribute控制对应用程序资源和操作的访问,并希望能够使用Moq包含一些单元测试覆盖率。
理想情况下,我想编写一个请求控制器操作的测试:
[ClaimsAuthorize("operation_x", "resource_1")]
...以便在执行测试期间输入AuthorizationManager的CheckAccess覆盖方法。
我们的CheckAccess覆盖只是从传入的AuthorizationContext(“operation_x”和“resource_1”)获取操作和资源,并确定Principal是否将资源/操作组合作为声明,如果找到匹配则返回true。
测试将根据CheckAccess覆盖的结果通过或失败。
我在网上找到的大多数示例都是关于单元测试自定义授权属性或测试控制器操作是否已由AuthzAttribute修饰。似乎没有很多测试ThinkTecture的ClaimsAuthorize属性的例子。
甚至可以实现我所描述的内容吗?如果是这样,请指教!
由于
答案 0 :(得分:2)
您可能希望做更多不必要的工作 - 您不需要测试ThinkTecture的ClaimsAuthorizeAttribute
,因为ThinkTecture已经这样做了。您应该编写测试自己代码的测试 - 即在覆盖CheckAccess
内执行的操作的结果。
如果要检查ThinkTecture属性是否正常工作,您应该研究设置集成测试,该测试会导致调用相关控制器操作。