在 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相关推荐

  1. ASP.NET Core Web API 索引 (更新Identity Server 4 视频教程)

    GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...

  2. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...

  3. 保护我方Id | ASP.NET Core Web API使用加密Id

    前言 上次,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串,但是通过这些字符串又可以反向映射出真实的Id以供内部使用.比如B站的播放链接https://www.bilibili ...

  4. core webapi缩略图_在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件

    新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World! 一.创建一个空项目 请查看 新建 .NET Core 项目 -- Hello World!  ...

  5. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  6. NET问答: 如何在 ASP.NET Core Web API 的 Response 中添加自定义的 Header ?

    咨询区 JDawg: 我正在将 Web API 2 移植到 ASP.NET Core Web API 上,以前我都直接在 Response 属性上添加自定义的 Header,如下代码所示: HttpR ...

  7. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  8. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

    在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...

  9. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...

最新文章

  1. Computer OS系统基本原理
  2. 2018.09.01 poj3071Football(概率dp+二进制找规律)
  3. 2020\Simulation_2\2.最多边数
  4. 域环境下用组策略禁止客户机更改IP
  5. 1043 输出PATest (20分)_23行代码满分
  6. Linux 中 SVN 重启关闭
  7. .net mvc中级联的使用
  8. html中列表、表格、合并单元格
  9. 学python能赚钱吗-自学Python三个月能赚钱吗?
  10. [转载] Python导出Excel图表
  11. 【poj1743-Musical Theme】不可重叠最长重复子串-后缀数组
  12. Python春节特训营03:打倒拦路虎,学会键盘打字
  13. Google用AI技术为Allo增加表情符号建议按钮
  14. eclipse 32位换成64位 maven tomcat svn 集成
  15. 斐波纳契回调线_斐波那契回调线
  16. Remind-You Part3. Python-Sqlite记录数据
  17. 整理一些微信小程序面试资料
  18. 最实用的Linux命令总结
  19. java 如何拆分 姓氏与姓名 姓与名字加空格,考虑单姓复姓
  20. java nio写文件nul_使用Java NIO编写高性能的服务器 文件下载

热门文章

  1. JAVA语言基础-面向对象(IO:IO字符流、递归)
  2. 构建Squid代理服务器-传统代理、透明代理、反向代理
  3. 多线程-单生产单消费模型
  4. C# 获取Excel中的合并单元格
  5. 可能会紧急用到的Linux命令
  6. javascript理论篇(详情见地址)
  7. 数组 边界 检查的几种实现方法
  8. [转]简单介绍如何用Reporting Service制作报表
  9. AspNetCoreMassTransit Courier实现分布式事务
  10. C# ConcurrentBag的实现原理