/* (c) 2014 - 2015 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.net.URL; import org.apache.commons.io.FileUtils; import org.geoserver.data.test.SystemTestData; import org.geoserver.security.impl.GeoServerRole; import org.geoserver.security.impl.GeoServerUser; import org.geoserver.security.impl.GeoServerUserGroup; import org.geoserver.security.password.GeoServerDigestPasswordEncoder; import org.geoserver.security.password.GeoServerEmptyPasswordEncoder; import org.geoserver.security.password.GeoServerMultiplexingPasswordEncoder; import org.geoserver.security.password.GeoServerPBEPasswordEncoder; import org.geoserver.security.password.GeoServerPlainTextPasswordEncoder; import org.geoserver.test.GeoServerSystemTestSupport; import org.geotools.data.DataUtilities; /** * Base test class * * @author christian * */ public abstract class AbstractSecurityServiceTest extends GeoServerSystemTestSupport { @Override protected void setUpTestData(SystemTestData testData) throws Exception { testData.setUpSecurity(); } public GeoServerUserGroupService createUserGroupService(String name) throws Exception { return null; } public GeoServerRoleService createRoleService(String name) throws Exception { return null; } protected boolean isNewRoleService(String name) throws IOException { return !(getSecurityManager().listRoleServices().contains(name)); } protected boolean isNewUGService(String name) throws IOException { return !(getSecurityManager().listUserGroupServices().contains(name)); } public GeoServerUserGroupStore createStore(GeoServerUserGroupService service) throws IOException { return service.createStore(); } public GeoServerRoleStore createStore(GeoServerRoleService service) throws IOException { return service.createStore(); } protected void checkEmpty(GeoServerRoleService roleService) throws IOException { assertEquals(0, roleService.getRoles().size()); assertEquals(0,roleService.getRoleCount()); } public void insertValues(GeoServerRoleStore roleStore) throws IOException { GeoServerRole role_admin = roleStore.createRoleObject(GeoServerRole.ADMIN_ROLE.getAuthority()); GeoServerRole role_auth = roleStore.createRoleObject("ROLE_AUTHENTICATED" ); GeoServerRole role_wfs = roleStore.createRoleObject("ROLE_WFS"); GeoServerRole role_wms = roleStore.createRoleObject("ROLE_WMS"); role_auth.getProperties().put("employee",""); role_auth.getProperties().put("bbox","lookupAtRuntime"); roleStore.addRole(role_admin); roleStore.addRole(role_auth); roleStore.addRole(role_wfs); roleStore.addRole(role_wms); roleStore.setParentRole(role_wms, role_auth); roleStore.setParentRole(role_wfs, role_auth); roleStore.associateRoleToUser(role_admin, "admin"); roleStore.associateRoleToUser(role_wms, "user1"); roleStore.associateRoleToUser(role_wfs, "user1"); roleStore.associateRoleToGroup(role_wms, "g_wms"); roleStore.associateRoleToGroup(role_wfs, "g_wfs"); roleStore.associateRoleToGroup(role_wms, "g_all"); roleStore.associateRoleToGroup(role_wfs, "g_all"); } public void removeValues(GeoServerRoleStore roleStore) throws IOException { GeoServerRole role_auth = roleStore.createRoleObject("ROLE_AUTHENTICATED" ); GeoServerRole role_wfs = roleStore.getRoleByName("ROLE_WFS"); roleStore.removeRole(role_wfs); roleStore.removeRole(role_auth); } public void modifyValues(GeoServerRoleStore roleStore) throws IOException { GeoServerRole role_auth = roleStore.getRoleByName("ROLE_AUTHENTICATED"); GeoServerRole role_wfs = roleStore.getRoleByName("ROLE_WFS"); GeoServerRole role_wms = roleStore.getRoleByName("ROLE_WMS"); role_auth.getProperties().remove("bbox"); role_auth.getProperties().setProperty("employee","4711"); roleStore.updateRole(role_auth); role_wms.getProperties().setProperty("envelope", "10 10 20 20"); roleStore.updateRole(role_wms); roleStore.disAssociateRoleFromGroup(role_wfs, "g_all"); roleStore.disAssociateRoleFromUser(role_wfs, "user1"); roleStore.setParentRole(role_wms, null); roleStore.setParentRole(role_wfs, role_wms); } protected void checkValuesRemoved(GeoServerRoleService roleService) throws IOException { GeoServerRole role_admin = roleService.getRoleByName( GeoServerRole.ADMIN_ROLE.getAuthority()); GeoServerRole role_wms = roleService.getRoleByName("ROLE_WMS"); assertEquals(2, roleService.getRoles().size()); assertEquals(2, roleService.getRoleCount()); assertTrue(roleService.getRoles().contains(role_admin)); assertTrue(roleService.getRoles().contains(role_wms)); assertNull(roleService.getParentRole(role_wms)); assertEquals(1, roleService.getRolesForUser("user1").size()); assertTrue(roleService.getRolesForUser("user1").contains(role_wms)); assertEquals(0, roleService.getRolesForGroup("g_wfs").size()); assertEquals(1, roleService.getRolesForGroup("g_all").size()); assertTrue(roleService.getRolesForGroup("g_all").contains(role_wms)); } protected void checkValuesModified(GeoServerRoleService roleService) throws IOException { GeoServerRole role_auth = roleService.getRoleByName("ROLE_AUTHENTICATED"); GeoServerRole role_wms = roleService.getRoleByName("ROLE_WMS"); GeoServerRole role_wfs = roleService.getRoleByName("ROLE_WFS"); assertEquals(1,role_auth.getProperties().size()); assertEquals("4711", role_auth.getProperties().get("employee")); assertEquals(1,role_wms.getProperties().size()); assertEquals("10 10 20 20", role_wms.getProperties().get("envelope")); assertEquals(0,role_wfs.getProperties().size()); for (GeoServerRole role : roleService.getRoles()) { if ("ROLE_AUTHENTICATED".equals(role.getAuthority())) { assertEquals(1,role.getProperties().size()); assertEquals("4711", role.getProperties().get("employee")); } else if ("ROLE_WMS".equals(role.getAuthority())) { assertEquals(1,role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope")); } else { assertEquals(0,role.getProperties().size()); } } assertEquals(1,roleService.getGroupNamesForRole(role_wfs).size()); assertTrue(roleService.getGroupNamesForRole(role_wfs).contains("g_wfs")); assertEquals(0,roleService.getUserNamesForRole(role_wfs).size()); assertEquals(1,roleService.getRolesForGroup("g_all").size()); assertTrue(roleService.getRolesForGroup("g_all").contains(role_wms)); GeoServerRole role = roleService.getRolesForGroup("g_all").iterator().next(); assertEquals(1,role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope")); assertEquals(1,roleService.getRolesForUser("user1").size()); assertTrue(roleService.getRolesForUser("user1").contains(role_wms)); role = roleService.getRolesForUser("user1").iterator().next(); assertEquals(1,role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope")); assertNull(roleService.getParentRole(role_wms)); assertEquals(role_wms,roleService.getParentRole(role_wfs)); } protected void checkValuesInserted(GeoServerRoleService roleService) throws IOException { GeoServerRole role_auth = roleService.getRoleByName("ROLE_AUTHENTICATED"); GeoServerRole role_wfs = roleService.getRoleByName("ROLE_WFS"); GeoServerRole role_wms = roleService.getRoleByName("ROLE_WMS"); GeoServerRole role_admin = roleService.getRoleByName( GeoServerRole.ADMIN_ROLE.getAuthority()); assertEquals(4, roleService.getRoles().size()); assertEquals(4, roleService.getRoleCount()); assertTrue(roleService.getRoles().contains(role_admin)); assertTrue(roleService.getRoles().contains(role_auth)); assertTrue(roleService.getRoles().contains(role_wfs)); assertTrue(roleService.getRoles().contains(role_wms)); assertNull (roleService.getRoleByName("xxx")); for (GeoServerRole role : roleService.getRoles() ) { if (role_auth.getAuthority().equals(role.getAuthority())) { assertEquals(2,role.getProperties().size()); assertEquals(role.getProperties().getProperty("employee"),""); assertEquals(role.getProperties().getProperty("bbox"),"lookupAtRuntime"); } else { assertEquals(0,role.getProperties().size()); } } assertEquals(0,role_admin.getProperties().size()); assertEquals(0,role_wfs.getProperties().size()); assertEquals(0,role_wms.getProperties().size()); assertEquals(2,role_auth.getProperties().size()); assertEquals(role_auth.getProperties().getProperty("employee"),""); assertEquals(role_auth.getProperties().getProperty("bbox"),"lookupAtRuntime"); assertNull(roleService.getParentRole(role_admin)); assertNull(roleService.getParentRole(role_auth)); assertEquals(role_auth,roleService.getParentRole(role_wms)); assertEquals(role_auth,roleService.getParentRole(role_wfs)); assertEquals(2,roleService.getParentRole(role_wfs).getProperties().size()); assertEquals(roleService.getParentRole(role_wfs).getProperties().getProperty("employee"),""); assertEquals(roleService.getParentRole(role_wfs).getProperties().getProperty("bbox"),"lookupAtRuntime"); assertEquals(0, roleService.getRolesForUser("xxx").size()); assertEquals(1, roleService.getRolesForUser("admin").size()); assertTrue(roleService.getRolesForUser("admin").contains(GeoServerRole.ADMIN_ROLE)); assertEquals(2, roleService.getRolesForUser("user1").size()); assertTrue(roleService.getRolesForUser("user1").contains(role_wfs)); assertTrue(roleService.getRolesForUser("user1").contains(role_wms)); assertEquals(0, roleService.getRolesForGroup("xxx").size()); assertEquals(1, roleService.getRolesForGroup("g_wfs").size()); assertTrue(roleService.getRolesForGroup("g_wfs").contains(role_wfs)); assertEquals(1, roleService.getRolesForGroup("g_wms").size()); assertTrue(roleService.getRolesForGroup("g_wms").contains(role_wms)); assertEquals(2, roleService.getRolesForGroup("g_all").size()); assertTrue(roleService.getRolesForGroup("g_all").contains(role_wfs)); assertTrue(roleService.getRolesForGroup("g_all").contains(role_wms)); assertEquals(1,roleService.getUserNamesForRole(GeoServerRole.ADMIN_ROLE).size()); assertTrue(roleService.getUserNamesForRole(GeoServerRole.ADMIN_ROLE).contains("admin")); assertEquals(1,roleService.getUserNamesForRole(role_wfs).size()); assertTrue(roleService.getUserNamesForRole(role_wfs).contains("user1")); assertEquals(1,roleService.getUserNamesForRole(role_wms).size()); assertTrue(roleService.getUserNamesForRole(role_wms).contains("user1")); assertEquals(0,roleService.getUserNamesForRole( roleService.createRoleObject("xxx")).size()); assertEquals(2,roleService.getGroupNamesForRole(role_wfs).size()); assertTrue(roleService.getGroupNamesForRole(role_wfs).contains("g_wfs")); assertTrue(roleService.getGroupNamesForRole(role_wfs).contains("g_all")); assertEquals(2,roleService.getGroupNamesForRole(role_wms).size()); assertTrue(roleService.getGroupNamesForRole(role_wms).contains("g_wms")); assertTrue(roleService.getGroupNamesForRole(role_wms).contains("g_all")); assertEquals(0,roleService.getGroupNamesForRole( roleService.createRoleObject("xxx")).size()); assertEquals (4,roleService.getParentMappings().size()); assertNull (roleService.getParentMappings().get( GeoServerRole.ADMIN_ROLE.getAuthority())); assertNull (roleService.getParentMappings().get(role_auth.getAuthority())); assertEquals(roleService.getParentMappings().get(role_wfs.getAuthority()), role_auth.getAuthority()); assertEquals(roleService.getParentMappings().get(role_wms.getAuthority()), role_auth.getAuthority()); } protected void checkEmpty(GeoServerUserGroupService userService) throws IOException { assertEquals(0, userService.getUsers().size()); assertEquals(0, userService.getUserGroups().size()); assertEquals(0, userService.getUserCount()); assertEquals(0, userService.getGroupCount()); } protected void checkValuesInserted(GeoServerUserGroupService userGroupService) throws IOException { assertEquals(5, userGroupService.getUsers().size()); assertEquals(5, userGroupService.getUserCount()); GeoServerUser admin = userGroupService.getUserByUsername(GeoServerUser.ADMIN_USERNAME); GeoServerUser user1 = userGroupService.getUserByUsername("user1"); GeoServerUser user2 = userGroupService.getUserByUsername("user2"); GeoServerUser disableduser = userGroupService.getUserByUsername("disableduser"); GeoServerUser groupAdminUser = userGroupService.getUserByUsername("groupAdminUser"); assertNull(userGroupService.getUserByUsername("xxx")); assertTrue(userGroupService.getUsers().contains(admin)); assertTrue(userGroupService.getUsers().contains(user1)); assertTrue(userGroupService.getUsers().contains(user2)); assertTrue(userGroupService.getUsers().contains(disableduser)); assertTrue(userGroupService.getUsers().contains(groupAdminUser)); // check if properties are loaded too for (GeoServerUser user : userGroupService.getUsers() ) { if (user2.getUsername().equals(user.getUsername())) { assertEquals(2,user.getProperties().size()); assertEquals(user.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user.getProperties().getProperty("tel"),"12-34-38"); } else { assertEquals(0,user.getProperties().size()); } } assertTrue(admin.isEnabled()); assertTrue(user1.isEnabled()); assertTrue(user2.isEnabled()); assertFalse(disableduser.isEnabled()); assertTrue(groupAdminUser.isEnabled()); /*assertFalse(user1.isGroupAdmin()); assertFalse(user2.isGroupAdmin()); assertTrue(groupAdminUser.isGroupAdmin());*/ GeoServerMultiplexingPasswordEncoder encoder = getEncoder(userGroupService); assertTrue(encoder.isPasswordValid(admin.getPassword(), "geoserver", null)); assertTrue(encoder.isPasswordValid(user1.getPassword(), "11111", null)); assertTrue(encoder.isPasswordValid(user2.getPassword(), "22222", null)); assertTrue(encoder.isPasswordValid(disableduser.getPassword(), "", null)); assertEquals(0,admin.getProperties().size()); assertEquals(0,user1.getProperties().size()); assertEquals(0,disableduser.getProperties().size()); assertEquals(2,user2.getProperties().size()); assertEquals(user2.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user2.getProperties().getProperty("tel"),"12-34-38"); assertEquals(4, userGroupService.getUserGroups().size()); assertEquals(4, userGroupService.getGroupCount()); GeoServerUserGroup admins = userGroupService.getGroupByGroupname("admins"); GeoServerUserGroup group1 = userGroupService.getGroupByGroupname("group1"); GeoServerUserGroup group2 = userGroupService.getGroupByGroupname("group2"); GeoServerUserGroup disabledgroup = userGroupService.getGroupByGroupname("disabledgroup"); assertNull(userGroupService.getGroupByGroupname("yyy")); assertTrue(userGroupService.getUserGroups().contains(admins)); assertTrue(userGroupService.getUserGroups().contains(group1)); assertTrue(userGroupService.getUserGroups().contains(group2)); assertTrue(userGroupService.getUserGroups().contains(disabledgroup)); assertTrue(admins.isEnabled()); assertTrue(group1.isEnabled()); assertTrue(group2.isEnabled()); assertFalse(disabledgroup.isEnabled()); assertEquals(2,userGroupService.getUsersForGroup(group1).size()); assertTrue(userGroupService.getUsersForGroup(group1).contains(user1)); assertTrue(userGroupService.getUsersForGroup(group1).contains(user2)); // check if properties are loaded too for (GeoServerUser user : userGroupService.getUsersForGroup(group1) ) { if (user2.getUsername().equals(user.getUsername())) { assertEquals(2,user.getProperties().size()); assertEquals(user.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user.getProperties().getProperty("tel"),"12-34-38"); } else { assertEquals(0,user.getProperties().size()); } } assertEquals(1,userGroupService.getUsersForGroup(admins).size()); assertTrue(userGroupService.getUsersForGroup(admins).contains(admin)); assertEquals(1,userGroupService.getUsersForGroup(disabledgroup).size()); assertTrue(userGroupService.getUsersForGroup(disabledgroup).contains(disableduser)); assertEquals(1,userGroupService.getGroupsForUser(admin).size()); assertTrue(userGroupService.getGroupsForUser(admin).contains(admins)); assertEquals(1,userGroupService.getGroupsForUser(user1).size()); assertTrue(userGroupService.getGroupsForUser(user1).contains(group1)); assertEquals(1,userGroupService.getGroupsForUser(user2).size()); assertTrue(userGroupService.getGroupsForUser(user2).contains(group1)); assertEquals(1,userGroupService.getGroupsForUser(disableduser).size()); assertTrue(userGroupService.getGroupsForUser(disableduser).contains(disabledgroup)); assertEquals(1,userGroupService.getGroupsForUser(groupAdminUser).size()); assertTrue(userGroupService.getGroupsForUser(groupAdminUser).contains(group2)); assertEquals(0,userGroupService.getUserCountHavingProperty("unknown")); assertEquals(userGroupService.getUserCount(), userGroupService.getUserCountNotHavingProperty("unknown")); assertEquals(0,userGroupService.getUserCountHavingPropertyValue("tel","123")); assertEquals(1,userGroupService.getUserCountHavingProperty("tel")); assertEquals(userGroupService.getUserCount()-1, userGroupService.getUserCountNotHavingProperty("tel")); assertEquals(1,userGroupService.getUserCountHavingPropertyValue("tel","12-34-38")); assertEquals(0,userGroupService.getUsersHavingProperty("unknown").size()); assertEquals(userGroupService.getUserCount(), userGroupService.getUsersNotHavingProperty("unknown").size()); // check if properties are loaded too for (GeoServerUser user : userGroupService.getUsersNotHavingProperty("unknown") ) { if (user2.getUsername().equals(user.getUsername())) { assertEquals(2,user.getProperties().size()); assertEquals(user.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user.getProperties().getProperty("tel"),"12-34-38"); } else { assertEquals(0,user.getProperties().size()); } } assertEquals(0,userGroupService.getUsersHavingPropertyValue("tel","123").size()); assertEquals(1,userGroupService.getUsersHavingProperty("mail").size()); user2=userGroupService.getUsersHavingProperty("mail").first(); assertEquals(user2.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user2.getProperties().getProperty("tel"),"12-34-38"); assertEquals(userGroupService.getUserCount()-1 ,userGroupService.getUsersNotHavingProperty("mail").size()); for (GeoServerUser user : userGroupService.getUsersNotHavingProperty("mail") ) { assertEquals(0,user.getProperties().size()); } assertEquals(1,userGroupService.getUsersHavingPropertyValue("tel","12-34-38").size()); user2=userGroupService.getUsersHavingPropertyValue("tel","12-34-38").first(); assertEquals(user2.getProperties().getProperty("mail"),"user2@gmx.com"); assertEquals(user2.getProperties().getProperty("tel"),"12-34-38"); } protected void checkValuesModified(GeoServerUserGroupService userGroupService) throws IOException { GeoServerUser disableduser = userGroupService.getUserByUsername("disableduser"); assertTrue(disableduser.isEnabled()); GeoServerMultiplexingPasswordEncoder encoder = getEncoder(userGroupService); assertTrue(encoder.isPasswordValid(disableduser.getPassword(), "hallo", null)); assertEquals(1, disableduser.getProperties().size()); assertEquals("miller", disableduser.getProperties().getProperty("lastname")); GeoServerUser user2 = userGroupService.getUserByUsername("user2"); assertEquals(1, user2.getProperties().size()); assertEquals("11-22-33", user2.getProperties().getProperty("tel")); GeoServerUserGroup disabledgroup = userGroupService.getGroupByGroupname("disabledgroup"); assertTrue(disabledgroup.isEnabled()); GeoServerUserGroup group1 = userGroupService.getGroupByGroupname("group1"); GeoServerUser user1 = userGroupService.getUserByUsername("user1"); assertEquals(1,userGroupService.getUsersForGroup(group1).size()); assertTrue(userGroupService.getUsersForGroup(group1).contains(user1)); assertEquals(0,userGroupService.getGroupsForUser(user2).size()); assertEquals(0,userGroupService.getUsersHavingProperty("mail").size()); assertEquals(0,userGroupService.getUsersHavingPropertyValue("tel","12-34-38").size()); assertEquals(1,userGroupService.getUsersHavingPropertyValue("tel","11-22-33").size()); user2=userGroupService.getUsersHavingPropertyValue("tel","11-22-33").first(); assertEquals("11-22-33", user2.getProperties().getProperty("tel")); } protected void checkValuesRemoved(GeoServerUserGroupService userGroupService) throws IOException { GeoServerUser admin = GeoServerUser.createDefaultAdmin(); GeoServerUser user1 = userGroupService.getUserByUsername("user1"); GeoServerUser disableduser = userGroupService.getUserByUsername("disableduser"); GeoServerUser groupAdminUser = userGroupService.getUserByUsername("groupAdminUser"); assertEquals(4, userGroupService.getUsers().size()); assertEquals(4, userGroupService.getUserCount()); assertTrue(userGroupService.getUsers().contains(admin)); assertTrue(userGroupService.getUsers().contains(user1)); assertTrue(userGroupService.getUsers().contains(disableduser)); assertTrue(userGroupService.getUsers().contains(groupAdminUser)); GeoServerUserGroup admins = userGroupService.getGroupByGroupname("admins"); GeoServerUserGroup group1 = userGroupService.getGroupByGroupname("group1"); assertEquals(3, userGroupService.getUserGroups().size()); assertEquals(3, userGroupService.getGroupCount()); assertTrue(userGroupService.getUserGroups().contains(admins)); assertTrue(userGroupService.getUserGroups().contains(group1)); assertEquals(0, userGroupService.getGroupsForUser(disableduser).size()); assertEquals(1, userGroupService.getUsersForGroup(group1).size()); assertTrue(userGroupService.getUsersForGroup(group1).contains(user1)); assertEquals(0,userGroupService.getUsersHavingProperty("mail").size()); assertEquals(0,userGroupService.getUsersHavingPropertyValue("tel","11-22-33").size()); } public void insertValues(GeoServerUserGroupStore userGroupStore) throws Exception { GeoServerUser admin = userGroupStore.createUserObject(GeoServerUser.ADMIN_USERNAME, GeoServerUser.DEFAULT_ADMIN_PASSWD, GeoServerUser.AdminEnabled); GeoServerUser user1 = userGroupStore.createUserObject("user1", "11111", true); GeoServerUser user2 = userGroupStore.createUserObject("user2", "22222", true); GeoServerUser disableduser = userGroupStore.createUserObject("disableduser", "", false); GeoServerUser groupAdminUser = userGroupStore.createUserObject("groupAdminUser", "foo", true); //groupAdminUser.setGroupAdmin(true); user2.getProperties().put("mail","user2@gmx.com"); user2.getProperties().put("tel","12-34-38"); userGroupStore.addUser(admin); userGroupStore.addUser(user1); userGroupStore.addUser(user2); userGroupStore.addUser(disableduser); userGroupStore.addUser(groupAdminUser); GeoServerUserGroup admins = userGroupStore.createGroupObject("admins", true); GeoServerUserGroup group1 = userGroupStore.createGroupObject("group1",true); GeoServerUserGroup group2 = userGroupStore.createGroupObject("group2", true); GeoServerUserGroup disabledgroup = userGroupStore.createGroupObject("disabledgroup",false); userGroupStore.addGroup(admins); userGroupStore.addGroup(group1); userGroupStore.addGroup(disabledgroup); userGroupStore.addGroup(group2); userGroupStore.associateUserToGroup(admin, admins); userGroupStore.associateUserToGroup(user1, group1); userGroupStore.associateUserToGroup(user2, group1); userGroupStore.associateUserToGroup(disableduser, disabledgroup); userGroupStore.associateUserToGroup(groupAdminUser, group2); } public void modifyValues(GeoServerUserGroupStore userGroupStore) throws Exception { GeoServerUser disableduser = userGroupStore.getUserByUsername("disableduser"); disableduser.setEnabled(true); disableduser.setPassword("hallo"); disableduser.getProperties().put("lastname","miller"); userGroupStore.updateUser(disableduser); GeoServerUser user2 = userGroupStore.getUserByUsername("user2"); user2.getProperties().remove("mail"); user2.getProperties().put("tel", "11-22-33"); userGroupStore.updateUser(user2); GeoServerUserGroup disabledgroup = userGroupStore.getGroupByGroupname("disabledgroup"); disabledgroup.setEnabled(true); userGroupStore.updateGroup(disabledgroup); GeoServerUserGroup group1 = userGroupStore.getGroupByGroupname("group1"); userGroupStore.disAssociateUserFromGroup(user2, group1); } public void removeValues(GeoServerUserGroupStore userGroupStore) throws IOException { GeoServerUser user2 = userGroupStore.getUserByUsername("user2"); if (user2 != null) { userGroupStore.removeUser(user2); } GeoServerUserGroup disabledGroup = userGroupStore.getGroupByGroupname("disabledgroup"); if (disabledGroup != null) { userGroupStore.removeGroup(disabledGroup); } } public static File unpackTestDataDir() throws Exception { URL url = AbstractSecurityServiceTest.class.getResource("/data_dir/default"); if (!"file".equals(url.getProtocol())) { //means a dependency is using this directory via a jarfile, copy out manually File dataDir = File.createTempFile("data", "live", new File("./target")); dataDir.delete(); dataDir.mkdirs(); //TODO: instead of harcoding files, dynamically read all subentries from the jar // and copy them out FileUtils.copyURLToFile(AbstractSecurityServiceTest.class.getResource("/data_dir/default/dummy.txt"), new File(dataDir, "dummy.txt")); return dataDir; } return DataUtilities.urlToFile(url); } /** * Indicates if the test is a JDBC test * All test are based on the fact that locking appears * at row level. * This is not true for JDBC databases * - Locking may be based on blocks * - Since only a few records are in the table, * the whole table my be locked. (lock escalation) * * Use this method to avoid to aggressive checks * * */ protected boolean isJDBCTest() { return false; } protected GeoServerMultiplexingPasswordEncoder getEncoder(GeoServerUserGroupService ugService) throws IOException { return new GeoServerMultiplexingPasswordEncoder(getSecurityManager(),ugService); } /** * Accessor for plain text password encoder. */ protected GeoServerPlainTextPasswordEncoder getPlainTextPasswordEncoder() { return getSecurityManager().loadPasswordEncoder(GeoServerPlainTextPasswordEncoder.class); } /** * Accessor for digest password encoder. */ protected GeoServerDigestPasswordEncoder getDigestPasswordEncoder() { return getSecurityManager().loadPasswordEncoder(GeoServerDigestPasswordEncoder.class); } /** * Accessor for regular (weak encryption) pbe password encoder. */ protected GeoServerPBEPasswordEncoder getPBEPasswordEncoder() { return getSecurityManager().loadPasswordEncoder(GeoServerPBEPasswordEncoder.class, null, false); } /** * Accessor for strong encryption pbe password encoder. */ protected GeoServerPBEPasswordEncoder getStrongPBEPasswordEncoder() { return getSecurityManager().loadPasswordEncoder(GeoServerPBEPasswordEncoder.class, null, true); } /** * Accessor for empty password encoder. */ protected GeoServerEmptyPasswordEncoder getEmptyEncoder() { return getSecurityManager().loadPasswordEncoder(GeoServerEmptyPasswordEncoder.class); } /** * Accessor for the geoserver master password. * */ protected String getMasterPassword() { return new String(getSecurityManager().getMasterPassword()); } }