2017-01-25 95 views
1

我使用Microsoft.AspNetCore.Authorization在我的ASP.NET Core項目中進行身份驗證和授權。我實現feew方法看起來像這樣:如何禁用所有授權屬性?

[HttpGet] 
[Authorize(Roles = UserRoles.Admin)] 
public IActionResult GetIds(string name) 
{ 
... 
} 

現在我想測試的所有方法,當然在我的單元測試的我需要登錄測試。我不想一直這樣做,所以我想知道,如果在測試期間有任何可能禁用或忽略所有那些授權屬性onyl的話。例如,我將我的appsettings.json中的字段「測試」設置爲true,並且所有屬性都將被忽略。

此選項僅在測試期間不會使用。成品後將通過認證。當你寫單元測試Controller類Certyfication系統只能使用URL和無法登錄。

預先感謝您

回答

1

,您需要直接測試它的公共方法=>直接調用YourController.GetIds()方法在你的案例:

var expectedResult = ... // setup expected result 
var controller = new YourController(); 
var result = controller.GetIds(testName); 

Assert.AreEqual(result, expectedResult); 

當你直接調用方法,屬性,如[Authorize]不參與方法執行。

如果您編寫功能測試,那麼您需要考慮創建測試用戶,該測試用戶將具有調用此端點的適當權限。

+0

謝謝,這是一個很有價值的提示。但它只會暫時對我有用。該產品必須通過認證。 Certyfing系統將僅使用URL並且無法登錄(對其進行了說明,沒有我的想法)。所以我最好的選擇是在配置文件中設置屬性並關閉授權。我會更新問題。 – MKasprzyk