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

s1651 - More tests, documentation

parent e5522cbb
No related branches found
No related tags found
No related merge requests found
...@@ -107,7 +107,8 @@ import ca.nrc.cadc.net.HttpUpload; ...@@ -107,7 +107,8 @@ import ca.nrc.cadc.net.HttpUpload;
import ca.nrc.cadc.net.NetUtil; import ca.nrc.cadc.net.NetUtil;
/** /**
* Client class for communicating with the access control web service. * Client class for performing group searching and group actions
* with the access control web service.
*/ */
public class GMSClient public class GMSClient
{ {
...@@ -119,8 +120,10 @@ public class GMSClient ...@@ -119,8 +120,10 @@ public class GMSClient
private String baseURL; private String baseURL;
/** /**
* * Constructor.
* @param baseURL *
* @param baseURL The URL of the supporting access control web service
* obtained from the registry.
*/ */
public GMSClient(String baseURL) public GMSClient(String baseURL)
throws IllegalArgumentException throws IllegalArgumentException
...@@ -165,7 +168,7 @@ public class GMSClient ...@@ -165,7 +168,7 @@ public class GMSClient
} }
/** /**
* Create a new group * Create a new group.
* *
* @param group The group to create * @param group The group to create
* @return The newly created group will all the information. * @return The newly created group will all the information.
...@@ -652,6 +655,17 @@ public class GMSClient ...@@ -652,6 +655,17 @@ public class GMSClient
} }
} }
/**
* Get all the memberships of the user of a certain role.
*
* @param userID Identifies the user.
* @param role The role to look up.
* @return A list of groups for which the user has the role.
* @throws UserNotFoundException If the user does not exist.
* @throws AccessControlException If not allowed to peform the search.
* @throws IllegalArgumentException If a parameter is null.
* @throws IOException If an unknown error occured.
*/
public List<Group> getMemberships(Principal userID, Role role) public List<Group> getMemberships(Principal userID, Role role)
throws UserNotFoundException, AccessControlException, IOException throws UserNotFoundException, AccessControlException, IOException
{ {
...@@ -722,12 +736,41 @@ public class GMSClient ...@@ -722,12 +736,41 @@ public class GMSClient
} }
} }
/**
* Return the group, specified by paramter groupName, if the user,
* identified by userID, is a member of that group. Return null
* otherwise.
*
* This call is identical to getMemberShip(userID, groupName, Role.MEMBER)
*
* @param userID Identifies the user.
* @param groupName Identifies the group.
* @return The group or null of the user is not a member.
* @throws UserNotFoundException If the user does not exist.
* @throws AccessControlException If not allowed to peform the search.
* @throws IllegalArgumentException If a parameter is null.
* @throws IOException If an unknown error occured.
*/
public Group getMembership(Principal userID, String groupName) public Group getMembership(Principal userID, String groupName)
throws UserNotFoundException, AccessControlException, IOException throws UserNotFoundException, AccessControlException, IOException
{ {
return getMembership(userID, groupName, Role.MEMBER); return getMembership(userID, groupName, Role.MEMBER);
} }
/**
* Return the group, specified by paramter groupName, if the user,
* identified by userID, is a member (of type role) of that group.
* Return null otherwise.
*
* @param userID Identifies the user.
* @param groupName Identifies the group.
* @param role The membership role to search.
* @return The group or null of the user is not a member.
* @throws UserNotFoundException If the user does not exist.
* @throws AccessControlException If not allowed to peform the search.
* @throws IllegalArgumentException If a parameter is null.
* @throws IOException If an unknown error occured.
*/
public Group getMembership(Principal userID, String groupName, Role role) public Group getMembership(Principal userID, String groupName, Role role)
throws UserNotFoundException, AccessControlException, IOException throws UserNotFoundException, AccessControlException, IOException
{ {
...@@ -817,12 +860,37 @@ public class GMSClient ...@@ -817,12 +860,37 @@ public class GMSClient
} }
} }
/**
* Check if userID is a member of groupName.
*
* This is equivalent to isMember(userID, groupName, Role.MEMBER)
*
* @param userID Identifies the user.
* @param groupName Identifies the group.
* @return True if the user is a member of the group
* @throws UserNotFoundException If the user does not exist.
* @throws AccessControlException If not allowed to peform the search.
* @throws IllegalArgumentException If a parameter is null.
* @throws IOException If an unknown error occured.
*/
public boolean isMember(Principal userID, String groupName) public boolean isMember(Principal userID, String groupName)
throws UserNotFoundException, AccessControlException, IOException throws UserNotFoundException, AccessControlException, IOException
{ {
return isMember(userID, groupName, Role.MEMBER); return isMember(userID, groupName, Role.MEMBER);
} }
/**
* Check if userID is a member (of type role) of groupName.
*
* @param userID Identifies the user.
* @param groupName Identifies the group.
* @param role The type of membership.
* @return True if the user is a member of the group
* @throws UserNotFoundException If the user does not exist.
* @throws AccessControlException If not allowed to peform the search.
* @throws IllegalArgumentException If a parameter is null.
* @throws IOException If an unknown error occured.
*/
public boolean isMember(Principal userID, String groupName, Role role) public boolean isMember(Principal userID, String groupName, Role role)
throws UserNotFoundException, AccessControlException, IOException throws UserNotFoundException, AccessControlException, IOException
{ {
......
...@@ -99,6 +99,40 @@ public class GMSClientTest ...@@ -99,6 +99,40 @@ public class GMSClientTest
Log4jInit.setLevel("ca.nrc.cadc.ac", Level.INFO); Log4jInit.setLevel("ca.nrc.cadc.ac", Level.INFO);
} }
@Test
public void testUserIsSubject()
{
try
{
Subject subject = new Subject();
HttpPrincipal userID = new HttpPrincipal("test");
HttpPrincipal userID2 = new HttpPrincipal("test2");
subject.getPrincipals().add(userID);
RegistryClient regClient = new RegistryClient();
URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI));
GMSClient client = new GMSClient(baseURL.toString());
Assert.assertFalse(client.userIsSubject(null, null));
Assert.assertFalse(client.userIsSubject(userID, null));
Assert.assertFalse(client.userIsSubject(null, subject));
Assert.assertFalse(client.userIsSubject(userID2, subject));
Assert.assertTrue(client.userIsSubject(userID, subject));
HttpPrincipal userID3 = new HttpPrincipal("test3");
subject.getPrincipals().add(userID3);
Assert.assertTrue(client.userIsSubject(userID, subject));
Assert.assertFalse(client.userIsSubject(userID2, subject));
Assert.assertTrue(client.userIsSubject(userID3, subject));
}
catch (Throwable t)
{
log.error("Unexpected exception", t);
Assert.fail("Unexpected exception: " + t.getMessage());
}
}
@Test @Test
public void testGroupCaching() public void testGroupCaching()
{ {
...@@ -163,7 +197,6 @@ public class GMSClientTest ...@@ -163,7 +197,6 @@ public class GMSClientTest
List<Group> actual = client.getCachedGroups(userID, Role.MEMBER); List<Group> actual = client.getCachedGroups(userID, Role.MEMBER);
Assert.assertNull("Cache should still be null", actual); Assert.assertNull("Cache should still be null", actual);
} }
catch (Throwable t) catch (Throwable t)
{ {
log.error("Unexpected exception", t); log.error("Unexpected exception", t);
......
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