X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fusermgt%2FUserAdministrationImplTest.java;h=d3990a2e762ff92873b938688065ccf1f10ddd8d;hb=8de36ff0206c996baf3ee4adc3e2293b12ff5f39;hp=4ca03fb676f51eb32f9246e866baa52f89117446;hpb=b7f387ca0178938325ce7107222188d3912fc1cb;p=utils diff --git a/security/src/test/java/org/wamblee/usermgt/UserAdministrationImplTest.java b/security/src/test/java/org/wamblee/usermgt/UserAdministrationImplTest.java index 4ca03fb6..d3990a2e 100644 --- a/security/src/test/java/org/wamblee/usermgt/UserAdministrationImplTest.java +++ b/security/src/test/java/org/wamblee/usermgt/UserAdministrationImplTest.java @@ -1,41 +1,38 @@ /* * Copyright 2005 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ - package org.wamblee.usermgt; -import java.util.Set; - import junit.framework.TestCase; import org.apache.log4j.Logger; -import org.wamblee.persistence.hibernate.HibernateMappingFiles; + import org.wamblee.security.encryption.Md5HexMessageDigester; -import org.wamblee.test.spring.SpringConfigFiles; -import org.wamblee.test.spring.SpringTestCase; + import org.wamblee.usermgt.UserMgtException.Reason; +import java.util.Set; + /** * Test of user administration implementation. - * + * * @author Erik Brakkee */ public class UserAdministrationImplTest extends TestCase { - private static final Logger LOGGER = Logger - .getLogger(UserAdministrationImplTest.class); + .getLogger(UserAdministrationImplTest.class); private static final String USER1 = "piet"; @@ -49,8 +46,7 @@ public class UserAdministrationImplTest extends TestCase { private static final String GROUP2 = "runners"; - private UserAdministration _admin; - + private UserAdministration admin; /* * (non-Javadoc) @@ -60,21 +56,25 @@ public class UserAdministrationImplTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); - _admin = createAdmin(); + admin = createAdmin(); } protected UserAdministration createAdmin() { - UserSet users = new InMemoryUserSet( new RegexpNameValidator(RegexpNameValidator.PASSWORD_PATTERN, Reason.INVALID_PASSWORD, "Password must contain at least 6 characters"), - new Md5HexMessageDigester()); + UserSet users = new InMemoryUserSet(new RegexpNameValidator( + RegexpNameValidator.PASSWORD_PATTERN, Reason.INVALID_PASSWORD, + "Password must contain at least 6 characters"), + new Md5HexMessageDigester()); GroupSet groups = new InMemoryGroupSet(); + return new UserAdministrationImpl(users, groups, - new RegexpNameValidator(RegexpNameValidator.ID_PATTERN, - Reason.INVALID_USERNAME, "Invalid user"), - new RegexpNameValidator(RegexpNameValidator.ID_PATTERN, - Reason.INVALID_GROUPNAME, "Invalid group")); + new RegexpNameValidator(RegexpNameValidator.ID_PATTERN, + Reason.INVALID_USERNAME, "Invalid user"), + new RegexpNameValidator(RegexpNameValidator.ID_PATTERN, + Reason.INVALID_GROUPNAME, "Invalid group")); } - - protected User createUser(String aName, String aPassword, Group aGroup) throws UserMgtException { + + protected User createUser(String aName, String aPassword, Group aGroup) + throws UserMgtException { return UsermgtTestUtils.createUser(aName, aPassword, aGroup); } @@ -82,10 +82,10 @@ public class UserAdministrationImplTest extends TestCase { * Constructs the admin, verify it contains no users and no groups. */ public void testConstruct() { - assertEquals(0, _admin.getUsers().size()); - assertEquals(0, _admin.getGroups().size()); - assertEquals(0, _admin.getUserCount()); - assertEquals(0, _admin.getGroupCount()); + assertEquals(0, admin.getUsers().size()); + assertEquals(0, admin.getGroups().size()); + assertEquals(0, admin.getUserCount()); + assertEquals(0, admin.getGroupCount()); } /** @@ -94,24 +94,24 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testCreateGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); assertNotNull(group); assertEquals(GROUP1, group.getName()); - Set groups = _admin.getGroups(); + Set groups = admin.getGroups(); assertEquals(1, groups.size()); - assertEquals(1, _admin.getGroupCount()); + assertEquals(1, admin.getGroupCount()); assertTrue(groups.contains(group)); } private void createInvalidGroup(String aUsername) { try { - _admin.createGroup(aUsername); + admin.createGroup(aUsername); fail(); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.INVALID_GROUPNAME, e - .getReason()); - assertEquals(0, _admin.getGroupCount()); + .getReason()); + assertEquals(0, admin.getGroupCount()); } } @@ -135,14 +135,17 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testCreateDuplicateGroup() throws UserMgtException { - _admin.createGroup(GROUP1); + admin.createGroup(GROUP1); + try { - _admin.createGroup(GROUP1); + admin.createGroup(GROUP1); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.DUPLICATE_GROUP, e.getReason()); - assertEquals(1, _admin.getGroupCount()); + assertEquals(1, admin.getGroupCount()); + return; } + fail(); } @@ -152,26 +155,26 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testCreateUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); assertNotNull(user); assertEquals(USER1, user.getName()); user.checkPassword(PASS1); - Set users = _admin.getUsers(); + Set users = admin.getUsers(); assertEquals(1, users.size()); - assertEquals(1, _admin.getUserCount()); + assertEquals(1, admin.getUserCount()); assertTrue(users.contains(user)); } private void createInvalidUser(String aUsername, Group aGroup) { try { - _admin.createUser(aUsername, "pass", aGroup); + admin.createUser(aUsername, "pass", aGroup); fail(); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.INVALID_USERNAME, e - .getReason()); - assertEquals(0, _admin.getUserCount()); + .getReason()); + assertEquals(0, admin.getUserCount()); } } @@ -181,7 +184,7 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testCreateInvalidUserName() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); createInvalidUser("", group); createInvalidUser("0abc", group); // should not start with digits createInvalidUser("a b", group); // should not contain spaces @@ -195,14 +198,15 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testCreateDuplicateUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + admin.createUser(USER1, PASS1, group); + try { - _admin.createUser(USER1, PASS2, group); + admin.createUser(USER1, PASS2, group); fail(); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.DUPLICATE_USER, e.getReason()); - assertEquals(1, _admin.getUserCount()); + assertEquals(1, admin.getUserCount()); } } @@ -212,11 +216,11 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testGetUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); - User user2 = _admin.getUser(USER1); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); + User user2 = admin.getUser(USER1); assertTrue(user.equals(user2)); - assertNull(_admin.getUser(USER2)); + assertNull(admin.getUser(USER2)); } /** @@ -225,10 +229,10 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testGetGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - Group group2 = _admin.getGroup(GROUP1); + Group group = admin.createGroup(GROUP1); + Group group2 = admin.getGroup(GROUP1); assertTrue(group.equals(group2)); - assertNull(_admin.getGroup(GROUP2)); + assertNull(admin.getGroup(GROUP2)); } /** @@ -238,27 +242,29 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testAddUserToGroup() throws UserMgtException { - - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); - Group group2 = _admin.createGroup(GROUP2); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); + Group group2 = admin.createGroup(GROUP2); assertTrue(user.isInGroup(group)); assertFalse(user.isInGroup(group2)); - _admin.addUserToGroup(user, group2); + admin.addUserToGroup(user, group2); assertTrue(user.isInGroup(group)); assertTrue(user.isInGroup(group2)); - Set users = _admin.getUsers(group2); + + Set users = admin.getUsers(group2); assertNotNull(users); assertEquals(1, users.size()); assertTrue(users.contains(user)); try { - _admin.addUserToGroup(user, group); + admin.addUserToGroup(user, group); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.USER_ALREADY_IN_GROUP, e - .getReason()); + .getReason()); + return; } + fail(); } @@ -268,14 +274,17 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testAddUserToGroupUnknownUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); User user = createUser(USER1, PASS1, group); + try { - _admin.addUserToGroup(user, group); + admin.addUserToGroup(user, group); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); + return; } + fail(); } @@ -285,15 +294,18 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testAddUserToGroupUnknownGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); Group group2 = new Group(GROUP2); + try { - _admin.addUserToGroup(user, group2); + admin.addUserToGroup(user, group2); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); + return; } + fail(); } @@ -301,19 +313,21 @@ public class UserAdministrationImplTest extends TestCase { * Removes a user from a group. Verifies that the user is removed from the * group using several API calls. Verifies that an exception occurs if the * user not part of the group or if the user is only part of one group. + * */ public void testRemoveUserFromGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); + + User user = admin.createUser(USER1, PASS1, group); + Group group2 = admin.createGroup(GROUP2); + admin.addUserToGroup(user, group2); - User user = _admin.createUser(USER1, PASS1, group); - Group group2 = _admin.createGroup(GROUP2); - _admin.addUserToGroup(user, group2); Set groups = user.getGroups(); assertEquals(2, groups.size()); assertTrue(groups.contains(group)); assertTrue(groups.contains(group2)); - _admin.removeUserFromGroup(user, group); + admin.removeUserFromGroup(user, group); groups = user.getGroups(); assertEquals(1, groups.size()); assertTrue(groups.contains(group2)); @@ -326,10 +340,11 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRemoveUserFromGroupUnknownUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); User user = createUser(USER1, GROUP1, group); + try { - _admin.removeUserFromGroup(user, group); + admin.removeUserFromGroup(user, group); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); } @@ -341,11 +356,12 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRemoveUserFromGroupUnknownGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); Group group2 = new Group(GROUP2); + try { - _admin.removeUserFromGroup(user, group2); + admin.removeUserFromGroup(user, group2); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); } @@ -354,15 +370,17 @@ public class UserAdministrationImplTest extends TestCase { /** * Removes a user from a group where the user is only part of one group. * Verifies that an exception is thrown. + * */ public void testRemoveUserFromGroupOnlyGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); + try { - _admin.removeUserFromGroup(user, group); + admin.removeUserFromGroup(user, group); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.USER_MUST_BE_IN_A_GROUP, e - .getReason()); + .getReason()); } } @@ -373,19 +391,20 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testGetUsersAndGroups() throws UserMgtException { - Group group1 = _admin.createGroup(GROUP1); - Group group2 = _admin.createGroup(GROUP2); + Group group1 = admin.createGroup(GROUP1); + Group group2 = admin.createGroup(GROUP2); + + User user1 = admin.createUser(USER1, PASS1, group1); + admin.addUserToGroup(user1, group2); - User user1 = _admin.createUser(USER1, PASS1, group1); - _admin.addUserToGroup(user1, group2); - User user2 = _admin.createUser(USER2, PASS2, group2); + User user2 = admin.createUser(USER2, PASS2, group2); - Set users = _admin.getUsers(); + Set users = admin.getUsers(); assertEquals(2, users.size()); assertTrue(users.contains(user1)); assertTrue(users.contains(user2)); - Set groups = _admin.getGroups(); + Set groups = admin.getGroups(); assertEquals(2, groups.size()); assertTrue(groups.contains(group1)); assertTrue(groups.contains(group2)); @@ -409,29 +428,32 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRenameUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user1 = _admin.createUser(USER1, PASS1, group); - _admin.renameUser(user1, USER2); + Group group = admin.createGroup(GROUP1); + User user1 = admin.createUser(USER1, PASS1, group); + admin.renameUser(user1, USER2); assertEquals(USER2, user1.getName()); - assertEquals(user1, _admin.getUser(USER2)); + assertEquals(user1, admin.getUser(USER2)); - _admin.createUser(USER1, PASS1, group); + admin.createUser(USER1, PASS1, group); try { - _admin.renameUser(user1, USER1); + admin.renameUser(user1, USER1); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.DUPLICATE_USER, e.getReason()); // do a trivial reanem try { - _admin.renameUser(user1, user1.getName()); + admin.renameUser(user1, user1.getName()); } catch (UserMgtException e2) { assertEquals(UserMgtException.Reason.TRIVIAL_RENAME, e2 - .getReason()); + .getReason()); + return; } + fail(); } + fail(); } @@ -441,10 +463,11 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRenameUserInvalidUsername() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user1 = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user1 = admin.createUser(USER1, PASS1, group); + try { - _admin.renameUser(user1, USER2); + admin.renameUser(user1, USER2); } catch (UserMgtException e) { assertEquals(e.getReason(), Reason.INVALID_USERNAME); } @@ -457,28 +480,33 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRenameGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - _admin.renameGroup(group, GROUP2); + Group group = admin.createGroup(GROUP1); + admin.renameGroup(group, GROUP2); assertEquals(GROUP2, group.getName()); - assertEquals(group, _admin.getGroup(GROUP2)); + assertEquals(group, admin.getGroup(GROUP2)); + + admin.createGroup(GROUP1); - _admin.createGroup(GROUP1); try { - _admin.renameGroup(group, GROUP1); + admin.renameGroup(group, GROUP1); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.DUPLICATE_GROUP, e.getReason()); // do a trivial reanem try { - _admin.renameGroup(group, group.getName()); + admin.renameGroup(group, group.getName()); } catch (UserMgtException e2) { assertEquals(UserMgtException.Reason.TRIVIAL_RENAME, e2 - .getReason()); + .getReason()); + return; } + fail(); + return; } + fail(); } @@ -488,9 +516,10 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRenameGroupInvalidGroupname() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); + try { - _admin.renameGroup(group, "a b"); + admin.renameGroup(group, "a b"); } catch (UserMgtException e) { assertEquals(e.getReason(), Reason.INVALID_GROUPNAME); } @@ -502,20 +531,20 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRemoveUser() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); - assertEquals(1, _admin.getUserCount()); - _admin.removeUser(user); - assertEquals(0, _admin.getUserCount()); + assertEquals(1, admin.getUserCount()); + admin.removeUser(user); + assertEquals(0, admin.getUserCount()); - _admin.createUser(USER1, PASS1, group); - assertEquals(1, _admin.getUserCount()); + admin.createUser(USER1, PASS1, group); + assertEquals(1, admin.getUserCount()); User user2 = createUser(USER2, PASS2, group); try { - _admin.removeUser(user2); + admin.removeUser(user2); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); } @@ -528,20 +557,23 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRemoveGroup() throws UserMgtException { - Group group1 = _admin.createGroup(GROUP1); - assertEquals(1, _admin.getGroupCount()); - _admin.removeGroup(group1); - assertEquals(0, _admin.getGroupCount()); - group1 = _admin.createGroup(GROUP1); + Group group1 = admin.createGroup(GROUP1); + assertEquals(1, admin.getGroupCount()); + admin.removeGroup(group1); + assertEquals(0, admin.getGroupCount()); + group1 = admin.createGroup(GROUP1); + + admin.createUser(USER1, PASS1, group1); - _admin.createUser(USER1, PASS1, group1); try { - _admin.removeGroup(group1); + admin.removeGroup(group1); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.GROUP_STILL_OCCUPIED, e - .getReason()); + .getReason()); + return; } + fail(); } @@ -550,10 +582,11 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testRemoveGroupUnknownGroup() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); + Group group = admin.createGroup(GROUP1); Group group2 = new Group(GROUP2); + try { - _admin.removeGroup(group2); + admin.removeGroup(group2); } catch (UserMgtException e) { assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); } @@ -565,12 +598,13 @@ public class UserAdministrationImplTest extends TestCase { * @throws UserMgtException */ public void testChangePassword() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - User user = _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + User user = admin.createUser(USER1, PASS1, group); user.changePassword(PASS1, PASS2); // retrieve the user and verifies the password hasn't changed. - User user2 = _admin.getUser(USER1); + User user2 = admin.getUser(USER1); + try { user2.checkPassword(PASS2); fail(); // password should not have changed already. @@ -579,11 +613,10 @@ public class UserAdministrationImplTest extends TestCase { } // now notify the admin of the change in the user - _admin.userModified(user); + admin.userModified(user); - user2 = _admin.getUser(USER1); + user2 = admin.getUser(USER1); user2.checkPassword(PASS2); // this time it should succeed. - } /** @@ -591,16 +624,17 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testPerformanceFindUserByName() throws UserMgtException { - Group group = _admin.createGroup(GROUP1); - _admin.createUser(USER1, PASS1, group); + Group group = admin.createGroup(GROUP1); + admin.createUser(USER1, PASS1, group); int n = 1000; long time = System.currentTimeMillis(); + for (int i = 0; i < n; i++) { - _admin.getUser(USER1); + admin.getUser(USER1); } - LOGGER.info("Looked up a user " + n + " times in " - + (float) (System.currentTimeMillis() - time) / 1000.0); - } + LOGGER.info("Looked up a user " + n + " times in " + + ((float) (System.currentTimeMillis() - time) / 1000.0)); + } }