X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthentication%2FUserAdministrationImplTest.java;h=76e7b46f222640dde84bd4ea7ec29dc5d101da6f;hb=aa0df19349b7edbc4aedb150862c95fc5ce3910b;hp=281684b4c01db15d66b807e74fa210855b08662d;hpb=43995978f8779ea9fb686e8cb6f98516d8c2f2e5;p=utils diff --git a/security/impl/src/test/java/org/wamblee/security/authentication/UserAdministrationImplTest.java b/security/impl/src/test/java/org/wamblee/security/authentication/UserAdministrationImplTest.java index 281684b4..76e7b46f 100644 --- a/security/impl/src/test/java/org/wamblee/security/authentication/UserAdministrationImplTest.java +++ b/security/impl/src/test/java/org/wamblee/security/authentication/UserAdministrationImplTest.java @@ -12,12 +12,13 @@ * 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.security.authentication; import junit.framework.TestCase; import org.apache.log4j.Logger; +import org.junit.Test; import org.wamblee.security.authentication.Group; import org.wamblee.security.authentication.GroupSet; @@ -32,7 +33,7 @@ import org.wamblee.security.authentication.UserSet; import org.wamblee.security.authentication.UserMgtException.Reason; import org.wamblee.security.encryption.Md5HexMessageDigester; - +import java.util.List; import java.util.Set; /** @@ -83,10 +84,7 @@ public class UserAdministrationImplTest extends TestCase { Reason.INVALID_GROUPNAME, "Invalid group")); } - protected User createUser(String aName, String aPassword, Group aGroup) - throws UserMgtException { - return UsermgtTestUtils.createUser(aName, aPassword, aGroup); - } + // Construction /** * Constructs the admin, verify it contains no users and no groups. @@ -98,179 +96,112 @@ public class UserAdministrationImplTest extends TestCase { assertEquals(0, admin.getGroupCount()); } - /** - * Creates a new group. Verifies the group is created correctly and that the - * user is added. - * - */ - public void testCreateGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - assertNotNull(group); - assertEquals(GROUP1, group.getName()); - - Set groups = admin.getGroups(); - assertEquals(1, groups.size()); - assertEquals(1, admin.getGroupCount()); - assertTrue(groups.contains(group)); + // Basic user admin: + // void createUser(String aUser, String aPassword); + // boolean checkUser(String aUser); + // int getUserCount(); + // List getUsers(); + // void renameUser(String aOldUserName, String aUserName); + // void removeUser(String aUser); + public void testCreateUser() { + assertFalse(admin.checkUser(USER1)); + admin.createUser(USER1, PASS1); + assertTrue(admin.checkUser(USER1)); + assertEquals(1, admin.getUserCount()); + assertTrue(admin.checkPassword(USER1, PASS1)); + assertFalse(admin.checkPassword(USER1, PASS2)); } - private void createInvalidGroup(String aUsername) { + public void testCreateDuplicateUser() { + admin.createUser(USER1, PASS1); + try { - admin.createGroup(aUsername); + admin.createUser(USER1, PASS2); fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.INVALID_GROUPNAME, e - .getReason()); - assertEquals(0, admin.getGroupCount()); + assertEquals(UserMgtException.Reason.DUPLICATE_USER, e.getReason()); + assertEquals(1, admin.getUserCount()); } } /** - * Creates a new group with an invalid name. Verifies that the appropriate + * Constructs users with invalid names. Verifies that the appropriate * exception is thrown. * - * @throws UserMgtException */ - public void testCreateInvalidGroupName() throws UserMgtException { - createInvalidGroup(""); - createInvalidGroup("0abc"); // should not start with digits - createInvalidGroup("a b"); // should not contain spaces - createInvalidGroup(" aa"); - createInvalidGroup("aa "); - } - - /** - * Creates a new group which conflicts with an existing one. Verifies that - * the UserMgtException is thrown and that no group is added. - * - */ - public void testCreateDuplicateGroup() throws UserMgtException { - admin.createGroup(GROUP1); - - try { - admin.createGroup(GROUP1); - } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.DUPLICATE_GROUP, e.getReason()); - assertEquals(1, admin.getGroupCount()); - - return; - } - - fail(); + public void testCreateInvalidUserName() throws UserMgtException { + createInvalidUser(""); + createInvalidUser("0abc"); // should not start with digits + createInvalidUser("a b"); // should not contain spaces + createInvalidUser(" aa"); + createInvalidUser("aa "); } - /** - * Creates a new user. Verifies the user is created correctly and that the - * user is added. - * - */ - public void testCreateUser() throws UserMgtException { - 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(); + public void testRenameUser() { + admin.createUser(USER1, PASS1); + admin.renameUser(USER1, USER2); + List users = admin.getUsers(); assertEquals(1, users.size()); - assertEquals(1, admin.getUserCount()); - assertTrue(users.contains(user)); + assertTrue(users.contains(USER2)); } - private void createInvalidUser(String aUsername, Group aGroup) { + public void testRenameUserInvalidUsername() { + admin.createUser(USER1, PASS1); try { - admin.createUser(aUsername, "pass", aGroup); + admin.renameUser(USER1, "a b"); fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.INVALID_USERNAME, e - .getReason()); - assertEquals(0, admin.getUserCount()); + assertEquals(e.getReason(), Reason.INVALID_USERNAME); } } - /** - * Constructs users with invalid names. Verifies that the appropriate - * exception is thrown. - * - */ - public void testCreateInvalidUserName() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - createInvalidUser("", group); - createInvalidUser("0abc", group); // should not start with digits - createInvalidUser("a b", group); // should not contain spaces - createInvalidUser(" aa", group); - createInvalidUser("aa ", group); + public void testRenameUserToItself() { + admin.createUser(USER1, PASS1); + admin.renameUser(USER1, USER1); + assertTrue(admin.checkUser(USER1)); } - /** - * Creates a new user which conflicts with an existing one. Verifies that - * the UserMgtException is thrown and that no user is added. - * - */ - public void testCreateDuplicateUser() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - admin.createUser(USER1, PASS1, group); - + public void testRenameUserDuplicateUser() { + admin.createUser(USER1, PASS1); + admin.createUser(USER2, PASS2); try { - admin.createUser(USER1, PASS2, group); + admin.renameUser(USER1, USER2); fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.DUPLICATE_USER, e.getReason()); - assertEquals(1, admin.getUserCount()); + assertEquals(e.getReason(), Reason.DUPLICATE_USER); } } - /** - * Gets a known user by name. Verifies the correct user is obtained. - * Verifies that null is returned when trying to obtain an unknown user. - * - */ - public void testGetUser() throws UserMgtException { - 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)); + // Basic group admin: + // void createGroup(String aName); + // boolean checkGroup(String aGroup); + // int getGroupCount(); + // List getGroups(); + + public void testCreateGroup() { + admin.createGroup(GROUP1); + List groups = admin.getGroups(); + assertEquals(1, groups.size()); + assertEquals(1, admin.getGroupCount()); + assertTrue(groups.contains(GROUP1)); } - /** - * Gets a known group by name. Verifies the correct group is obtained. - * Verifies that null is returned when the group is not known. - * - */ - public void testGetGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - Group group2 = admin.getGroup(GROUP1); - assertTrue(group.equals(group2)); - assertNull(admin.getGroup(GROUP2)); + public void testCreateGroupInvalidName() { + createInvalidGroup(""); + createInvalidGroup("0abc"); // should not start with digits + createInvalidGroup("a b"); // should not contain spaces + createInvalidGroup(" aa"); + createInvalidGroup("aa "); } - /** - * Adds a user to a group. Verifies that the user is added using several API - * calls. Verifies that an exception occurs if the user is not already part - * of the group. - * - */ - public void testAddUserToGroup() throws UserMgtException { - 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); - assertTrue(user.isInGroup(group)); - assertTrue(user.isInGroup(group2)); - - Set users = admin.getUsers(group2); - assertNotNull(users); - assertEquals(1, users.size()); - assertTrue(users.contains(user)); + public void testCreateGroupDuplicateGroup() { + admin.createGroup(GROUP1); try { - admin.addUserToGroup(user, group); + admin.createGroup(GROUP1); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.USER_ALREADY_IN_GROUP, e - .getReason()); + assertEquals(UserMgtException.Reason.DUPLICATE_GROUP, e.getReason()); + assertEquals(1, admin.getGroupCount()); return; } @@ -278,353 +209,267 @@ public class UserAdministrationImplTest extends TestCase { fail(); } - /** - * Adds a user to a group where the user does not exist. Verifies that an - * exception occurs. - * - */ - public void testAddUserToGroupUnknownUser() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = createUser(USER1, PASS1, group); + // Passwords. + // boolean checkPassword(String aUser, String aPassword); + // boolean changePassword(String aUser, String aOldPassword, String + // aNewPassword); + // void setPassword(String aUser, String aPassword); + + public void testChangePassword() { + admin.createUser(USER1, PASS1); + boolean changed = admin.changePassword(USER1, PASS1, PASS2); + assertTrue(changed); + assertTrue(admin.checkPassword(USER1, PASS2)); + assertFalse(admin.checkPassword(USER1, PASS1)); + } + public void testChangePasswordWrongPassword() { + admin.createUser(USER1, PASS1); + boolean changed = admin.changePassword(USER1, PASS2, PASS1); + assertFalse(changed); + assertFalse(admin.checkPassword(USER1, PASS2)); + assertTrue(admin.checkPassword(USER1, PASS1)); + } + + public void testChangePasswordUnknownUser() { + admin.createUser(USER1, PASS1); try { - admin.addUserToGroup(user, group); + boolean changed = admin.changePassword(USER1 + "unknown", PASS2, + PASS1); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); - - return; + assertEquals(e.getReason(), Reason.UNKNOWN_USER); } - - fail(); } - /** - * Adds a user to a group where the user does not exist. Verifies that an - * exception occurs. - * - */ - public void testAddUserToGroupUnknownGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = admin.createUser(USER1, PASS1, group); - Group group2 = new Group(GROUP2); + public void testSetPassword() { + admin.createUser(USER1, PASS1); + admin.setPassword(USER1, PASS2); + assertTrue(admin.checkPassword(USER1, PASS2)); + assertFalse(admin.checkPassword(USER1, PASS1)); + } + public void testSetPasswordUnknownUser() { + admin.createUser(USER1, PASS1); try { - admin.addUserToGroup(user, group2); + admin.setPassword(USER1 + "unknown", PASS2); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); - - return; + assertEquals(e.getReason(), Reason.UNKNOWN_USER); } - - fail(); } - /** - * 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); - - User user = admin.createUser(USER1, PASS1, group); - Group group2 = admin.createGroup(GROUP2); - admin.addUserToGroup(user, group2); + // Group membership + // boolean isInGroup(String aUser, String aGroup); + // List getUsers(String aGroup); + // void addUserToGroup(String aUser, String aGroup); + // void removeUserFromGroup(String aUser, String aGroup);} - Set groups = user.getGroups(); - assertEquals(2, groups.size()); - assertTrue(groups.contains(group)); - assertTrue(groups.contains(group2)); - - admin.removeUserFromGroup(user, group); - groups = user.getGroups(); - assertEquals(1, groups.size()); - assertTrue(groups.contains(group2)); - assertFalse(groups.contains(group)); + public void testAddUserToGroup() { + admin.createUser(USER1, PASS1); + assertFalse(admin.isInGroup(USER1, GROUP1)); + admin.createGroup(GROUP1); + admin.addUserToGroup(USER1, GROUP1); + assertTrue(admin.isInGroup(USER1, GROUP1)); + List users = admin.getUsers(GROUP1); + assertEquals(1, users.size()); + assertTrue(users.contains(USER1)); } - /** - * Removes a user from a group where the user is not known. Verifies that an - * exception is thrown. - * - */ - public void testRemoveUserFromGroupUnknownUser() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = createUser(USER1, GROUP1, group); + public void testMultipleGroups() { + admin.createUser(USER1, PASS1); + admin.createGroup(GROUP1); + admin.createGroup(GROUP2); + assertFalse(admin.isInGroup(USER1, GROUP1)); + assertFalse(admin.isInGroup(USER1, GROUP2)); + admin.addUserToGroup(USER1, GROUP1); + admin.addUserToGroup(USER1, GROUP2); + assertTrue(admin.isInGroup(USER1, GROUP1)); + assertTrue(admin.isInGroup(USER1, GROUP2)); + } + public void testAddUserToGroupUnknownUser() { + admin.createGroup(GROUP2); try { - admin.removeUserFromGroup(user, group); + admin.addUserToGroup(USER1, GROUP2); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); + assertEquals(e.getReason(), Reason.UNKNOWN_USER); } - } - /** - * Removes a user from a group where the group is not known. Verifies that - * an exception is thrown. - * - */ - public void testRemoveUserFromGroupUnknownGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = admin.createUser(USER1, PASS1, group); - Group group2 = new Group(GROUP2); + } + public void testAddUserToGroupUnknownGroup() { + admin.createUser(USER1, PASS1); try { - admin.removeUserFromGroup(user, group2); + admin.addUserToGroup(USER1, GROUP2); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); + assertEquals(e.getReason(), Reason.UNKNOWN_GROUP); } } - /** - * 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); + public void testRemoveUserFromGroup() { + admin.createUser(USER1, GROUP1); + admin.createGroup(GROUP1); + admin.addUserToGroup(USER1, GROUP1); + assertTrue(admin.isInGroup(USER1, GROUP1)); + admin.removeUserFromGroup(USER1, GROUP1); + assertFalse(admin.isInGroup(USER1, GROUP1)); + } + public void testRemoveUserFromGroupUserNotInGroup() { + admin.createUser(USER1, GROUP1); + admin.createGroup(GROUP1); + admin.createGroup(GROUP2); + admin.addUserToGroup(USER1, GROUP1); try { - admin.removeUserFromGroup(user, group); + admin.removeUserFromGroup(USER1, GROUP2); + fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.USER_MUST_BE_IN_A_GROUP, e - .getReason()); + assertEquals(Reason.USER_NOT_IN_GROUP, e.getReason()); } } - /** - * Gets the list of users and groups. Verifies that the correct suers and - * groups are returned. Verifies also that the relations from user to group - * are correct. - * - */ - public void testGetUsersAndGroups() throws UserMgtException { - Group group1 = admin.createGroup(GROUP1); - Group group2 = admin.createGroup(GROUP2); - - User user1 = admin.createUser(USER1, PASS1, group1); - admin.addUserToGroup(user1, group2); - - User user2 = admin.createUser(USER2, PASS2, group2); - - Set users = admin.getUsers(); - assertEquals(2, users.size()); - assertTrue(users.contains(user1)); - assertTrue(users.contains(user2)); - - Set groups = admin.getGroups(); - assertEquals(2, groups.size()); - assertTrue(groups.contains(group1)); - assertTrue(groups.contains(group2)); - - assertTrue(user1.isInGroup(group1)); - assertTrue(user1.isInGroup(group2)); - assertFalse(user2.isInGroup(group1)); - assertTrue(user2.isInGroup(group2)); - - Set groups1 = user1.getGroups(); - assertEquals(2, groups1.size()); - - Set groups2 = user2.getGroups(); - assertEquals(1, groups2.size()); - } - - /** - * Renames a user. Verifies that the user is renamed. Verifies that - * exceptions are thrown when an attempt is made to rename the user to - * itself or to another existing user, or when the group does not exist. - * - */ - public void testRenameUser() throws UserMgtException { - 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)); - + public void testRemoveUserFromGroupUnknowUser() { + admin.createGroup(GROUP1); try { - admin.renameUser(user1, USER1); - } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.DUPLICATE_USER, e.getReason()); - - // do a trivial reanem - try { - admin.renameUser(user1, user1.getName()); - } catch (UserMgtException e2) { - assertEquals(UserMgtException.Reason.TRIVIAL_RENAME, e2 - .getReason()); - - return; - } - + admin.removeUserFromGroup(USER1, GROUP2); fail(); + } catch (UserMgtException e) { + assertEquals(Reason.UNKNOWN_USER, e.getReason()); } - - fail(); } - /** - * Renames a user to a user with an invalid username. Verifies that the - * appropriate exception is thrown. - * - */ - public void testRenameUserInvalidUsername() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user1 = admin.createUser(USER1, PASS1, group); - + public void testRemoveUserFromGroupUnknownGroup() { + admin.createUser(USER1, PASS1); try { - admin.renameUser(user1, USER2); + admin.removeUserFromGroup(USER1, GROUP2); + fail(); } catch (UserMgtException e) { - assertEquals(e.getReason(), Reason.INVALID_USERNAME); + assertEquals(Reason.UNKNOWN_GROUP, e.getReason()); } } - /** - * Renames a group. Verifies that the group is renamed. Verifies that - * exceptions are thrown when an attempt is made to rename the group to - * itself or to another existing group or when the group does not exist. - * - */ - public void testRenameGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - admin.renameGroup(group, GROUP2); - assertEquals(GROUP2, group.getName()); - assertEquals(group, admin.getGroup(GROUP2)); + // void renameGroup(String aOldGroup, String aGroupName) + public void testRenameGroup() { + admin.createUser(USER1, PASS1); admin.createGroup(GROUP1); + admin.addUserToGroup(USER1, GROUP1); + admin.renameGroup(GROUP1, GROUP2); + List groups = admin.getGroups(); + assertEquals(1, groups.size()); + assertTrue(groups.contains(GROUP2)); + assertTrue(admin.isInGroup(USER1, GROUP2)); + assertFalse(admin.isInGroup(USER1, GROUP1)); + } + public void testRenameGroupGroupNameInvalid() { + admin.createGroup(GROUP1); try { - admin.renameGroup(group, GROUP1); - } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.DUPLICATE_GROUP, e.getReason()); - - // do a trivial reanem - try { - admin.renameGroup(group, group.getName()); - } catch (UserMgtException e2) { - assertEquals(UserMgtException.Reason.TRIVIAL_RENAME, e2 - .getReason()); - - return; - } - + admin.renameGroup(GROUP1, "a b"); fail(); - - return; + } catch (UserMgtException e) { + assertEquals(Reason.INVALID_GROUPNAME, e.getReason()); } - - fail(); } - /** - * Renames a group to a group with an invalid name. Verifies that the - * appropriate exception is thrown. - * - */ - public void testRenameGroupInvalidGroupname() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - + public void testRenameGroupGroupAlreadyExists() { + admin.createGroup(GROUP1); + admin.createGroup(GROUP2); try { - admin.renameGroup(group, "a b"); + admin.renameGroup(GROUP1, GROUP2); + fail(); } catch (UserMgtException e) { - assertEquals(e.getReason(), Reason.INVALID_GROUPNAME); + assertEquals(Reason.DUPLICATE_GROUP, e.getReason()); } } - /** - * Removes a user. Verifies that the user is removed. Verifies that the an - * exception is thrown when the user does not exist. - * - */ - public void testRemoveUser() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = admin.createUser(USER1, PASS1, group); - - assertEquals(1, admin.getUserCount()); - admin.removeUser(user); - assertEquals(0, admin.getUserCount()); - - admin.createUser(USER1, PASS1, group); - assertEquals(1, admin.getUserCount()); + // void removeGroup(String aGroup); - User user2 = createUser(USER2, PASS2, group); + public void testRemoveGroup() { + admin.createGroup(GROUP1); + admin.removeGroup(GROUP1); + List groups = admin.getGroups(); + assertEquals(0, groups.size()); + } + public void testRemoveGroupGroupDoesNotExist() { try { - admin.removeUser(user2); + admin.removeGroup(GROUP1); + fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_USER, e.getReason()); + assertEquals(e.getReason(), Reason.UNKNOWN_GROUP); } } - /** - * Removes a group. Verifies that the group is removed. Verifies that the an - * exception is thrown when the group does not exist or if there are still - * users in the group. - * - */ - 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); - - admin.createUser(USER1, PASS1, group1); + public void testRemoveGroupButStillUsersInGroup() { + admin.createUser(USER1, PASS1); + admin.createGroup(GROUP1); + admin.addUserToGroup(USER1, GROUP1); + try { + admin.removeGroup(GROUP1); + } catch (UserMgtException e) { + assertEquals(e.getReason(), Reason.GROUP_STILL_OCCUPIED); + } + } + private void createInvalidGroup(String aUsername) { try { - admin.removeGroup(group1); + admin.createGroup(aUsername); + fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.GROUP_STILL_OCCUPIED, e + assertEquals(UserMgtException.Reason.INVALID_GROUPNAME, e .getReason()); - - return; + assertEquals(0, admin.getGroupCount()); } - - fail(); } - /** - * Tries to remove an unknown group. Verifies that an exception is thrown. - * - */ - public void testRemoveGroupUnknownGroup() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - Group group2 = new Group(GROUP2); - + private void createInvalidUser(String aUsername) { try { - admin.removeGroup(group2); + admin.createUser(aUsername, "pass"); + fail(); } catch (UserMgtException e) { - assertEquals(UserMgtException.Reason.UNKNOWN_GROUP, e.getReason()); + assertEquals(UserMgtException.Reason.INVALID_USERNAME, e + .getReason()); + assertEquals(0, admin.getUserCount()); } } /** - * Changes the password, verifies that this succeeds. + * Gets the list of users and groups. Verifies that the correct suers and + * groups are returned. Verifies also that the relations from user to group + * are correct. * - * @throws UserMgtException */ - public void testChangePassword() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - User user = admin.createUser(USER1, PASS1, group); - user.changePassword(PASS1, PASS2); + public void testGetUsersAndGroups() throws UserMgtException { + admin.createGroup(GROUP1); + admin.createGroup(GROUP2); - // retrieve the user and verifies the password hasn't changed. - User user2 = admin.getUser(USER1); + admin.createUser(USER1, PASS1); + admin.addUserToGroup(USER1, GROUP1); + admin.addUserToGroup(USER1, GROUP2); - try { - user2.checkPassword(PASS2); - fail(); // password should not have changed already. - } catch (UserMgtException e) { - // ok. - } + admin.createUser(USER2, PASS2); + admin.addUserToGroup(USER2, GROUP2); - // now notify the admin of the change in the user - admin.userModified(user); + List users = admin.getUsers(); + assertEquals(2, users.size()); + assertTrue(users.contains(USER1)); + assertTrue(users.contains(USER2)); - user2 = admin.getUser(USER1); - user2.checkPassword(PASS2); // this time it should succeed. + List groups = admin.getGroups(); + assertEquals(2, groups.size()); + assertTrue(groups.contains(GROUP1)); + assertTrue(groups.contains(GROUP2)); + + assertTrue(admin.isInGroup(USER1, GROUP1)); + assertTrue(admin.isInGroup(USER1, GROUP2)); + assertFalse(admin.isInGroup(USER2, GROUP1)); + assertTrue(admin.isInGroup(USER2, GROUP2)); + + List groups1 = admin.getGroups(USER1); + assertEquals(2, groups1.size()); + + List groups2 = admin.getGroups(USER2); + assertEquals(1, groups2.size()); } /** @@ -632,14 +477,15 @@ public class UserAdministrationImplTest extends TestCase { * */ public void testPerformanceFindUserByName() throws UserMgtException { - Group group = admin.createGroup(GROUP1); - admin.createUser(USER1, PASS1, group); + admin.createGroup(GROUP1); + admin.createUser(USER1, PASS1); + admin.addUserToGroup(USER1, GROUP1); int n = 1000; long time = System.currentTimeMillis(); for (int i = 0; i < n; i++) { - admin.getUser(USER1); + admin.checkUser(USER1); } LOGGER.info("Looked up a user " + n + " times in " +