1

我们正在使用 ThinkTecture 的 MVC ClaimsAuthorizeAttribute 控制对应用程序资源和操作的访问,并希望能够使用 Moq 包含一些单元测试覆盖率。

理想情况下,我想编写一个测试,请求一个控制器操作,其中包含:

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

...以便在执行测试期间进入我们的 AuthorizationManager 的 CheckAccess 覆盖方法。

我们的 CheckAccess 覆盖只是从传入的 AuthorizationContext(“operation_x”和“resource_1”)获取操作和资源,并确定 Principal 是否具有资源/操作组合作为声明,如果找到匹配项则返回 true。

测试将根据我们的 CheckAccess 覆盖的结果通过或失败。

我在网上找到的大多数示例都是关于单元测试自定义授权属性或测试控制器操作是否已被 AuthzAttribute 修饰。测试 ThinkTecture 的 ClaimsAuthorize 属性的示例似乎并不多。

甚至有可能实现我所描述的吗?如果有,请指教!

谢谢

4

1 回答 1

2

您可能希望做比必要更多的工作 - 您不需要测试 ThinkTecture 的ClaimsAuthorizeAttribute,因为 ThinkTecture 已经完成了。您应该编写测试来测试您自己的代码 - 即在您的覆盖范围内执行的操作的结果CheckAccess

如果您想检查 ThinkTecture 属性是否正常工作,您应该考虑设置一个集成测试,该测试会导致调用相关的控制器操作。

于 2014-01-09T13:57:02.210 回答