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.
该测试会通过:
文章略短, 就介绍到这.
相关文章:
ASP.NET Core Web API 集成测试
使用 coverlet 查看.NET Core应用的测试覆盖率
好代码是管出来的——.Net Core集成测试与数据驱动测试
原文地址:http://www.cnblogs.com/cgzl/p/9356596.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
ASP.NET Core Web API 集成测试中使用 Bearer Token相关推荐
- ASP.NET Core Web API 索引 (更新Identity Server 4 视频教程)
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...
- 保护我方Id | ASP.NET Core Web API使用加密Id
前言 上次,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串,但是通过这些字符串又可以反向映射出真实的Id以供内部使用.比如B站的播放链接https://www.bilibili ...
- core webapi缩略图_在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件
新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World! 一.创建一个空项目 请查看 新建 .NET Core 项目 -- Hello World! ...
- 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...
- NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?
咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...
- ASP.NET Core Web API中使用Swagger
本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger 在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...
最新文章
- Computer OS系统基本原理
- 2018.09.01 poj3071Football(概率dp+二进制找规律)
- 2020\Simulation_2\2.最多边数
- 域环境下用组策略禁止客户机更改IP
- 1043 输出PATest (20分)_23行代码满分
- Linux 中 SVN 重启关闭
- .net mvc中级联的使用
- html中列表、表格、合并单元格
- 学python能赚钱吗-自学Python三个月能赚钱吗?
- [转载] Python导出Excel图表
- 【poj1743-Musical Theme】不可重叠最长重复子串-后缀数组
- Python春节特训营03:打倒拦路虎,学会键盘打字
- Google用AI技术为Allo增加表情符号建议按钮
- eclipse 32位换成64位 maven tomcat svn 集成
- 斐波纳契回调线_斐波那契回调线
- Remind-You Part3. Python-Sqlite记录数据
- 整理一些微信小程序面试资料
- 最实用的Linux命令总结
- java 如何拆分 姓氏与姓名 姓与名字加空格,考虑单姓复姓
- java nio写文件nul_使用Java NIO编写高性能的服务器 文件下载