package net.petrikainulainen.spring.datasolr.user.controller; import net.petrikainulainen.spring.datasolr.IntegrationTestUtil; import net.petrikainulainen.spring.datasolr.config.ExampleApplicationContext; import net.petrikainulainen.spring.datasolr.config.TestSolrContext; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.security.web.FilterChainProxy; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import javax.annotation.Resource; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.server.samples.context.SecurityRequestPostProcessors.userDetailsService; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * @author Petri Kainulainen */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ExampleApplicationContext.class, TestSolrContext.class}) //@ContextConfiguration(locations = {"classpath:exampleApplicationContext.xml", "classpath:exampleApplicationContext-test.xml"}) @WebAppConfiguration public class ITUserControllerTest { @Resource private FilterChainProxy springSecurityFilterChain; @Resource private WebApplicationContext webApplicationContext; private MockMvc mockMvc; @Before public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .addFilter(springSecurityFilterChain) .build(); } @Test public void getLoggedInUser_AsAnonymous_ShouldReturnStatusOkAndEmptyString() throws Exception { mockMvc.perform(get("/api/user")) .andExpect(status().isOk()) .andExpect(content().string("")); } @Test public void getLoggedInUser_AsUser_ShouldReturnStatusOkAndUser() throws Exception { mockMvc.perform(get("/api/user") .with(userDetailsService(IntegrationTestUtil.CORRECT_USERNAME)) ) .andExpect(status().isOk()) .andExpect(content().contentType(IntegrationTestUtil.APPLICATION_JSON_UTF8)) .andExpect(content().string("{\"username\":\"user\",\"role\":\"ROLE_USER\"}")); } }