专栏首页草根专栏ASP.NET Core Web API 集成测试中使用 Bearer Token

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

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

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

但是有些被测试的行为里面需要用到身份/授权信息.

所以本文就介绍一下在API集成测试中发送请求时使用Bearer Token作为Authorization Header的情况.

集成测试中使用Bearer Token

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

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

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

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

这里需要用到一个secret, 因为测试项目会用到, 所以暂时我把它弄成静态属性了.

最后在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.

该测试会通过:

文章略短, 就介绍到这.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET Core Web API 集成测试

    本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识.

    solenovex
  • 测试 ASP.NET Core API Controller

    本文需要您了解ASP.NET Core MVC/Web API, xUnit以及Moq相关知识.

    solenovex
  • .NET Core TDD 前传: 编写易于测试的代码 -- 缝

    举个例子, 如果一辆汽车在产出后没完成测试, 那么没人敢去驾驶它. 代码也是一样的, 如果项目未能进行该做的测试, 那么客户就不敢去使用它, 即使使用了也会遇到...

    solenovex
  • 怎么样才能做好自动化测试呢?

    脚本:不要录制,不要录制,不要录制,手写高可用、高可读性、高可维护性的测试脚本是确保自动化测试可持续的保证。

    苦叶子
  • 《软件工程之美》打卡第五周

    上周因为临时公司有紧急需求,大部分时间都投入到工作上,所以就暂缓打卡的计划,这周正式进入远程办公的第一周,继续把专栏的学习计划滚动起来,这周会分享宝玉老师的极客...

    用户1130025
  • [android] 测试的相关概念

    /********************2016年5月4日 更新********************************/

    陶士涵
  • 七个无用的测试指标

    平时在测试工作中恪守的那些指标真的都是金科玉律么? 软件测试度量是一种通过检测软件测试过程的质量和有效性来评估软件开发的量化方法。开发团队使用测试指标来跟踪开发...

    CSDN技术头条
  • 论手工测试与自动化测试谁更牛

    当企业的产品规模开始膨胀的时候,尤其是产品迭代加快是不是能及时得到测试验证支持是很重要的。这些靠手工测试是基本无法实现的,手工测试会严重的拖慢产品进度,而且无...

    软件测试君
  • ASP.NET Core Web API 集成测试

    本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识.

    solenovex
  • 渠道优化完全指南:如何最大化的获得转化效果

    只有在对与用户交互的每个元素进行实验、深入分析并优化设计时,才能实现转化漏斗的最大化。

    iCDO互联网数据官

扫码关注云+社区

领取腾讯云代金券