Skip to content
Snippets Groups Projects
Commit 8059e1d5 authored by Brian Major's avatar Brian Major
Browse files

s1890 - changes to user equality logic

parent c0599ed9
No related branches found
No related tags found
No related merge requests found
Showing
with 343 additions and 258 deletions
......@@ -69,6 +69,7 @@
package ca.nrc.cadc.ac.server.web.groups;
import java.io.InputStream;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
......@@ -107,7 +108,12 @@ public class CreateGroupAction extends AbstractGroupAction
}
for (User usr : group.getUserMembers())
{
addedMembers.add(usr.getX500Principal().getName());
Principal p = usr.getHttpPrincipal();
if (p == null)
{
p = usr.getX500Principal();
}
addedMembers.add(p.getName());
}
}
logGroupInfo(group.getID(), null, addedMembers);
......
......@@ -67,23 +67,25 @@
package ca.nrc.cadc.ac.server.ldap;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupNotFoundException;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.User;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import javax.security.auth.Subject;
import java.security.Principal;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import javax.security.auth.Subject;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupNotFoundException;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.User;
public class LdapGroupDAOTest extends AbstractLdapDAOTest
{
......@@ -156,7 +158,7 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
expectGroup.getUserMembers().add(cadcDaoTest2_User);
expectGroup.getUserMembers().add(duplicateIdentity);
actualGroup = getGroupDAO().modifyGroup(expectGroup);
expectGroup.getUserMembers().remove(duplicateIdentity);
//expectGroup.getUserMembers().remove(duplicateIdentity);
assertGroupsEqual(expectGroup, actualGroup);
expectGroup.getUserMembers().remove(cadcDaoTest2_User);
......@@ -205,7 +207,7 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
expectGroup.getUserAdmins().add(cadcDaoTest2_User);
expectGroup.getUserAdmins().add(duplicateIdentity);
actualGroup = getGroupDAO().modifyGroup(expectGroup);
expectGroup.getUserAdmins().remove(duplicateIdentity);
//expectGroup.getUserAdmins().remove(duplicateIdentity);
assertGroupsEqual(expectGroup, actualGroup);
// delete the group
......@@ -443,9 +445,8 @@ public class LdapGroupDAOTest extends AbstractLdapDAOTest
assertTrue(gr2.getGroupMembers().contains(gr));
}
assertEquals(gr1.getUserMembers().size(), gr2.getUserMembers().size());
assertEquals(gr1.getUserMembers(), gr2.getUserMembers());
assertEquals(gr1.getUserMembers().size(), gr2.getUserMembers()
.size());
for (User user : gr1.getUserMembers())
{
assertTrue(gr2.getUserMembers().contains(user));
......
......@@ -71,6 +71,7 @@ package ca.nrc.cadc.ac;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Group
{
......@@ -82,13 +83,13 @@ public class Group
protected Set<GroupProperty> properties = new HashSet<GroupProperty>();
// group's user members
private Set<User> userMembers = new HashSet<User>();
private Set<User> userMembers = new TreeSet<User>();
// group's group members
private Set<Group> groupMembers = new HashSet<Group>();
// group's user admins
private Set<User> userAdmins = new HashSet<User>();
private Set<User> userAdmins = new TreeSet<User>();
// group's group admins
private Set<Group> groupAdmins = new HashSet<Group>();
......
......@@ -94,10 +94,46 @@ public class InternalID
throw new IllegalArgumentException("uri is null");
}
if (uri.getFragment() != null)
{
throw new IllegalArgumentException("fragment not allowed");
}
this.uri = uri;
uuid = UUID.fromString(uri.getQuery());
}
/**
* Ctor
* @param uri unique identifier
* @param id The uuid of the identifier
*/
public InternalID(URI uri, UUID id)
{
if (uri == null)
{
throw new IllegalArgumentException("uri is null");
}
if (id == null)
{
throw new IllegalArgumentException("id is null");
}
if (uri.getQuery() != null)
{
throw new IllegalArgumentException("query not allowed in base uri");
}
if (uri.getFragment() != null)
{
throw new IllegalArgumentException("fragment not allowed");
}
this.uri = URI.create(uri.toASCIIString() + "?" + id.toString());
this.uuid = id;
}
public URI getURI()
{
return uri;
......
......@@ -68,25 +68,23 @@
*/
package ca.nrc.cadc.ac;
import java.io.PrintWriter;
import java.security.Principal;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import ca.nrc.cadc.auth.HttpPrincipal;
import javax.security.auth.x500.X500Principal;
public class User
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.HttpPrincipal;
public class User implements Comparable<User>
{
// How on God's green earth is this used? Where is it set?
// jenkinsd 2016.03.24
private InternalID id;
private Set<Principal> identities = new TreeSet<Principal>(new PrincipalComparator());
private SortedSet<Principal> identities = new TreeSet<Principal>(new PrincipalComparator());
public PersonalDetails personalDetails;
public PosixDetails posixDetails;
......@@ -120,15 +118,12 @@ public class User
*/
public <S extends Principal> Set<S> getIdentities(final Class<S> identityClass)
{
final Set<S> matchedIdentities = new HashSet<S>();
final Set<S> matchedIdentities = new TreeSet<S>(new PrincipalComparator());
for (final Principal p : identities)
{
if (p.getClass() == identityClass)
if (identityClass.isAssignableFrom(p.getClass()))
{
// This casting shouldn't happen, but it's the only way to
// do this without a lot of work.
// jenkinsd 2014.09.26
matchedIdentities.add((S) p);
}
}
......@@ -146,11 +141,18 @@ public class User
return null;
}
/**
* @deprecated
*/
public X500Principal getX500Principal()
{
final Set<X500Principal> identities =
getIdentities(X500Principal.class);
return identities.isEmpty() ? null : identities.iterator().next();
if (!identities.isEmpty())
{
return identities.iterator().next();
}
return null;
}
......@@ -158,90 +160,104 @@ public class User
* A User is considered consistent if the User's set of identities are a superset
* of this Users set of identities.
*
* @param other
* @param superset
* @return
*/
public boolean isConsistent(final User other)
public boolean isConsistent(final User superset)
{
if (other == null)
if (superset == null)
{
return false;
}
for (Principal identity: getIdentities())
{
boolean found = false;
for (Principal op: other.getIdentities())
{
if (op.equals(identity))
{
found = true;
break;
}
}
if (!found)
if (this.identities.isEmpty() || superset.identities.isEmpty())
{
return false;
}
}
return true;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode()
{
int prime = 31;
int result = 1;
if (id != null)
{
result = prime * result + id.hashCode();
}
else
{
for (Principal principal : getIdentities())
{
result = prime * result + principal.hashCode();
}
}
return result;
return superset.getIdentities().containsAll(this.getIdentities());
// // could be improved because both sets are ordered
// for (Principal identity: getIdentities())
// {
// boolean found = false;
// for (Principal op: superset.getIdentities())
// {
// if (AuthenticationUtil.equals(op, identity))
// {
// found = true;
// break;
// }
// }
// if (!found)
// {
// return false;
// }
// }
// return true;
}
// /* (non-Javadoc)
// * @see java.lang.Object#hashCode()
// */
// @Override
// public int hashCode()
// {
// int prime = 31;
// int result = 1;
// if (id != null)
// {
// result = prime * result + id.hashCode();
// }
// else
// {
// for (Principal principal : getIdentities())
// {
// result = prime * result + principal.hashCode();
// }
// }
// return result;
// }
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (obj == null)
{
return false;
}
if (!(obj instanceof 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))
if (obj instanceof User)
{
return true;
User user = (User) obj;
return (this.isConsistent(user) || user.isConsistent(this));
}
return false;
// if (this == obj)
// {
// return true;
// }
// if (obj == null)
// {
// return false;
// }
// if (!(obj instanceof 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;
// }
// return false;
}
@Override
......@@ -263,32 +279,42 @@ public class User
@Override
public int compare(Principal o1, Principal o2)
{
int ret = -1;
if (o1 == null && o2 == null)
if (o1 == null || o2 == null)
{
ret = 0;
throw new IllegalArgumentException("Cannot compare null objects");
}
else if (o1 == null && o2 != null)
if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal)
{
ret = 1;
return 0;
}
else if (o1 != null && o2 == null)
{
ret = -1;
return AuthenticationUtil.compare(o1, o2);
}
else if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal)
{
ret = 0;
}
else if (o1.getClass() == o2.getClass())
@Override
public int compareTo(User other)
{
if (o1.getName().equals(o2.getName()))
if (other == null)
{
ret = 0;
throw new IllegalArgumentException("Cannot compare null objects");
}
if (this.getIdentities().isEmpty() || other.getIdentities().isEmpty())
{
throw new IllegalArgumentException("Users need identities for comparison.");
}
return ret;
if (this.isConsistent(other) || other.isConsistent(this))
{
return 0;
}
// compare the first pricipals in the order set
Principal p1 = this.getIdentities().iterator().next();
Principal p2 = other.getIdentities().iterator().next();
return AuthenticationUtil.compare(p1, p2);
}
}
......@@ -68,13 +68,14 @@
*/
package ca.nrc.cadc.ac;
import org.apache.log4j.Logger;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.apache.log4j.Logger;
import org.junit.Test;
import ca.nrc.cadc.auth.HttpPrincipal;
public class GroupTest
{
......@@ -90,6 +91,7 @@ public class GroupTest
Group group3 = new Group("TestGroup");
User user = new User();
user.getIdentities().add(new HttpPrincipal("foo"));
group3.getUserMembers().add(user);
assertEquals(1, group3.getUserMembers().size());
......
......@@ -69,21 +69,21 @@
package ca.nrc.cadc.ac;
import ca.nrc.cadc.ac.xml.AbstractReaderWriter;
import ca.nrc.cadc.auth.DNPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.NumericPrincipal;
import org.apache.log4j.Logger;
import org.junit.Test;
import javax.security.auth.x500.X500Principal;
import java.net.URI;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.UUID;
import javax.security.auth.x500.X500Principal;
import org.apache.log4j.Logger;
import org.junit.Test;
import ca.nrc.cadc.auth.DNPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.NumericPrincipal;
public class UserTest
{
private static Logger log = Logger.getLogger(UserTest.class);
......@@ -97,12 +97,12 @@ public class UserTest
assertFalse(user1.isConsistent(user2));
user2 = new User();
assertTrue(user1.isConsistent(user2));
//assertTrue(user1.isConsistent(user2));
HttpPrincipal httpPrincipal = new HttpPrincipal("foo");
user1.getIdentities().add(httpPrincipal);
assertFalse(user1.isConsistent(user2));
assertTrue(user2.isConsistent(user1));
assertFalse(user2.isConsistent(user1));
user2.getIdentities().add(httpPrincipal);
assertTrue(user1.isConsistent(user2));
......@@ -134,20 +134,19 @@ public class UserTest
User user1 = new User();
User user2 = new User();
assertEquals(user1, user2);
assertEquals(user1.hashCode(), user2.hashCode());
//assertEquals(user1, user2);
//assertEquals(user1.hashCode(), user2.hashCode());
// set InternalID
URI uri1 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
InternalID internalID1 = new InternalID(uri1);
TestUtil.setField(user1, internalID1, AbstractReaderWriter.ID);
assertFalse(user1.equals(user2));
URI uri2 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
InternalID internalID2 = new InternalID(uri2);
TestUtil.setField(user2, internalID2, AbstractReaderWriter.ID);
assertFalse(user1.equals(user2));
assertFalse(user1.hashCode() == user2.hashCode());
// URI uri1 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
// InternalID internalID1 = new InternalID(uri1);
// TestUtil.setField(user1, internalID1, AbstractReaderWriter.ID);
//
// URI uri2 = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
// InternalID internalID2 = new InternalID(uri2);
// TestUtil.setField(user2, internalID2, AbstractReaderWriter.ID);
// assertFalse(user1.equals(user2));
// assertFalse(user1.hashCode() == user2.hashCode());
user1 = new User();
user2 = new User();
......@@ -155,46 +154,46 @@ public class UserTest
HttpPrincipal httpPrincipal1 = new HttpPrincipal("foo");
user1.getIdentities().add(httpPrincipal1);
assertFalse(user1.equals(user2));
assertFalse(user1.hashCode() == user2.hashCode());
//assertFalse(user1.hashCode() == user2.hashCode());
user2.getIdentities().add(httpPrincipal1);
assertTrue(user1.equals(user2));
assertEquals(user1.hashCode(), user2.hashCode());
//assertEquals(user1.hashCode(), user2.hashCode());
HttpPrincipal httpPrincipal2 = new HttpPrincipal("bar");
user1.getIdentities().add(httpPrincipal2);
assertFalse(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());
assertEquals(user1, user2);
assertEquals(user1.hashCode(), user2.hashCode());
//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());
//
// assertEquals(user1, user2);
// //assertEquals(user1.hashCode(), user2.hashCode());
user1.personalDetails = new PersonalDetails("Joe", "Raymond");
assertEquals(user1, user2);
assertEquals(user1.hashCode(), user2.hashCode());
//assertEquals(user1.hashCode(), user2.hashCode());
user1.posixDetails = new PosixDetails("jray", 12, 23, "/home/jray");
assertEquals(user1, user2);
assertEquals(user1.hashCode(), user2.hashCode());
//assertEquals(user1.hashCode(), user2.hashCode());
}
@Test
......
......@@ -68,22 +68,11 @@
*/
package ca.nrc.cadc.ac.json;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.PosixDetails;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import ca.nrc.cadc.ac.xml.AbstractReaderWriter;
import ca.nrc.cadc.util.Log4jInit;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import javax.security.auth.x500.X500Principal;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
......@@ -95,10 +84,24 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import javax.security.auth.x500.X500Principal;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.PosixDetails;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import ca.nrc.cadc.ac.xml.AbstractReaderWriter;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.util.Log4jInit;
/**
* @author jburke
......@@ -214,10 +217,12 @@ public class JsonGroupReaderWriterTest
Group groupMember = new Group("member");
User userMember = new User();
userMember.getIdentities().add(new HttpPrincipal("foo"));
URI memberUri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
TestUtil.setField(userMember, new InternalID(memberUri), AbstractReaderWriter.ID);
Group groupAdmin = new Group("admin");
User userAdmin = new User();
userAdmin.getIdentities().add(new HttpPrincipal("bar"));
URI adminUri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
TestUtil.setField(userAdmin, new InternalID(adminUri), AbstractReaderWriter.ID);
......
......@@ -68,18 +68,11 @@
*/
package ca.nrc.cadc.ac.xml;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.PosixDetails;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import org.apache.log4j.Logger;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import javax.security.auth.x500.X500Principal;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
......@@ -88,10 +81,20 @@ import java.net.URI;
import java.util.Date;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import javax.security.auth.x500.X500Principal;
import org.apache.log4j.Logger;
import org.junit.Test;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.ac.GroupProperty;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.PosixDetails;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import ca.nrc.cadc.auth.HttpPrincipal;
/**
*
......@@ -187,11 +190,13 @@ public class GroupReaderWriterTest
Group groupMember = new Group("member");
User userMember = new User();
userMember.getIdentities().add(new HttpPrincipal("foo"));
URI memberUri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
TestUtil.setField(userMember, new InternalID(memberUri), AbstractReaderWriter.ID);
Group groupAdmin = new Group("admin");
User userAdmin = new User();
userAdmin.getIdentities().add(new HttpPrincipal("bar"));
URI adminUri = new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID());
TestUtil.setField(userAdmin, new InternalID(adminUri), AbstractReaderWriter.ID);
......
package ca.nrc.cadc.ac.xml;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import org.apache.log4j.Logger;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.io.InputStream;
......@@ -15,10 +13,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import org.apache.log4j.Logger;
import org.junit.Test;
import ca.nrc.cadc.ac.InternalID;
import ca.nrc.cadc.ac.TestUtil;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.WriterException;
import ca.nrc.cadc.auth.HttpPrincipal;
public class UserListReaderWriterTest
{
......@@ -76,11 +78,13 @@ public class UserListReaderWriterTest
List<User> expected = new ArrayList<User>();
User user1 = new User();
user1.getIdentities().add(new HttpPrincipal("foo"));
InternalID id1 = new InternalID(new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()));
TestUtil.setField(user1, id1, AbstractReaderWriter.ID);
expected.add(user1);
User user2 = new User();
user2.getIdentities().add(new HttpPrincipal("foo"));
InternalID id2 = new InternalID(new URI("ivo://cadc.nrc.ca/user?" + UUID.randomUUID()));
TestUtil.setField(user2, id2, AbstractReaderWriter.ID);
expected.add(user2);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment