ASP.NET Core Web API 集成測試中使用 Bearer Token

在 ASP.NET Core Web API 集成測試一文中, 我介紹了ASP.NET Core Web API的集成測試. html

在那裏我使用了測試專用的Startup類, 裏面的配置和開發時有一些區別, 例如裏面去掉了用戶身份驗證相關的中間件.app

可是有些被測試的行爲裏面須要用到身份/受權信息.測試

因此本文就介紹一下在API集成測試中發送請求時使用Bearer Token做爲Authorization Header的狀況.debug

 

集成測試中使用Bearer Token

我這個項目裏生產時使用的是Identity Server 4, 而進行集成測試時使用Identity Server 4可能會不太方便, 因此我決定簡化一下, 把這項工做就僅限制在API和測試項目這兩個項目裏.調試

 

首先爲被測試系統添加受權/身份驗證中間件, 修改StartupIntegrationTest:htm

在ConfigureServices()方法裏, 首先添加一個權限策略, 要求全部的MVC Controller只有受權的用戶才能訪問.中間件

隨後使用AddAuthentication()添加身份驗證中間件, 並設置Bearer做爲方案, 經過AddJwtBearer()進行一些參數配置.blog

這裏須要用到一個secret, 由於測試項目會用到, 因此暫時我把它弄成靜態屬性了.token

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

 

該測試會經過:

 

文章略短, 就介紹到這.

相關文章
相關標籤/搜索