2012-05-25 25 views
1

我在我的網站的管理部分中有一個控制器,並且使用設置爲admin的角色授權過濾器來裝飾它。如何測試控制器以確保將授權過濾器應用於正確的角色?

[Authorize(Roles = "Admin")] 
public class SubscriberController : Controller 

這很好,但我想創建一個單元測試,以確保過濾器不會被刪除。我有這麼多,以驗證授權過濾器是存在的。

 typeof(SubscriberController).Should() 
      .BeDecoratedWith<AuthorizeAttribute>(
       "Subscriber controller users must be admins"); 

如何驗證角色參數?我正在使用Fluent Assertion 1.7.1.1。

現在可以用流利的斷言V2:

typeof(SubscriberController).Should() 
     .BeDecoratedWith<AuthorizeAttribute>(a => a.Roles.Contains("Admin"), 
      "Subscriber controller users must be admins"); 

回答

2

貌似現在是不可能的 - Testing Arguments of Attributes

最多可這個線程,詢問進展情況。

+0

感謝您的回答......它還沒有實施,只是驗證訪問者被授權不夠好,不幸的是,不希望客戶更改他們自己的訂閱。 –

+2

我們應該能夠爲它提供一個語法。我將在積壓2.0.0上創建一個項目。 –

+0

謝謝丹尼斯,那太棒了。它將在ASP.NET MVC自動化測試中填補相當大的空洞,只能通過全棧集成測試來克服。 –

相關問題