2015-05-13 43 views
1

我有一個Spring Data JPA存儲庫,並且單元測試工作正常,只要不添加Spring Security依賴項(spring-boot-starter-security)以及相應的方法存儲庫上的授權註釋。一旦添加,我會在運行單元測試時遇到AuthenticationCredentialsNotFound異常。單元測試使用Spring Security的JPA存儲庫

如何在單元測試中對庫方法進行「驗證」調用?

+0

你使用什麼驗證? OAuth2用戶? – IllSc

+0

現在我只使用基本身份驗證,並使用'@ PreAuthorize'註釋標註了存儲庫方法。 – Ole

回答

2

我發現在這裏做什麼一個例子: https://github.com/spring-projects/spring-data-examples/blob/master/jpa/security/src/test/java/example/springdata/jpa/security/SecurityIntegrationTests.java

我的測試中調用庫方法如前運行正常,現在只要我首先驗證有這樣要求的角色的用戶:

SecurityContextHolder.getContext() 
    .setAuthentication(new UsernamePasswordAuthenticationToken(
     "admin", 
     "password", 
     Collections.singleton(new SimpleGrantedAuthority("ROLE_ADMIN")))); 

// Make calls to repository methods that require the admin role 
2

情況下也需要進行身份驗證設置多個角色(羅布絞車禮貌 - Spring Security的鉛):

SecurityContextHolder.getContext() 
    .setAuthentication(new UsernamePasswordAuthenticationToken(
     ADMIN, 
     PASSWORD, 
     AuthorityUtils.createAuthorityList("ROLE_USER", "ROLE_ADMIN") 
));