如何禁用所有授权属性?

时间:2017-01-25 09:53:59

标签: c# asp.net authorization .net-core

我正在使用Microsoft.AspNetCore.Authorization在我的ASP.NET核心项目中进行身份验证和授权。我实施了这样的费用方法:

[HttpGet]
[Authorize(Roles = UserRoles.Admin)]
public IActionResult GetIds(string name)
{
...
}

现在我想测试所有方法,当然在我的单元测试中我需要登录才能测试它。我不想一直这么做,所以我想知道,如果有任何可能性在测试期间禁用或忽略所有这些授权属性onyl。例如,我将appsettings.json中的字段“tests”设置为true,所有属性都将被忽略。

此选项仅在测试期间不会使用。完成产品后将获得认证。 Certyfication系统只能使用URL而无法登录。

提前谢谢

1 个答案:

答案 0 :(得分:1)

当您为Controller课程编写单元测试时,您需要直接测试其公共方法=>在您的情况下直接调用YourController.GetIds()方法:

var expectedResult = ... // setup expected result
var controller = new YourController();
var result = controller.GetIds(testName);

Assert.AreEqual(result, expectedResult);

直接调用方法时,[Authorize]等属性不参与方法执行。

如果您编写功能测试,那么您需要考虑创建测试用户,该用户将拥有调用此端点的适当权限。