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:

640?wx_fmt=png

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

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

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

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

 

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

640?wx_fmt=png

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

 

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

640?wx_fmt=png

 

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

640?wx_fmt=png

查看Claims:

640?wx_fmt=jpeg

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

 

测试身份验证中间件

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

640?wx_fmt=png

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

该测试会通过:

640?wx_fmt=png

 

文章略短, 就介绍到这.

相关文章:

  • ASP.NET Core Web API 集成测试

  • 使用 coverlet 查看.NET Core应用的测试覆盖率

  • 好代码是管出来的——.Net Core集成测试与数据驱动测试

原文地址:http://www.cnblogs.com/cgzl/p/9356596.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 应用发布与部署指南

一、前言本篇主要包含哪些内容?将项目发布到本地目录将项目传输到服务器并配置启动&开机自动启动将Nginx作为访问入口,配置反向代理本篇环境信息开发环境:用途工具&版本操作系统Windows 10开发工具Visual Studio 2017(15.…

MongoDB发布4.0版本,支持ACID事务

MongoDB最近发布了最新的4.0版本。毫无疑问,这一版本的主要特性是支持多文档ACID事务。MongoDB向与关系型数据库产品的融合迈出了一大步,现在支持会话的概念,并可以使用start_transaction()和commit_transaction()方法将多个数据库命令包含在…

分享我编程工作经历及对软件开发前景的看法

本人一直从事互联网行业,熟练C#、javascript,熟悉C\C,JAVA,php,object-c,熟练的开发工具有Visual Studio,数据库是MS SQL SERVER。这两天实在是无聊,回忆一下本人的工作经历,一路走来很辛苦,很坎坷,现在都快40岁了&…

实体类的动态生成(三)

前言在 .NET 中主要有两种动态生成并编译的方式,一种是通过 System.Linq.Expressions 命名空间中的 LambdaExpression 类的 CompileToMethod(...) 方法,但是这种方法只支持动态编译到静态方法,因为这个限制我们只能放弃它而采用 Emitting 生成…

52ABP模板 ASP.Net Core 与 Angular的开源实例项目

阅读文本大概需要 5 分钟。开始之前自从上一篇文章".NET:持续进化的统一开发平台"发布后,已经有三个月的时间没有写过文章了。这段时间,做了两场线下活动,一场在上海,一场在成都。 中途顺带去参加了微软的人工智能的ope…

Quartz.Net分布式任务管理平台(第二版)

前言:在Quartz.Net项目发布第一版Quartz.Net分布式任务管理平台后,有挺多园友去下载使用,我们通过QQ去探讨,其中项目中还是存在一定的不完善。所以有了现在这个版本。这个版本的编写完成其实有段时间了一直没有放上去。现在已经同…

.NET Core开发日志——WCF Client

WCF作为.NET Framework3.0就被引入的用于构建面向服务的框架在众多项目中发挥着重大作用。时至今日,虽然已有更新的技术可以替代它,但对于那些既存项目或产品,使用新框架重构的代价未必能找到人愿意买单。而在.NET Core平台环境中&#xff0c…

通过 Docker Compose 组合 ASP NET Core 和 SQL Server

本文模拟一个比较完整的项目,包括前端(MVC), 后端(WebApi)和数据库(mssql-server-linux)。通过Docker Compose 定义,组合并执行它们。涉及到 Docker Compose 安装,命令,docker-compose.yml文件编写,WebApi 和 MVC 项目…

【模拟】交换(jzoj 1518)

交换 jzoj 1518 题目大意: 有两个字符串(只包含‘R’‘G’‘B’三个字符,且相邻的字符互不相同),现在要交换两个字符串中的一个数,使两个字符串内都各有3个连续且相同的字符,问有多少种换法 …

winserver的consul部署实践与.net core客户端使用(附demo源码)

前言随着微服务兴起,服务的管理显得极其重要。都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构、迭代、交付。随着微服务的数量增多,因量变引起了质量,带来新…

【模拟】【递归】解压字符串(jzoj 1519)

解压字符串 jzoj 1519 题目大意: 有一串压缩过的字符串,将有重复的压缩成了s(~~)的形式(s是一位数,例子:123123123压缩成‘3(123)’),现在要你解压出来,然…

微软发布Azure Service Fabric Mesh公开预览版

Service Fabric现在在云端有了一个新亲戚——Azure Service Fabric Mesh,Azure的一个完全托管服务,开发人员现在可以基于此服务部署和运行容器化应用程序。在去年五月的Build 2018大会期间首次亮相后,现在开始进行公开预览。在Build 2018大会…

【DP】楼梯(jzoj 1520)

楼梯 jzoj 1520 题目大意: 有n个楼梯,跳跃高度初始值是1,当往后一层时,跳跃高度就2,当跳跃只能跳跃到当前能跳到楼梯,且跳跃之后,跳跃高度变回1,问跳到第n层最少花几步 样例输入…

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

有时候不是我们不想做单元测试, 而是这代码写的实在是没法测试....举个例子, 如果一辆汽车在产出后没完成测试, 那么没人敢去驾驶它. 代码也是一样的, 如果项目未能进行该做的测试, 那么客户就不敢去使用它, 即使使用了也会遇到“车祸”. 为什么要测试/测试的好处它可以尽早发现…

【数位DP】好数(jzoj 1521)

好数 jzoj 1521 题目大意&#xff1a; 定义好数为转换为二进制后&#xff0c;有至少三个连续的位相同的数&#xff0c;现在要求一个范围内的好数个数 样例输入 0 16样例输出 5数据范围限制 0 < Low < UP < 2147483647 提示 提示&#xff1a; 对于50%测试&…

【招聘(北京)】东方国信 工业互联网

从工业领域的业务出发&#xff0c;结合现有的物联网、大数据、云计算等技术进行体系化建设。自主研发的智能检测传感器、自主开发的部署在生产单位的专家系统、自主设计通讯交互协议、自主开发的工业物联网通讯框架、自主开发的分布式存储中间件、自主研发的机理模型&#xff0…

Ocelot-基于.NET Core的开源网关实现

写在前面API网关是系统内部服务暴露在外部的一个访问入口&#xff0c;类似于代理服务器&#xff0c;就像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导等工作&#xff0c;我们可以形象的用下图来表示&#xff1a; 外部设备需要访问内部系统服务时必须要通过我们的AP…

Blazor 0.5.0 升级及新特性介绍

前言喜大普奔&#xff0c; Blazor 0.5.0 在我刷了好几遍 Github &#xff08;表示功不可没&#xff09;以后&#xff0c;终于在 2018年7月25日发布了&#xff01;[Blazor 0.5.0 Announce] (https://blogs.msdn.microsoft.com/webdev/2018/07/25/blazor-0-5-0-experimental-rele…

NuStore使用说明

简介.net core 部署有两种方式&#xff0c;一种是独立式部署&#xff08;SCD&#xff09;&#xff0c;另一种是框架依赖式部署&#xff08;FDD&#xff09;。以SCD方式生成发布包时&#xff0c;dotnet会将所有依赖打包到一个文件夹内&#xff0c;并为应用程序生成可执行文件。以…

HttpClientFactory与Steeltoe结合来完成服务发现

前言上一篇说了一下用HttpClientFactory实现了简单的熔断降级。这篇就来简单说说用HttpClientFactory来实现服务发现。由于标题已经好明显的说了Steeltoe因此这里会要求有Spring Clound的相关环境&#xff0c;本文也默认各位对这里有些许了解&#xff0c;所以不会涉及搭建过程的…