Announcement Announcement Module
Collapse
No announcement yet.
Spring mvc 3.1 integration tests with session support Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spring mvc 3.1 integration tests with session support

    I'm using the new spring-test in the 3.1 version to run integration tests. It works really well but I can't make the session to work. My code:

    @RunWith(SpringJUnit4ClassRunner.class)
    @WebAppConfiguration("src/main/webapp")
    @ContextConfiguration({"classpath:applicationConte xt-dataSource.xml",
    "classpath:applicationContext.xml",
    "classpath:applicationContext-security-roles.xml",
    "classpath:applicationContext-security-web.xml",
    "classpath:applicationContext-web.xml"})
    public class SpringTestBase {

    @Autowired
    private WebApplicationContext wac;
    @Autowired
    private FilterChainProxy springSecurityFilterChain;
    @Autowired
    private SessionFactory sessionFactory;

    protected MockMvc mock;
    protected MockHttpSession mockSession;

    @Before
    public void setUp() throws Exception {
    initDataSources("dataSource.properties");

    mock = MockMvcBuilders.webAppContextSetup(wac).addFilters (springSecurityFilterChain).build();
    mockSession = new MockHttpSession(wac.getServletContext(), UUID.randomUUID().toString());
    }

    @Test
    public void testLogin() throws Exception {
    // this controller sets a variable in the session
    mock.perform(get("/")
    .session(mockSession))
    .andExpect(model().attributeExists("csrf"));

    // I set another variable here just to be sure
    mockSession.setAttribute(CSRFHandlerInterceptor.CS RF, csrf);

    // this call returns 403 instead of 200 because the session is empty...
    mock.perform(post("/setup/language")
    .session(mockSession)
    .param(CSRFHandlerInterceptor.CSRF, csrf)
    .param("language", "de"))
    .andExpect(status().isOk());
    }
    }

    My session is empty in every request, I don't know why.
Working...
X