From 4ada8fb9dfe516472c2982771fbc8469add27da3 Mon Sep 17 00:00:00 2001
From: Dustin Jenkins <Dustin.Jenkins@nrc-cnrc.gc.ca>
Date: Fri, 26 Sep 2014 10:22:39 -0700
Subject: [PATCH] Story 1651: Fix GMSClient Test and added getDetails() method
 to User class.

---
 .../src/ca/nrc/cadc/ac/User.java              | 18 ++++++++++++++++++
 .../test/src/ca/nrc/cadc/ac/UserTest.java     | 19 ++++++++++++++++---
 .../ca/nrc/cadc/ac/client/GMSClientTest.java  |  9 ++++++---
 3 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/User.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/User.java
index a6e74d85..22f609ad 100644
--- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/User.java
+++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/User.java
@@ -143,4 +143,22 @@ public class User<T extends Principal>
         return getClass().getSimpleName() + "[" + userID.getName() + "]";
     }
 
+    public <S extends UserDetails> Set<S> getDetails(
+            final Class<S> userDetailsClass)
+    {
+        final Set<S> matchedDetails = new HashSet<S>();
+
+        for (final UserDetails ud : details)
+        {
+            if (ud.getClass() == userDetailsClass)
+            {
+                // This casting shouldn't happen, but it's the only way to
+                // do this without a lot of work.
+                // jenkinsd 2014.09.26
+                matchedDetails.add((S) ud);
+            }
+        }
+
+        return matchedDetails;
+    }
 }
diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java
index 8d8a8027..78b636ff 100644
--- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java
+++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java
@@ -67,9 +67,7 @@
  ************************************************************************
  */package ca.nrc.cadc.ac;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 import javax.security.auth.x500.X500Principal;
 
@@ -200,4 +198,19 @@ public class UserTest
         }
         assertTrue(thrown);
     }
+
+    @Test
+    public void getDetails() throws Exception
+    {
+        final User<HttpPrincipal> testSubject =
+                new User<HttpPrincipal>(new HttpPrincipal("test"));
+
+        testSubject.details.add(new PersonalDetails("First", "Last"));
+
+        assertTrue("Should be empty.",
+                   testSubject.getDetails(PosixDetails.class).isEmpty());
+
+        assertEquals("Should be 1.", 1,
+                     testSubject.getDetails(PersonalDetails.class).size());
+    }
 }
diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/GMSClientTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/GMSClientTest.java
index a49b7e9d..c29407b5 100644
--- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/GMSClientTest.java
+++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/GMSClientTest.java
@@ -110,7 +110,8 @@ public class GMSClientTest
             subject.getPrincipals().add(userID);
             
             RegistryClient regClient = new RegistryClient();
-            URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI));
+            URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI),
+                                                  "https");
             GMSClient client = new GMSClient(baseURL.toString());
 
             Assert.assertFalse(client.userIsSubject(null, null));
@@ -148,7 +149,8 @@ public class GMSClientTest
                     public Object run() throws Exception
                     {
                         RegistryClient regClient = new RegistryClient();
-                        URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI));
+                        URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI),
+                                                              "https");
                         GMSClient client = new GMSClient(baseURL.toString());
 
                         List<Group> initial = client.getCachedGroups(userID, Role.MEMBER);
@@ -180,7 +182,8 @@ public class GMSClientTest
 
             // do the same without a subject
             RegistryClient regClient = new RegistryClient();
-            URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI));
+            URL baseURL = regClient.getServiceURL(new URI(AC.GMS_SERVICE_URI),
+                                                  "https");
             GMSClient client = new GMSClient(baseURL.toString());
 
             List<Group> initial = client.getCachedGroups(userID, Role.MEMBER);
-- 
GitLab