Loading cadcAccessControl-Server/test/LdapConfig.test.properties +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ # 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 # Default keystore password is: changeit readOnly.servers = proc5-03.cadc.dao.nrc.ca readOnly.poolInitSize = 1 readOnly.poolMaxSize = 1 Loading cadcAccessControl/src/ca/nrc/cadc/ac/User.java +68 −6 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ */ package ca.nrc.cadc.ac; import ca.nrc.cadc.auth.HttpPrincipal; import java.security.Principal; import java.util.Comparator; import java.util.Date; Loading @@ -75,8 +77,6 @@ import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import ca.nrc.cadc.auth.HttpPrincipal; public class User { private InternalID id; Loading Loading @@ -141,6 +141,39 @@ public class User return null; } /** * A User is considered consistent if the User's set of identities are a superset * of this Users set of identities. * * @param other * @return */ public boolean isConsistent(final User other) { if (other == null) { return false; } for (Principal identity: getIdentities()) { boolean found = false; for (Principal op: other.getIdentities()) { if (op == identity) { found = true; break; } } if (!found) { return false; } } return true; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ Loading @@ -153,6 +186,13 @@ public class User { result = prime * result + id.hashCode(); } else { for (Principal principal : getIdentities()) { result = prime * result + principal.hashCode(); } } return result; } Loading @@ -175,6 +215,15 @@ public class User return false; } User other = (User) obj; if (this.id == null && other.id == null) { return isConsistent(other); } if ((this.id == null && other.id != null) || (this.id != null && other.id == null)) { return false; } if (id.equals(other.id)) { return true; Loading @@ -201,18 +250,31 @@ public class User @Override public int compare(Principal o1, Principal o2) { if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) int ret = -1; if (o1 == null && o2 == null) { ret = 0; } else if (o1 == null && o2 != null) { ret = 1; } else if (o1 != null && o2 == null) { ret = -1; } else if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) { return 0; ret = 0; } else if (o1.getClass() == o2.getClass()) { if (o1.getName().equals(o2.getName())) { return 0; ret = 0; } } return -1; return ret; } } Loading cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java +90 −6 Original line number Diff line number Diff line Loading @@ -88,18 +88,102 @@ public class UserTest private static Logger log = Logger.getLogger(UserTest.class); @Test public void simpleEqualityTests() throws Exception public void isConsistentTest() throws Exception { User user1 = new User(); User user2 = null; assertFalse(user1.isConsistent(user2)); user2 = new User(); assertTrue(user1.isConsistent(user2)); HttpPrincipal httpPrincipal = new HttpPrincipal("foo"); user1.getIdentities().add(httpPrincipal); assertFalse(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); user2.getIdentities().add(httpPrincipal); assertTrue(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bar,c=foo"); user1.getIdentities().add(x500Principal1); assertFalse(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); user2.getIdentities().add(x500Principal2); assertFalse(user1.isConsistent(user2)); assertFalse(user2.isConsistent(user1)); user2.getIdentities().add(x500Principal1); assertTrue(user1.isConsistent(user2)); assertFalse(user2.isConsistent(user1)); user1.getIdentities().add(x500Principal2); assertTrue(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); } @Test public void simpleEqualityTests() throws Exception { User user1 = new User(); User user2 = new User(); assertEquals(user1, user2); assertEquals(user1.hashCode(), user2.hashCode()); // set InternalID URI uri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID = new InternalID(uri); TestUtil.setInternalID(user1, internalID); assertEquals(user1.getID(), internalID); URI uri1 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID1 = new InternalID(uri1); TestUtil.setInternalID(user1, internalID1); assertFalse(user1.equals(user2)); URI uri2 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID2 = new InternalID(uri2); TestUtil.setInternalID(user2, internalID2); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user1 = new User(); user2 = new User(); HttpPrincipal httpPrincipal1 = new HttpPrincipal("foo"); user1.getIdentities().add(httpPrincipal1); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(httpPrincipal1); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); HttpPrincipal httpPrincipal2 = new HttpPrincipal("bar"); user1.getIdentities().add(httpPrincipal2); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bart,c=foo"); user1.getIdentities().add(x500Principal1); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(x500Principal1); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); user1.getIdentities().add(x500Principal2); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(x500Principal2); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); User user2 = user1; assertEquals(user1, user2); assertEquals(user1.hashCode(), user2.hashCode()); Loading Loading
cadcAccessControl-Server/test/LdapConfig.test.properties +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ # 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 # Default keystore password is: changeit readOnly.servers = proc5-03.cadc.dao.nrc.ca readOnly.poolInitSize = 1 readOnly.poolMaxSize = 1 Loading
cadcAccessControl/src/ca/nrc/cadc/ac/User.java +68 −6 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ */ package ca.nrc.cadc.ac; import ca.nrc.cadc.auth.HttpPrincipal; import java.security.Principal; import java.util.Comparator; import java.util.Date; Loading @@ -75,8 +77,6 @@ import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import ca.nrc.cadc.auth.HttpPrincipal; public class User { private InternalID id; Loading Loading @@ -141,6 +141,39 @@ public class User return null; } /** * A User is considered consistent if the User's set of identities are a superset * of this Users set of identities. * * @param other * @return */ public boolean isConsistent(final User other) { if (other == null) { return false; } for (Principal identity: getIdentities()) { boolean found = false; for (Principal op: other.getIdentities()) { if (op == identity) { found = true; break; } } if (!found) { return false; } } return true; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ Loading @@ -153,6 +186,13 @@ public class User { result = prime * result + id.hashCode(); } else { for (Principal principal : getIdentities()) { result = prime * result + principal.hashCode(); } } return result; } Loading @@ -175,6 +215,15 @@ public class User return false; } User other = (User) obj; if (this.id == null && other.id == null) { return isConsistent(other); } if ((this.id == null && other.id != null) || (this.id != null && other.id == null)) { return false; } if (id.equals(other.id)) { return true; Loading @@ -201,18 +250,31 @@ public class User @Override public int compare(Principal o1, Principal o2) { if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) int ret = -1; if (o1 == null && o2 == null) { ret = 0; } else if (o1 == null && o2 != null) { ret = 1; } else if (o1 != null && o2 == null) { ret = -1; } else if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) { return 0; ret = 0; } else if (o1.getClass() == o2.getClass()) { if (o1.getName().equals(o2.getName())) { return 0; ret = 0; } } return -1; return ret; } } Loading
cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java +90 −6 Original line number Diff line number Diff line Loading @@ -88,18 +88,102 @@ public class UserTest private static Logger log = Logger.getLogger(UserTest.class); @Test public void simpleEqualityTests() throws Exception public void isConsistentTest() throws Exception { User user1 = new User(); User user2 = null; assertFalse(user1.isConsistent(user2)); user2 = new User(); assertTrue(user1.isConsistent(user2)); HttpPrincipal httpPrincipal = new HttpPrincipal("foo"); user1.getIdentities().add(httpPrincipal); assertFalse(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); user2.getIdentities().add(httpPrincipal); assertTrue(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bar,c=foo"); user1.getIdentities().add(x500Principal1); assertFalse(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); user2.getIdentities().add(x500Principal2); assertFalse(user1.isConsistent(user2)); assertFalse(user2.isConsistent(user1)); user2.getIdentities().add(x500Principal1); assertTrue(user1.isConsistent(user2)); assertFalse(user2.isConsistent(user1)); user1.getIdentities().add(x500Principal2); assertTrue(user1.isConsistent(user2)); assertTrue(user2.isConsistent(user1)); } @Test public void simpleEqualityTests() throws Exception { User user1 = new User(); User user2 = new User(); assertEquals(user1, user2); assertEquals(user1.hashCode(), user2.hashCode()); // set InternalID URI uri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID = new InternalID(uri); TestUtil.setInternalID(user1, internalID); assertEquals(user1.getID(), internalID); URI uri1 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID1 = new InternalID(uri1); TestUtil.setInternalID(user1, internalID1); assertFalse(user1.equals(user2)); URI uri2 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()); InternalID internalID2 = new InternalID(uri2); TestUtil.setInternalID(user2, internalID2); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user1 = new User(); user2 = new User(); HttpPrincipal httpPrincipal1 = new HttpPrincipal("foo"); user1.getIdentities().add(httpPrincipal1); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(httpPrincipal1); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); HttpPrincipal httpPrincipal2 = new HttpPrincipal("bar"); user1.getIdentities().add(httpPrincipal2); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bart,c=foo"); user1.getIdentities().add(x500Principal1); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(x500Principal1); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); user1.getIdentities().add(x500Principal2); assertFalse(user1.equals(user2)); assertFalse(user1.hashCode() == user2.hashCode()); user2.getIdentities().add(x500Principal2); assertTrue(user1.equals(user2)); assertEquals(user1.hashCode(), user2.hashCode()); User user2 = user1; assertEquals(user1, user2); assertEquals(user1.hashCode(), user2.hashCode()); Loading