2014-10-13 4 views
4

Я пишу модульные тесты для своего приложения Spring MVC.Пустые заголовки от Spring MockMvc с springSecurityFilterChain

Это мой mockMvc код инициализации:

@Configuration 
public class SpringMockFactory { 
    @Autowired 
    private WebApplicationContext wac; 

    @Autowired 
    private FilterChainProxy springSecurityFilterChain; 

    @Bean 
    @Scope("prototype") 
    public MockMvc getMockMvc() { 
     return webAppContextSetup(wac) 
       .addFilter(springSecurityFilterChain) 
       .build(); 
    } 
} 

Все работает хорошо, но когда я добавить заголовки ответа springSecurityFilterChain всегда пусты (это важно, потому что я хочу, чтобы проверить заголовок Set-Cookie).

Я использую этот код для выполнения действий:

resultActions = mockMvc.perform(post("/api/login") 
       .contentType(MediaType.APPLICATION_FORM_URLENCODED) 
       .param("username", "sysadmin") 
       .param("password", "password") 
).andDo(print()); 

И это результат andDo (Print()):

MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {} 
    Content type = null 
      Body = {"status":200} 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 

Вопрос заключается в том, почему это заголовки ответа пустым, когда я использовать springSecurityFilterChain с mockMvc? И как их читать?

+0

У меня такая же проблема ... Пробовал тестировать различные комбинации фильтров/и т. Д. без везения. –

+0

Вы попробовали мой ответ? –

ответ

2

Возможно, вам понадобится добавить конфигурацию Spring для вашего объекта MockMvc.

Пример:

mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); 

springSecurity() инициализатор доступен в org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers пакете. Вы можете легко статически импортировать его. Обратите внимание, что вам нужна зависимость org.springframework.security:spring-security-test (я был хорош с 4.0.1.RELEASE).

См. Пример here (дидактический проект).

Мне не нужно вручную устанавливать цепочку фильтров Spring Security.

Смежные вопросы