2017-02-21 73 views
0

我有一個JUnit測試情況下,我在哪裏驗證使用春季安全測試案例來執行基本身份驗證

public static MockHttpServletRequestBuilder prepare(
      final MockHttpServletRequestBuilder request, 
      final Participant user) 
    { 
     return request.contentType(MediaType.APPLICATION_JSON) 
       .with(user(user.getAccount().getUsername()) 
         .authorities(user.getAccount().getRole().getAuthorities())); 
    } 

東西應用根據在 https://spring.io/blog/2014/05/23/preview-spring-security-test-web-security提供的文件,它實際上並沒有進行身份驗證使用用戶名和密碼,但它只是基於我們傳遞的權限配置SecurityContext。

在我的情況下,每當用戶登錄到應用程序時,我都會記錄一個事件。我想寫一個測試用例來檢查用戶登錄到應用程序時是否存儲事件。但是,隨着春天的安全性甚至不認證用戶,實際上它不叫

onSuccessfulAuthentication(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response, final Authentication authResult)

BasicAuthenticationFilter

我在哪裏記錄事件。

有什麼方法可以根據我的要求模擬測試用例嗎?

回答

0

我能找到解決方案。下面是代碼

@Autowired 
private WebApplicationContext context; 

@Test 
public void testcase1(){ 
    MockMvcBuilders.webAppContextSetup(this.context) 
         .apply(SecurityMockMvcConfigurers.springSecurity()) 
         .build(); 
    final MvcResult mvcResult = this.mvc 
        .perform(get("/").with(httpBasic("test1","password"))) 
        .andDo(print()) 
        .andExpect(status().isOk()) 
        .andReturn(); 
} 

,我已經加了CustomBasicAuthenticationFilter(這裏我重寫BasicAuthenticationFilter一樣的onSuccessfulAuthentication方法),以我的春季安全配置文件。

參考Spring Security Token based Authentication的配置類和CustomBasicAuthenticationFilter

+0

你能證明你使用的是進口的? – Eduardo