From 6b2786a867db4e207772f12cb3b46b77c86797a8 Mon Sep 17 00:00:00 2001 From: Dustin Jenkins <Dustin.Jenkins@nrc-cnrc.gc.ca> Date: Fri, 24 Jul 2015 13:28:40 -0700 Subject: [PATCH] AC2: Fix tests. --- .../test/LdapConfig.test.properties | 14 +- .../cadc/ac/server/ldap/LdapUserDAOTest.java | 144 ++++++++++-------- 2 files changed, 88 insertions(+), 70 deletions(-) diff --git a/projects/cadcAccessControl-Server/test/LdapConfig.test.properties b/projects/cadcAccessControl-Server/test/LdapConfig.test.properties index 2354a157..0612a33b 100644 --- a/projects/cadcAccessControl-Server/test/LdapConfig.test.properties +++ b/projects/cadcAccessControl-Server/test/LdapConfig.test.properties @@ -1,9 +1,13 @@ # This are the configuration fields required by the Ldap ldap-dao unit tests +# Tests are more accurate running on Port 636. If it fails due to SSL/Security +# issues, then make very sure the ca.crt (gimli2.cadc.dao.nrc.ca:~miscsw/ca.crt) +# is installed in your Java Keystore: +# scp gimli2.cadc.dao.nrc.ca:~miscsw/ca.crt /tmp/ca.crt +# ${JAVA_HOME}/bin/keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file /tmp/ca.crt server = proc5-03.cadc.dao.nrc.ca port = 636 -proxyUser = webproxy -usersDn = ou=Users,ou=ds,dc=canfar,dc=net +proxyUser = testproxy +usersDn = ou=Users,ou=ds,dc=testcanfar userRequestsDN = ou=UserRequests,ou=ds,dc=testcanfar -newUsersDn = ou=NewUsers,ou=ds,dc=canfar,dc=net -groupsDn = ou=Groups,ou=ds,dc=canfar,dc=net -adminGroupsDn = ou=adminGroups,ou=ds,dc=canfar,dc=net \ No newline at end of file +groupsDn = ou=Groups,ou=ds,dc=testcanfar +adminGroupsDn = ou=adminGroups,ou=ds,dc=testcanfar \ No newline at end of file diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java index aa47a309..c6ca5b82 100644 --- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java +++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAOTest.java @@ -97,10 +97,10 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest static String testUserDN; static User<X500Principal> testUser; static LdapConfig config; - + @BeforeClass public static void setUpBeforeClass() - throws Exception + throws Exception { Log4jInit.setLevel("ca.nrc.cadc.ac", Level.DEBUG); @@ -118,12 +118,12 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest { return new LdapUserDAO(config); } - + String getUserID() { return "CadcDaoTestUser-" + System.currentTimeMillis(); } - + /** * Test of addUser method, of class LdapUserDAO. */ @@ -143,7 +143,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest User<HttpPrincipal> actual = getUserDAO().addUser(userRequest); check(expected, actual); } - + /** * Test of getUser method, of class LdapUserDAO. */ @@ -160,9 +160,10 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest { try { - User<X500Principal> actual = getUserDAO().getUser(testUser.getUserID()); + User<X500Principal> actual = getUserDAO() + .getUser(testUser.getUserID()); check(testUser, actual); - + return null; } catch (Exception e) @@ -189,19 +190,25 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest public Object run() throws Exception { try - { - Collection<DN> groups = getUserDAO().getUserGroups(testUser.getUserID(), false); - assertNotNull(groups); - assertTrue(!groups.isEmpty()); + { + Collection<DN> groups = + getUserDAO().getUserGroups(testUser.getUserID(), + false); + assertNotNull("Groups should not be null.", groups); + for (DN groupDN : groups) + { log.debug(groupDN); - - groups = getUserDAO().getUserGroups(testUser.getUserID(), true); - assertNotNull(groups); - assertTrue(!groups.isEmpty()); + } + + groups = getUserDAO().getUserGroups(testUser.getUserID(), + true); + assertNotNull("Groups should not be null.", groups); for (DN groupDN : groups) + { log.debug(groupDN); - + } + return null; } catch (Exception e) @@ -211,7 +218,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } }); } - + /** * Test of getUserGroups method, of class LdapUserDAO. */ @@ -227,14 +234,17 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest public Object run() throws Exception { try - { - boolean isMember = getUserDAO().isMember(testUser.getUserID(), "foo"); - assertFalse(isMember); - - String groupDN = "cn=cadcdaotestgroup1," + config.getGroupsDN(); - isMember = getUserDAO().isMember(testUser.getUserID(), groupDN); - assertTrue(isMember); - + { + boolean isMember = + getUserDAO().isMember(testUser.getUserID(), "foo"); + assertFalse("Membership should not exist.", isMember); + + String groupDN = "cn=cadcdaotestgroup1," + + config.getGroupsDN(); + isMember = getUserDAO().isMember(testUser.getUserID(), + groupDN); + assertTrue("Membership should exist.", isMember); + return null; } catch (Exception e) @@ -244,7 +254,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } }); } - + /** * Test of getMember. */ @@ -260,8 +270,9 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest public Object run() throws Exception { try - { - User<X500Principal> actual = getUserDAO().getMember(new DN(testUserDN)); + { + User<X500Principal> actual = getUserDAO() + .getMember(new DN(testUserDN)); check(testUser, actual); return null; } @@ -271,7 +282,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } } }); - + // should also work as a different user subject = new Subject(); subject.getPrincipals().add(new HttpPrincipal("CadcDaoTest2")); @@ -282,19 +293,20 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest public Object run() throws Exception { try - { - User<X500Principal> actual = getUserDAO().getMember(new DN(testUserDN)); + { + User<X500Principal> actual = getUserDAO() + .getMember(new DN(testUserDN)); check(testUser, actual); return null; } catch (Exception e) { throw new Exception("Problems", e); - } + } } }); } - + /** * Test of testGetCadcUserIDs. */ @@ -302,36 +314,38 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest public void testGetCadcUserIDs() throws Exception { Subject subject = new Subject(); - - + + // anonymous access - int users1 = (Integer)Subject.doAs(subject, new PrivilegedExceptionAction<Object>() - { - public Object run() throws Exception - { - try - { - - int count = getUserDAO().getCadcIDs().size(); - assertTrue(count > 0); - return count; - } - catch (Exception e) + int users1 = (Integer) Subject + .doAs(subject, new PrivilegedExceptionAction<Object>() { - throw new Exception("Problems", e); - } - } - }); - + public Object run() throws Exception + { + try + { + + int count = getUserDAO().getCadcIDs().size(); + assertTrue(count > 0); + return count; + } + catch (Exception e) + { + throw new Exception("Problems", e); + } + } + }); + // authenticated access subject.getPrincipals().add(testUser.getUserID()); - int users2 = (Integer)Subject.doAs(subject, new PrivilegedExceptionAction<Object>() + int users2 = (Integer) Subject + .doAs(subject, new PrivilegedExceptionAction<Object>() { public Object run() throws Exception { try - { - + { + int count = getUserDAO().getCadcIDs().size(); assertTrue(count > 0); return count; @@ -343,27 +357,27 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } }); assertEquals("User listing should be independent of the access type", - users1, users2); + users1, users2); } - + private static void check(final User<? extends Principal> user1, final User<? extends Principal> user2) { assertEquals(user1, user2); assertEquals(user1.details, user2.details); assertEquals(user1.details.size(), user2.details.size()); assertEquals(user1.getIdentities(), user2.getIdentities()); - for(UserDetails d1 : user1.details) + for (UserDetails d1 : user1.details) { assertTrue(user2.details.contains(d1)); - if(d1 instanceof PersonalDetails) + if (d1 instanceof PersonalDetails) { - PersonalDetails pd1 = (PersonalDetails)d1; + PersonalDetails pd1 = (PersonalDetails) d1; boolean found = false; - for(UserDetails d2 : user2.details) + for (UserDetails d2 : user2.details) { - if(d2 instanceof PersonalDetails) + if (d2 instanceof PersonalDetails) { - PersonalDetails pd2 = (PersonalDetails)d2; + PersonalDetails pd2 = (PersonalDetails) d2; assertEquals(pd1, pd2); // already done in contains above but just in case assertEquals(pd1.address, pd2.address); assertEquals(pd1.city, pd2.city); @@ -376,7 +390,7 @@ public class LdapUserDAOTest extends AbstractLdapDAOTest } } } - + } - + } -- GitLab