ASP.NET Core Web API 集成测试中使用 Bearer Token

在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. html

在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, 例如里面去掉了用户身份验证相关的中间件.app

可是有些被测试的行为里面须要用到身份/受权信息.测试

因此本文就介绍一下在API集成测试中发送请求时使用Bearer Token做为Authorization Header的状况.debug

 

集成测试中使用Bearer Token

我这个项目里生产时使用的是Identity Server 4, 而进行集成测试时使用Identity Server 4可能会不太方便, 因此我决定简化一下, 把这项工做就仅限制在API和测试项目这两个项目里.调试

 

首先为被测试系统添加受权/身份验证中间件, 修改StartupIntegrationTest:htm

在ConfigureServices()方法里, 首先添加一个权限策略, 要求全部的MVC Controller只有受权的用户才能访问.中间件

随后使用AddAuthentication()添加身份验证中间件, 并设置Bearer做为方案, 经过AddJwtBearer()进行一些参数配置.blog

这里须要用到一个secret, 由于测试项目会用到, 因此暂时我把它弄成静态属性了.token

最后在Configure()方法里使用该中间件便可.开发

 

来到集成测试项目的TestServerFixture类, 先要要作的就是使用上面的secret生成token, 并在HttpClient里设置Authorization Header便可:

生成token的代码里能够设置Identity Claims. 这里我只添加了Name和Role.

 

而后咱们试试, 找一个集成测试进行调试, 我使用的是VSCode, 点击方法上面的debug:

 

我在被测试方法里添加了一些傻代码, 以便调试用户信息:

查看Claims:

能够看到在测试代码里设置了Identity Claims了, 说明使用Bearer Token成功了.

 

测试身份验证中间件

被测试系统使用了身份中间件: app.UserAnthentication(), 咱们也能够测试一下这个中间件的功能, 若是Token不正确的话, 就应该返回401 UnAuthorized状态码:

这个测试代码很简单, 就是设置了一个不正确的token, 并Assert返回状态码是401.

 

该测试会经过:

 

文章略短, 就介绍到这.

相关文章
相关标签/搜索