package org.molgenis.security.login;
import org.molgenis.security.login.MolgenisLoginControllerTest.Config;
import org.molgenis.util.GsonConfig;
import org.molgenis.util.GsonHttpMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
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.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@WebAppConfiguration
@ContextConfiguration(classes = { Config.class, GsonConfig.class })
public class MolgenisLoginControllerTest extends AbstractTestNGSpringContextTests
{
@Autowired
private MolgenisLoginController molgenisLoginController;
@Autowired
private GsonHttpMessageConverter gsonHttpMessageConverter;
private MockMvc mockMvc;
@BeforeMethod
public void setUp()
{
mockMvc = MockMvcBuilders.standaloneSetup(molgenisLoginController)
.setMessageConverters(gsonHttpMessageConverter).build();
}
@Test
public void getLoginPage() throws Exception
{
this.mockMvc.perform(get("/login")).andExpect(status().isOk()).andExpect(view().name("view-login"));
}
@Test
public void getLoginErrorPage() throws Exception
{
this.mockMvc.perform(get("/login").param("error", "")).andExpect(status().isOk())
.andExpect(view().name("view-login")).andExpect(model().attributeExists("errorMessage"));
}
@Configuration
public static class Config extends WebMvcConfigurerAdapter
{
@Bean
public MolgenisLoginController molgenisLoginController()
{
return new MolgenisLoginController();
}
}
}