1. 程式人生 > >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.

該測試會通過:

文章略短, 就介紹到這.

相關推薦

ASP.NET Core Web API 整合測試使用 Bearer Token

在 ASP.NET Core Web API 整合測試一文中, 我介紹了ASP.NET Core Web API的整合測試.  在那裡我使用了測試專用的Startup類, 裡面的配置和開發時有一些區別, 例如裡面去掉了使用者身份驗證相關的中介軟體. 但是有些被測試的行為裡面需要用到身份/授權資訊. 所以

ASP.NET Core Web API 整合測試

本文需要您瞭解ASP.NET Core Web API 和 xUnit的相關知識. 整合測試 vs 單元測試 測試金字塔, 但它只是一個指導性的概念. 如果所單元測試是對一個元件進行隔離測試的話, 那麼整合測試則是測試多個元件共同協作產生出期待的結果. 單元測試通常很快. 而整合測試則

如何在ASP.NET Core Web API測試使用Postman

e30 googl 選項卡 for 並運行 讓我 結合 pos lis 使用Postman進行手動測試 如果您是開發人員,測試人員或管理人員,則在構建和使用應用程序時,有時了解各種API方法可能是一個挑戰。 使用帶有.NET Core的Postman為您的Web API生

使用 Swagger 自動生成 ASP.NET Core Web API 的文檔、在線幫助測試文檔(ASP.NET Core Web API 自動生成文檔)

地址 .cn 名稱 cor 生成文檔 def pos 構建 回車 對於開發人員來說,構建一個消費應用程序時去了解各種各樣的 API 是一個巨大的挑戰。在你的 Web API 項目中使用 Swagger 的 .NET Core 封裝 Swashbuckle 可以幫助你創建良好

Asp.Net Core Web Api圖片上傳(一)整合MongoDB儲存例項教程

Asp.Net Core Web Api圖片上傳及MongoDB儲存例項教程(一) 圖片或者檔案上傳相信大家在開發中應該都會用到吧,有的時候還要對圖片生成縮圖。那麼如何在Asp.Net Core Web Api實現圖片上傳儲存以及生成縮圖呢?今天我就使用MongoDB作為圖片儲存,然後使用SixLabors

ASP.NET Core Web API使用Swagger

本節導航 Swagger介紹 在ASP.NET CORE 中的使用swagger   在軟體開發中,管理和測試API是一件重要而富有挑戰性的工作。在我之前的文章《研發團隊,請管好你的API文件》也專門闡述了通過文件管理工具,來保證API文件和程式碼的一致性,這樣更加有助於團隊的協作。   以往我們總是

ASP.Net Core Web Api模板移除MVC Razor依賴項

前言 :本篇文章,我將會介紹如何在不包括MVC / Razor功能和包的情況下,新增最少的依賴項到ASP.NET Core Web API專案中。     一、MVC   VS WebApi (1)在ASP.NET的早期版本中,MVC和Web API技術棧是完全

ASP.NET Core Web API 最小化項目

asp新建項目打開VS2017 新建一個ASP.NET Core 應用程序 (.NET Core)項目,命名為miniwebapi。確定後選擇Web API 模板,並將“身份驗證”設置為“不進行身份驗證”。然後確定就創建好了項目,默認項目的csproj 文件內容如下:<Project Sdk="Micr

品嘗阿裏雲容器服務:初步嘗試ASP.NET Core Web API站點的Docker自動化部署

asp.net title build 阿裏雲服務器 arm web 容器服務 倉庫 acs 部署場景是這樣的,我們基於 ASP.NET Core 2.0 Preview 1 開發了一個用於管理緩存的 Web API ,想通過阿裏雲容器服務基於 Docker 部署為內網服務

ASP.NET CORE WEB API DEMO 01

dsi del turn adr arch pda host result arc using System; using System.Collections.Concurrent; using System.Collections.Generic; namespac

ASP.NET Core Web API實現圖片下載

前端訪問下載圖片API下載圖片。 一、ASP.NET Core Web API程式碼 方案一: [Route("api/[controller]")] [ApiController

ASP.NET Core 實戰:使用 ASP.NET Core Web API 和 Vue.js,搭建前後端分離框架

前言         這幾年前端的發展速度就像坐上了火箭,各種的框架一個接一個的出現,需要學習的東西越來越多,分工也越來越細,作為一個 .NET Web 程式猿,多瞭解瞭解行業的發展,讓自己擴展出新的技能樹,對自己的職業發展還是

加速ASP.NET Core WEB API應用程式——第2部分

目錄 應用程式生產力 非同步設計模式 資料規範化與SQL查詢效率 NCHAR與NVARCHAR 使用MSSQL伺服器的全文引擎 儲存過程 優化儲存過程 預編譯和重用儲存過程執行計劃 使用Entity Framework Core進行全文搜尋 Entity

加速ASP.NET Core WEB API應用程式——第1部分

目錄 介紹 建立測試RESTful WEB API服務 應用程式架構 資料庫 建立ASP.NET核心WEB API應用程式 使用實體框架核心進行資料庫訪問 非同步設計模式 儲存庫 儲存庫實現 服務 服務介面 服務的實現 產品和價格表之間的資料完

【譯】使用Jwt身份認證保護 Asp Net Core Web Api

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ASP.NET Core Web API 索引 (更新ASPNET Core和EF Core視訊)

GraphQL [視訊] 使用ASP.NET Core 開發 GraphQL 伺服器  GraphQL其它 RESTful API Identity Server 4 Identity Server 4 - Hybrid Flow ASP.NET Core

ASP.NET Core Web API 專案裡無法訪問(wwwroot)下的檔案

解決辦法:在“ Startup.cs ” 檔案裡的 Configur方法裡新增一句程式碼“ app.UseStaticFiles() ”,這樣就可以訪問wwwroot下的檔案了。 - 方法程式碼是

Gitlab CI 自動部署 asp.net core web api 到Docker容器

然後可以到官網下載net core 1.1 on MacOS,完成之後可以在命令列輸入 dotnet --version 來檢測當前的版本。 初始化專案並執行 通過3個命領我們可以完成初始化專案並執行的全過程: dotnet new|restore|run。 dotnet 框架預設提供一些初始化的專案模板,

支援多個版本的ASP.NET Core Web API

基本配置及說明 版本控制有助於及時推出功能,而不會破壞現有系統。 它還可以幫助為選定的客戶提供額外的功能。 API版本可以通過不同的方式完成,例如在URL中新增版本或通過自定義標頭和通過Accept-Header作為查詢字串引數。 在這篇文章中,我們來看看如何支援多版本的A

ASP.NET Core Web API下事件驅動型架構的實現(一):一個簡單的實現

很長一段時間以來,我都在思考如何在ASP.NET Core的框架下,實現一套完整的事件驅動型架構