2017-02-21 75 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