3
比方說,我有類似下面的方法:使用Spring Security ACL註釋進行註釋的單元測試方法的最佳方式是什麼?
@PreAuthorize("hasPermission(#obj, 'READ')")
public void requiresReadPermission(Object obj) {}
有沒有一種簡單的方法來模擬/格蘭特/拒絕認證的「讀取」權限?
比方說,我有類似下面的方法:使用Spring Security ACL註釋進行註釋的單元測試方法的最佳方式是什麼?
@PreAuthorize("hasPermission(#obj, 'READ')")
public void requiresReadPermission(Object obj) {}
有沒有一種簡單的方法來模擬/格蘭特/拒絕認證的「讀取」權限?
由於它是對方法的單元測試而不是給定攔截器的單元測試,因此不需要打擾身份驗證和ACL基礎結構。如果你想測試AccessDeniedException
在用戶沒有被授權訪問該對象時被拋出,單元測試攔截器本身。在你的情況下,只是測試你的方法確實/返回期望做/返回。
如果驗證未授權訪問給定對象,春季安全ACL方法攔截拋出AccessDeniedException
如上指出,它是無論是在AccessDeniedHandler
或在直接或間接調用安全方法的方法的catch塊處理。如果這是您的情況,則組件的責任取決於您的安全方法以正確處理異常。
對這樣一個組件的單元測試可以創建一個組件的模擬組件,注入安全的方法並模擬投擲AccessDeniedException
。然後檢查是否正確處理了異常。
我正在使用JUnit 4,如果在單元測試期間它不會返回'AccessDeniedException',但它在現實世界中,它在配置單元測試時缺少什麼? – huahsin68