From 619d17748d46eafbd9264be847584f6126077d7f Mon Sep 17 00:00:00 2001 From: Jeff Burke <Jeff.Burke@nrc-cnrc.gc.ca> Date: Thu, 12 May 2016 13:02:38 -0700 Subject: [PATCH] t73024: added unit-test to try adding an existing user to userRequests --- .../cadc/ac/server/ldap/LdapUserDAOTest.java | 111 ++++++++---------- 1 file changed, 52 insertions(+), 59 deletions(-) diff --git a/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java b/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java index bf3d3c48..3dcb390f 100644 --- a/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java +++ b/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java @@ -131,52 +131,6 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest catch (IllegalArgumentException expected) {} } - /** - * Test of addUser method, of class LdapUserDAO. - */ - @Test - public void testAddUserRequest() throws Exception - { - // add user using HttpPrincipal - String username = createUsername(); - final HttpPrincipal userID = new HttpPrincipal(username); - - final User testUser = new User(); - testUser.getIdentities().add(userID); - - testUser.personalDetails = new PersonalDetails("foo", "bar"); - testUser.personalDetails.email = username + "@canada.ca"; - - final UserRequest userRequest = new UserRequest(testUser, "password".toCharArray()); - - DNPrincipal dnPrincipal = new DNPrincipal("uid=" + username + "," + config.getUsersDN()); - Subject subject = new Subject(); - subject.getPrincipals().add(dnPrincipal); - - // do everything as owner - Subject.doAs(subject, new PrivilegedExceptionAction<Object>() - { - public Object run() - throws Exception - { - try - { - final LdapUserDAO userDAO = getUserDAO(); - userDAO.addUserRequest(userRequest); - - final User actual = userDAO.getUserRequest(userID); - check(testUser, actual); - - return null; - } - catch (Exception e) - { - throw new Exception("Problems", e); - } - } - }); - } - @Test public void testAddUser() throws Exception { @@ -220,23 +174,23 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest * Test of addUserRequest method, of class LdapUserDAO. */ @Test - public void testAddPendingUser() throws Exception + public void testAddUserRequest() throws Exception { // add user using HttpPrincipal final String username = createUsername(); final HttpPrincipal userID = new HttpPrincipal(username); - final User httpExpected = new User(); - httpExpected.getIdentities().add(userID); + final User expectedUser = new User(); + expectedUser.getIdentities().add(userID); - PersonalDetails pd = new PersonalDetails("foo", "bar"); - pd.email = username + "@canada.ca"; - httpExpected.personalDetails = pd; + expectedUser.personalDetails = new PersonalDetails("foo", "bar"); + expectedUser.personalDetails.email = username + "@canada.ca"; - UserRequest userRequest = new UserRequest(httpExpected, "123456".toCharArray()); + UserRequest userRequest = new UserRequest(expectedUser, "123456".toCharArray()); - final LdapUserDAO httpUserDAO = getUserDAO(); - httpUserDAO.addUserRequest(userRequest); + // Adding a new user is done anonymously + final LdapUserDAO userDAO = getUserDAO(); + userDAO.addUserRequest(userRequest); DNPrincipal dnPrincipal = new DNPrincipal("uid=" + username + "," + config.getUserRequestsDN()); Subject subject = new Subject(); @@ -250,8 +204,8 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest { try { - final User actual = httpUserDAO.getUserRequest(userID); - check(httpExpected, actual); + final User actualUser = userDAO.getUserRequest(userID); + check(expectedUser, actualUser); return null; } @@ -261,9 +215,48 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } } }); - } - // TODO testAddUser for an existing user + // try and add another user with the same username + final User dupUsername = new User(); + dupUsername.getIdentities().add(userID); + + dupUsername.personalDetails = new PersonalDetails("foo", "bar"); + dupUsername.personalDetails.email = username + "@foo.com"; + + UserRequest dupUsernameRequest = new UserRequest(dupUsername, "123456".toCharArray()); + + try + { + userDAO.addUserRequest(dupUsernameRequest); + fail("adding a duplicate user should throw a UserAlreadyExistsException"); + } + catch (UserAlreadyExistsException expected) + { + log.debug("expected exception: " + expected.getMessage()); + } + + // try and add another user with the same email address + final String username2 = createUsername(); + final HttpPrincipal userID2 = new HttpPrincipal(username); + + final User dupEmail = new User(); + dupEmail.getIdentities().add(userID2); + + dupEmail.personalDetails = new PersonalDetails("foo", "bar"); + dupEmail.personalDetails.email = username + "@canada.ca"; + + UserRequest dupEmailRequest = new UserRequest(dupEmail, "123456".toCharArray()); + + try + { + userDAO.addUserRequest(dupEmailRequest); + fail("adding a user with an existing email address should throw a UserAlreadyExistsException"); + } + catch (UserAlreadyExistsException expected) + { + log.debug("expected exception: " + expected.getMessage()); + } + } /** * Test of getUser method, of class LdapUserDAO. -- GitLab