package org.molgenis.ui.admin.permission; import org.molgenis.auth.GroupAuthorityFactory; import org.molgenis.auth.Group; import org.molgenis.auth.User; import org.molgenis.auth.UserAuthorityFactory; import org.molgenis.data.DataService; import org.molgenis.framework.ui.MolgenisPluginRegistry; import org.molgenis.framework.ui.MolgenisPluginRegistryImpl; import org.molgenis.security.permission.PermissionManagerService; import org.molgenis.ui.MolgenisPluginController; import org.molgenis.ui.admin.permission.PermissionManagerControllerTest.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 java.util.Arrays; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; //TODO add additional test @WebAppConfiguration @ContextConfiguration(classes = { Config.class, GsonConfig.class }) public class PermissionManagerControllerTest extends AbstractTestNGSpringContextTests { @Configuration public static class Config extends WebMvcConfigurerAdapter { @Bean public UserAuthorityFactory userAuthorityFactory() { return mock(UserAuthorityFactory.class); } @Bean public GroupAuthorityFactory groupAuthorityFactory() { return mock(GroupAuthorityFactory.class); } @Bean public PermissionManagerController permissionManagerController() { return new PermissionManagerController(permissionManagerService(), userAuthorityFactory(), groupAuthorityFactory()); } @Bean public MolgenisPluginRegistry molgenisPluginRegistry() { return new MolgenisPluginRegistryImpl(); } @Bean public PermissionManagerService permissionManagerService() { return mock(PermissionManagerService.class); } @Bean public DataService dataService() { return mock(DataService.class); } } @Autowired private PermissionManagerController permissionManagerController; @Autowired private PermissionManagerService permissionManagerService; @Autowired private GsonHttpMessageConverter gsonHttpMessageConverter; private MockMvc mockMvc; private User user1, user2; private Group group1, group2; @BeforeMethod public void setUp() { mockMvc = MockMvcBuilders.standaloneSetup(permissionManagerController) .setMessageConverters(gsonHttpMessageConverter).build(); reset(permissionManagerService); user1 = when(mock(User.class).getId()).thenReturn("1").getMock(); when(user1.isSuperuser()).thenReturn(true); user2 = when(mock(User.class).getId()).thenReturn("2").getMock(); when(user2.isSuperuser()).thenReturn(false); when(permissionManagerService.getUsers()).thenReturn(Arrays.<User>asList(user1, user2)); when(permissionManagerService.getGroups()).thenReturn(Arrays.<Group>asList(group1, group2)); } @Test(expectedExceptions = NullPointerException.class) public void PermissionManagerController() { new PermissionManagerController(null, null, null); } @Test public void init() throws Exception { this.mockMvc.perform(get(MolgenisPluginController.PLUGIN_URI_PREFIX + "/permissionmanager")) .andExpect(status().isOk()).andExpect(view().name("view-permissionmanager")) .andExpect(model().attribute("users", Arrays.asList(user2))) .andExpect(model().attribute("groups", Arrays.asList(group1, group2))); } }