Skip to content
Snippets Groups Projects
Commit d9387108 authored by Jeff Burke's avatar Jeff Burke
Browse files

s1890: updated LdapUserDAO unit tests

parent 6a219a61
No related branches found
No related tags found
No related merge requests found
......@@ -78,6 +78,7 @@ import ca.nrc.cadc.ac.UserAlreadyExistsException;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.ac.client.GroupMemberships;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.DNPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.NumericPrincipal;
......@@ -394,10 +395,9 @@ public class LdapUserDAO extends LdapDAO
DN userDN = getUserDN(userID.getName(), usersDN);
AddRequest addRequest = new AddRequest(userDN, attributes);
LDAPConnection foo = getReadWriteConnection();
logger.debug("RW connection: " + foo.getConnectionPoolName());
LDAPResult result = foo.add(addRequest);
LDAPResult result = getReadWriteConnection().add(addRequest);
LdapDAO.checkLdapResult(result.getResultCode());
logger.info("added " + userID.getName() + " to " + usersDN);
}
catch (LDAPException e)
{
......@@ -561,6 +561,7 @@ public class LdapUserDAO extends LdapDAO
user.personalDetails.institute = searchResult.getAttributeValue(LDAP_INSTITUTE);
}
logger.info("got " + userID.getName() + " from " + usersDN);
return user;
}
......@@ -968,7 +969,9 @@ public class LdapUserDAO extends LdapDAO
}
try
{
return getUser(user.getHttpPrincipal());
User ret = getUser(user.getHttpPrincipal());
logger.info("updated " + user.getHttpPrincipal().getName());
return ret;
}
catch (UserNotFoundException e)
{
......@@ -1180,25 +1183,25 @@ public class LdapUserDAO extends LdapDAO
DN getUserDN(User user)
throws UserNotFoundException, TransientException
{
NumericPrincipal numericPrincipal = new NumericPrincipal(user.getID().getUUID());
String searchField = userLdapAttrib.get(numericPrincipal);
Principal userID = user.getHttpPrincipal();
String searchField = userLdapAttrib.get(userID.getClass());
if (searchField == null)
{
throw new IllegalArgumentException(
"Unsupported principal type " + numericPrincipal.getClass());
"Unsupported principal type " + userID.getClass());
}
// change the DN to be in the 'java' format
Filter filter;
// if (user.getUserID() instanceof X500Principal)
// if (userID instanceof X500Principal)
// {
// X500Principal orderedPrincipal = AuthenticationUtil.getOrderedForm(
// (X500Principal) user.getUserID());
// (X500Principal) userID);
// filter = Filter.createEqualityFilter(searchField, orderedPrincipal.toString());
// }
// else
// {
filter = Filter.createEqualityFilter(searchField, numericPrincipal.getName());
filter = Filter.createEqualityFilter(searchField, userID.getName());
// }
logger.debug("search filter: " + filter);
......@@ -1208,6 +1211,7 @@ public class LdapUserDAO extends LdapDAO
SearchRequest searchRequest = new SearchRequest(
config.getUsersDN(), SearchScope.ONE, filter, LDAP_ENTRYDN);
searchResult = getReadOnlyConnection().searchForEntry(searchRequest);
logger.info("getUserDN: got " + userID.getName() + " from " + config.getUsersDN());
}
catch (LDAPException e)
{
......@@ -1216,7 +1220,7 @@ public class LdapUserDAO extends LdapDAO
if (searchResult == null)
{
String msg = "User not found " + user.getID().getURI();
String msg = "User not found " + userID.getName() + " in " + config.getUsersDN();
logger.debug(msg);
throw new UserNotFoundException(msg);
}
......
......@@ -125,7 +125,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
public static void setUpBeforeClass()
throws Exception
{
Log4jInit.setLevel("ca.nrc.cadc.ac", Level.DEBUG);
Log4jInit.setLevel("ca.nrc.cadc.ac", Level.INFO);
// get the configuration of the development server from and config files...
config = getLdapConfig();
......@@ -213,36 +213,36 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
// add user using X500Principal
X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
final User x500Expected = new User();
x500Expected.getIdentities().add(x500Principal);
x500Expected.personalDetails = new PersonalDetails("foo", "bar");
final UserRequest x500UserRequest = new UserRequest(x500Expected, "123456".toCharArray());
// do everything as owner
Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
{
public Object run() throws Exception
{
try
{
final LdapUserDAO userDAO = getUserDAO();
userDAO.addUser(x500UserRequest);
final User actual = userDAO.getUser(userID);
check(x500Expected, actual);
return null;
}
catch (Exception e)
{
throw new Exception("Problems", e);
}
}
});
// X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
//
// final User x500Expected = new User();
// x500Expected.getIdentities().add(x500Principal);
//
// x500Expected.personalDetails = new PersonalDetails("foo", "bar");
//
// final UserRequest x500UserRequest = new UserRequest(x500Expected, "123456".toCharArray());
//
// // do everything as owner
// Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
// {
// public Object run() throws Exception
// {
// try
// {
// final LdapUserDAO userDAO = getUserDAO();
// userDAO.addUser(x500UserRequest);
//
// final User actual = userDAO.getUser(x500UserRequest.getUser().getHttpPrincipal());
// check(x500Expected, actual);
//
// return null;
// }
// catch (Exception e)
// {
// throw new Exception("Problems", e);
// }
// }
// });
// TODO should test passing in both Http and X500 Principals
}
......@@ -250,7 +250,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
/**
* Test of addPendingUser method, of class LdapUserDAO.
*/
// @Test
@Test
public void testAddPendingUser() throws Exception
{
// add user using HttpPrincipal
......@@ -294,36 +294,36 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
// add user using X500Principal
final X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
final User x500Expected = new User();
x500Expected.getIdentities().add(x500Principal);
x500Expected.personalDetails = pd;
userRequest = new UserRequest(x500Expected, "123456".toCharArray());
final LdapUserDAO x500UserDAO = getUserDAO();
x500UserDAO.addPendingUser(userRequest);
// do everything as owner
Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
{
public Object run()
throws Exception
{
try
{
final User actual = x500UserDAO.getPendingUser(userID);
check(x500Expected, actual);
return null;
}
catch (Exception e)
{
throw new Exception("Problems", e);
}
}
});
// final X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
//
// final User x500Expected = new User();
// x500Expected.getIdentities().add(x500Principal);
// x500Expected.personalDetails = pd;
//
// userRequest = new UserRequest(x500Expected, "123456".toCharArray());
//
// final LdapUserDAO x500UserDAO = getUserDAO();
// x500UserDAO.addPendingUser(userRequest);
//
// // do everything as owner
// Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
// {
// public Object run()
// throws Exception
// {
// try
// {
// final User actual = x500UserDAO.getPendingUser(userID);
// check(x500Expected, actual);
//
// return null;
// }
// catch (Exception e)
// {
// throw new Exception("Problems", e);
// }
// }
// });
}
// TODO testAddUser for an existing user
......@@ -331,7 +331,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
/**
* Test of getUser method, of class LdapUserDAO.
*/
// @Test
@Test
public void testGetUser() throws Exception
{
Subject subject = new Subject();
......@@ -365,13 +365,8 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
final String username = userID.getName();
final String password = "123456";
X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
NumericPrincipal numericPrincipal = new NumericPrincipal(UUID.randomUUID());
final User expected = new User();
expected.getIdentities().add(userID);
expected.getIdentities().add(x500Principal);
expected.getIdentities().add(numericPrincipal);
expected.personalDetails = new PersonalDetails("foo", "bar");
expected.personalDetails.email = email;
......@@ -448,6 +443,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
{
final LdapUserDAO userDAO = getUserDAO();
final User user = userDAO.getUserByEmailAddress(emailAddress);
assertNotNull(user);
PersonalDetails pd = user.personalDetails;
assertEquals(emailAddress, pd.email);
String actualName = user.getHttpPrincipal().getName();
......@@ -466,7 +462,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
/**
* Test of getUserByEmailAddress method, of class LdapUserDAO.
*/
// @Test
@Test
public void testGetUserByEmailAddress() throws Exception
{
// create a user with the email attribute
......@@ -480,30 +476,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
{
// case 1: only one user matches the email address
testGetOneUserByEmailAddress(emailAddress, username);
// create another user with the same email attribute
final String username1 = createUsername();
final HttpPrincipal userID1 = new HttpPrincipal(username1);
final UserRequest userRequest1 = createUserRequest(userID1, emailAddress);
addUser(userID1, userRequest1);
try
{
// case 2: two users match the email address
testGetOneUserByEmailAddress(emailAddress, username);
}
catch (PrivilegedActionException pae)
{
Exception e = pae.getException();
Throwable t = e.getCause();
assertTrue(e.getCause() instanceof UserAlreadyExistsException);
assertTrue(e.getCause().getMessage().contains(LdapUserDAO.EMAIL_ADDRESS_CONFLICT_MESSAGE));
}
finally
{
deleteUser(userID1);
}
}
}
finally
{
deleteUser(userID);
......@@ -511,7 +484,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
}
// @Test
@Test
public void testGetPendingUser() throws Exception
{
final String userRequestDN = "uid=CADCtestRequest,ou=userrequests,ou=ds,dc=testcanfar";
......@@ -521,10 +494,9 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
final DNPrincipal dnPrincipal = new DNPrincipal(userRequestDN);
final User pendingUser = new User();
pendingUser.personalDetails = new PersonalDetails("CADCtest", "Request");
pendingUser.getIdentities().add(httpPrincipal);
pendingUser.getIdentities().add(x500Principal);
pendingUser.getIdentities().add(dnPrincipal);
final Subject subject = new Subject();
subject.getPrincipals().add(httpPrincipal);
......@@ -553,19 +525,15 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
// TODO testGetUser for a user that doesn't exist
// @Test
@Test
public void testApproveUser() throws Exception
{
String username = createUsername();
final HttpPrincipal httpPrincipal = new HttpPrincipal(username);
final X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
final NumericPrincipal numericPrincipal = new NumericPrincipal(UUID.randomUUID());
final User expected = new User();
expected.getIdentities().add(httpPrincipal);
expected.getIdentities().add(x500Principal);
expected.getIdentities().add(numericPrincipal);
expected.personalDetails = new PersonalDetails("foo", "bar");
expected.personalDetails.email = username + "@canada.ca";
......@@ -612,7 +580,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
}
// @Test
@Test
public void testUpdateUser() throws Exception
{
// Create a test user
......@@ -620,12 +588,10 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
final String username = createUsername();
final char[] password = "foo".toCharArray();
HttpPrincipal httpPrincipal = new HttpPrincipal(username);
final HttpPrincipal httpPrincipal = new HttpPrincipal(username);
testUser = new User();
testUser.getIdentities().add(httpPrincipal);
UUID uuid = UUID.randomUUID();
testUser.getIdentities().add(new NumericPrincipal(uuid));
testUser.personalDetails = new PersonalDetails("firstName", "lastName");
final UserRequest userRequest = new UserRequest(testUser, password);
......@@ -633,15 +599,16 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
Subject subject = new Subject();
subject.getPrincipals().add(httpPrincipal);
subject.getPrincipals().add(cadcdaotest2Principal);
Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
final User newUser = (User) Subject.doAs(subject, new PrivilegedExceptionAction<Object>()
{
public Object run()
public User run()
throws Exception
{
try
{
final LdapUserDAO userDAO = getUserDAO();
userDAO.addUser(userRequest);
return userDAO.getUser(httpPrincipal);
}
catch (Exception e)
{
......@@ -652,14 +619,14 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
// update the user
testUser.personalDetails.email = "email2";
testUser.personalDetails.address = "address2";
testUser.personalDetails.institute = "institute2";
testUser.personalDetails.city = "city2";
testUser.personalDetails.country = "country2";
newUser.personalDetails.email = "email2";
newUser.personalDetails.address = "address2";
newUser.personalDetails.institute = "institute2";
newUser.personalDetails.city = "city2";
newUser.personalDetails.country = "country2";
// add a DN
testUser.getIdentities().add(new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca"));
// newUser.getIdentities().add(new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca"));
// update the userexpected
subject.getPrincipals().add(httpPrincipal);
......@@ -672,7 +639,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
try
{
final LdapUserDAO userDAO = getUserDAO();
return userDAO.modifyUser(testUser);
return userDAO.modifyUser(newUser);
}
catch (Exception e)
{
......@@ -691,17 +658,17 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
/**
* Test of deleteUser method, of class LdapUserDAO.
*/
// @Test
@Test
public void deleteUser() throws Exception
{
String userID = createUsername();
HttpPrincipal httpPrincipal = new HttpPrincipal(userID);
X500Principal x500Principal = new X500Principal("cn=" + userID + ",ou=cadc,o=hia,c=ca");
// X500Principal x500Principal = new X500Principal("cn=" + userID + ",ou=cadc,o=hia,c=ca");
final User expected = new User();
expected.getIdentities().add(httpPrincipal);
expected.getIdentities().add(x500Principal);
// expected.getIdentities().add(x500Principal);
expected.personalDetails = new PersonalDetails("foo", "bar");
final UserRequest userRequest = new UserRequest(expected, "123456".toCharArray());
......@@ -736,17 +703,17 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
/**
* Test of deletePendingUser method, of class LdapUserDAO.
*/
// @Test
@Test
public void deletePendingUser() throws Exception
{
String userID = createUsername();
HttpPrincipal httpPrincipal = new HttpPrincipal(userID);
X500Principal x500Principal = new X500Principal("cn=" + userID + ",ou=cadc,o=hia,c=ca");
// X500Principal x500Principal = new X500Principal("cn=" + userID + ",ou=cadc,o=hia,c=ca");
final User expected = new User();
expected.getIdentities().add(httpPrincipal);
expected.getIdentities().add(x500Principal);
// expected.getIdentities().add(x500Principal);
expected.personalDetails = new PersonalDetails("foo", "bar");
expected.personalDetails.email = userID + "@canada.ca";
......@@ -831,7 +798,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
}
// @Test
@Test
public void testGetUsers() throws Exception
{
// authenticated access
......@@ -860,7 +827,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
}
// @Test
@Test
public void testGetPendingUsers() throws Exception
{
// authenticated access
......@@ -889,20 +856,16 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest
});
}
// @Test
@Test
public void testDoLogin() throws Exception
{
final String username = createUsername();
final String password = "123456";
HttpPrincipal httpPrincipal = new HttpPrincipal(username);
X500Principal x500Principal = new X500Principal("cn=" + username + ",ou=cadc,o=hia,c=ca");
NumericPrincipal numericPrincipal = new NumericPrincipal(UUID.randomUUID());
final User expected = new User();
expected.getIdentities().add(httpPrincipal);
expected.getIdentities().add(x500Principal);
expected.getIdentities().add(numericPrincipal);
expected.personalDetails = new PersonalDetails("foo", "bar");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment