2016-04-13 13 views
6

Ho creato un modulo di accesso personalizzato per la mia app di avvio a molla. Nel test di integrazione del modulo, desidero controllare che i cookie ricevuti contengano lo JSESSIONID e XSRF-TOKEN.Test MVC primaverile (test di integrazione della sicurezza), JSESSIONID non è presente

Tuttavia, ho ricevuto solo XSRF-TOKEN.

Ecco la mia prova:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebAppConfiguration 
@IntegrationTest("server.port:0") 
public class UserIT { 

    @Autowired 
    private WebApplicationContext context; 
    @Autowired 
    private FilterChainProxy springSecurityFilterChain; 

    @Value("${local.server.port}") 
    private Integer port; 

    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     mockMvc = 
       MockMvcBuilders.webAppContextSetup(context).addFilters(springSecurityFilterChain) 
         .build(); 
    } 

    @Test 
    public void getUserInfoTest() throws Exception { 
     disableSslVerification(); 

     MvcResult result = 
       mockMvc.perform(formLogin("/login").user("roy").password("spring")).andExpect(authenticated()) 
         .andReturn(); 
     Cookie sessionId = result.getResponse().getCookie("JSESSIONID"); 
     Cookie token = result.getResponse().getCookie("XSRF-TOKEN"); 
} 

sicurezza conf:

@Override 
    public void configure(HttpSecurity http) throws Exception { 
     // @formatter:off 
     http 
      //.httpBasic() 
      //.and() 
       .headers().frameOptions().disable() 
      .and() 
       .antMatcher("/**").authorizeRequests() 
       .antMatchers("/actuator/health").permitAll() 
       .antMatchers("/actuator/**").hasAuthority(Authority.Type.ROLE_ADMIN.getName()) 
       .antMatchers("/login**", "/index.html", "/home.html").permitAll() 
       .anyRequest().authenticated() 
      .and() 
       .formLogin().loginPage("/login.jsp") 
        .usernameParameter("username") 
        .passwordParameter("password") 
        .loginProcessingUrl("/login") 
        .permitAll() 
      .and() 
       .logout().logoutSuccessUrl("/login.jsp").permitAll() 
      .and() 
       .csrf().csrfTokenRepository(csrfTokenRepository()) 
      .and() 
       .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class) 
       .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class); 
     // @formatter:on 
    } 

Per favore, aiutatemi per ottenere il risultato desiderato.

risposta

Problemi correlati