package gov.samhsa.consent2share.web.controller; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import java.util.HashSet; import java.util.Set; import gov.samhsa.consent2share.common.AuthenticatedUser; import gov.samhsa.consent2share.domain.account.Users; import gov.samhsa.consent2share.domain.account.UsersRepository; import gov.samhsa.consent2share.web.controller.HomeController; import gov.samhsa.consent2share.common.UserContext; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @RunWith(MockitoJUnitRunner.class) public class HomeControllerTest { @InjectMocks HomeController homeController = new HomeController(); MockMvc mockMvc; @Mock private UserContext userContext; @Mock private UsersRepository usersRepository; @Before public void before() { mockMvc = MockMvcBuilders.standaloneSetup(this.homeController).build(); } @Test public void testHome() throws Exception { mockMvc.perform(get("/")) .andExpect(view().name("redirect:/defaultLoginPage.html")); } @Test public void testIndex() throws Exception { AuthenticatedUser currentUser = mock(AuthenticatedUser.class); when(userContext.getCurrentUser()).thenReturn(currentUser); when(currentUser.getUsername()).thenReturn("username"); Users users= mock(Users.class); when(usersRepository.loadUserByUsername("username")).thenReturn(users); Set<GrantedAuthority> auths=new HashSet<GrantedAuthority>(); auths.add(new SimpleGrantedAuthority("ROLE_USER")); when(users.getAuthorities()).thenReturn(auths); mockMvc.perform(get("/index.html")) .andExpect(view().name("redirect:/patients/home.html")); } @Test public void testIndexSysAdmin() throws Exception { AuthenticatedUser currentUser = mock(AuthenticatedUser.class); when(userContext.getCurrentUser()).thenReturn(currentUser); when(currentUser.getUsername()).thenReturn("username"); Users users= mock(Users.class); when(usersRepository.loadUserByUsername("username")).thenReturn(users); Set<GrantedAuthority> auths=new HashSet<GrantedAuthority>(); auths.add(new SimpleGrantedAuthority("ROLE_SYSADMIN")); when(users.getAuthorities()).thenReturn(auths); mockMvc.perform(get("/index.html")) .andExpect(view().name("redirect:/sysadmin/valueSetList")); } @Test public void testIndexAdmin() throws Exception { AuthenticatedUser currentUser = mock(AuthenticatedUser.class); when(userContext.getCurrentUser()).thenReturn(currentUser); when(currentUser.getUsername()).thenReturn("username"); Users users= mock(Users.class); when(usersRepository.loadUserByUsername("username")).thenReturn(users); Set<GrantedAuthority> auths=new HashSet<GrantedAuthority>(); auths.add(new SimpleGrantedAuthority("ROLE_ADMIN")); when(users.getAuthorities()).thenReturn(auths); mockMvc.perform(get("/index.html")) .andExpect(view().name("redirect:/Administrator/adminHome.html")); } @Test public void testError() throws Exception { mockMvc.perform(get("/error.html")) .andExpect(view().name("WEB-INF/views/error.html")); } }