首页 > 解决方案 > 如何测试需要身份验证和授权的 webapi 控制器 xunit?

问题描述

我有一个自定义授权属性。我尝试使用TestServerwhere是我使用内存 EF 数据库创建的Startup另一个类。Startup

 testServer = new TestServer(new WebHostBuilder().UseStartup<Startup>());
 httpCLient = testServer.CreateClient();

这是一个示例方法。如果我尝试使用邮递员的方法,我会收到禁止的请求。

[RoleAuthorize(arguments)]
[HttpGet]
public IActionResult GetAll()
{
    var users = _userService.GetAll();
    return Ok(users);
}

当我尝试这个时:

var scope = testServer.Host.Services.CreateScope();
var userService = scope.ServiceProvider.GetRequiredService<IUserService>();
var userController = new UsersController(userService);
userController.GetAll();

没有未经授权的响应,我可以得到用户。

我得到NotFound了:

var data = await httpCLient.GetAsync("users");
var result = await data.Content.ReadAsStringAsync();

如何测试授权和身份验证?

标签: c#unit-testingasp.net-corecontrollerjwt

解决方案


推荐阅读