diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java index 8e871363996b17cc9e451995ffc1dda00edcec27..92a345af5cc7383779cab27f99f37d8819dc8ee0 100644 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java @@ -149,7 +149,7 @@ public class GetUserAction extends AbstractUserAction } PersonalDetails pd = details.iterator().next(); user.details.clear(); - user.details.add(new PersonalDetails(pd.getFirstName(), pd.getFirstName())); + user.details.add(new PersonalDetails(pd.getFirstName(), pd.getLastName())); } else { @@ -167,16 +167,18 @@ public class GetUserAction extends AbstractUserAction protected boolean isServops() { - log.debug("isServops(): augmentUserDN = " + this.augmentUserDN); boolean isServops = false; AccessControlContext acc = AccessController.getContext(); Subject subject = Subject.getSubject(acc); - for (Principal principal : subject.getPrincipals()) + if (subject != null) { - if (principal.getName().equals(this.getAugmentUserDN())) + for (Principal principal : subject.getPrincipals()) { - isServops = true; - break; + if (principal.getName().equals(this.getAugmentUserDN())) + { + isServops = true; + break; + } } } diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java index f34c6ffcd38c28cd4af7394dc11d8629af87eca0..7727194981084f8d071205b6861e394b99762e28 100644 --- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java +++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java @@ -89,10 +89,11 @@ import java.util.Set; import static org.easymock.EasyMock.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class GetUserActionTest { -// @Test + @Test public void writeUserXML() throws Exception { final SyncOutput mockSyncOut = @@ -179,15 +180,72 @@ public class GetUserActionTest testSubject.setSyncOut(syncOutput); testSubject.doAction(); - sb = new StringBuilder(); + String actualUser = writer.toString(); + + assertEquals(expectedUser, actualUser); + + verify(mockUserPersistence, mockResponse); + } + + @Test + public void writeUserWithDetailDisplay() throws Exception + { + final HttpServletResponse mockResponse = createMock(HttpServletResponse.class); + final UserPersistence<HttpPrincipal> mockUserPersistence = + createMock(UserPersistence.class); + final HttpPrincipal userID = new HttpPrincipal("CADCtest"); + + final GetUserAction testSubject = new GetUserAction(userID, "display") + { + @Override + UserPersistence<HttpPrincipal> getUserPersistence() + { + return mockUserPersistence; + } + }; + + final User<HttpPrincipal> expected = new User<HttpPrincipal>(userID); + + final PersonalDetails personalDetails = new PersonalDetails("cadc", "test"); + expected.details.add(personalDetails); + + StringBuilder sb = new StringBuilder(); + UserWriter userWriter = new UserWriter(); userWriter.write(expected, sb); - String actualUser = sb.toString(); + String expectedUser = sb.toString(); + + Set<PersonalDetails> details = expected.getDetails(PersonalDetails.class); + PersonalDetails pd = details.iterator().next(); + pd.city = "city"; + + expected.getIdentities().add(new NumericPrincipal(789)); + expected.getIdentities().add(new X500Principal("cn=foo,o=bar")); + + final PosixDetails posixDetails = new PosixDetails(123L, 456L, "/dev/null"); + expected.details.add(posixDetails); + + final Writer writer = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(writer); + + expect(mockUserPersistence.getUser(userID)).andReturn(expected).once(); + mockResponse.setHeader("Content-Type", "text/xml"); + expectLastCall().once(); + expect(mockResponse.getWriter()).andReturn(printWriter).once(); + + replay(mockUserPersistence, mockResponse); + + SyncOutput syncOutput = new SyncOutput(mockResponse); + testSubject.setSyncOut(syncOutput); + testSubject.doAction(); + + String actualUser = writer.toString(); + assertEquals(expectedUser, actualUser); verify(mockUserPersistence, mockResponse); } -// @Test + @Test public void writeUserJSON() throws Exception { final SyncOutput mockSyncOut =