From ebdf965e7e0e7344bb61ec38992fa646e2254493 Mon Sep 17 00:00:00 2001 From: Alinga Yeung <Alinga.Yeung@nrc-cnrc.gc.ca> Date: Thu, 3 Sep 2015 11:34:25 -0700 Subject: [PATCH] Story 1657 rework. Added test cases for a subject with no principal and a subject with more than one principal. --- .../ca/nrc/cadc/ac/client/UserClientTest.java | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/UserClientTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/UserClientTest.java index 6a84fb04..76a37a3b 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/UserClientTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/client/UserClientTest.java @@ -69,9 +69,20 @@ package ca.nrc.cadc.ac.client; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; + +import javax.security.auth.Subject; + import org.apache.log4j.Level; import org.apache.log4j.Logger; -import ca.nrc.cadc.ac.client.UserClient; + +import ca.nrc.cadc.ac.AC; +import ca.nrc.cadc.auth.HttpPrincipal; +import ca.nrc.cadc.auth.NumericPrincipal; +import ca.nrc.cadc.reg.client.RegistryClient; import ca.nrc.cadc.util.Log4jInit; import org.junit.Assert; @@ -123,4 +134,41 @@ public class UserClientTest Assert.fail("Unexpected exception: " + t.getMessage()); } } + + @Test + public void testSubjectWithNoPrincipal() throws URISyntaxException, MalformedURLException + { + // test subject augmentation given a subject with no principal + Subject subject = new Subject(); + this.createUserClient().augmentSubject(subject); + Assert.assertEquals("Should have no principal.", 0, subject.getPrincipals().size()); + } + + @Test + public void testSubjectWithMultiplePrincipal() throws URISyntaxException, MalformedURLException + { + try + { + // test subject augmentation given a subject with more than one principal + Subject subject = new Subject(); + subject.getPrincipals().add(new NumericPrincipal(4)); + subject.getPrincipals().add(new HttpPrincipal("cadcauthtest1")); + this.createUserClient().augmentSubject(subject); + Assert.fail("Expecting an IllegalArgumentException."); + } + catch(IllegalArgumentException e) + { + String expected = "Subject has more than one principal."; + Assert.assertEquals(expected, e.getMessage()); + } + } + + protected UserClient createUserClient() throws URISyntaxException, MalformedURLException + { + RegistryClient regClient = new RegistryClient(); + URI serviceURI = new URI(AC.GMS_SERVICE_URI); + URL baseURL = regClient.getServiceURL(serviceURI, "https"); + return new UserClient(baseURL.toString()); + + } } -- GitLab