Commit f8e1a0fe authored by Dustin Jenkins's avatar Dustin Jenkins
Browse files

AC2: Implement whoami entry.

parent 5032c231
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -73,10 +73,7 @@ import java.security.Principal;
import java.util.Collection;
import java.util.Map;

import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserAlreadyExistsException;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.ac.*;
import ca.nrc.cadc.net.TransientException;

import com.unboundid.ldap.sdk.DN;
@@ -91,7 +88,7 @@ public interface UserPersistence<T extends Principal>
     * @throws TransientException If an temporary, unexpected problem occurred.
     * @throws AccessControlException If the operation is not permitted.
     */
    Map<String, String> getUsers()
    Map<String, PersonalDetails> getUsers()
            throws TransientException, AccessControlException;
    
    /**
+15 −8
Original line number Diff line number Diff line
@@ -424,15 +424,16 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
     * @return A map of string keys to string values.
     * @throws TransientException If an temporary, unexpected problem occurred.
     */
    public Map<String, String> getUsers()
    public Map<String, PersonalDetails> getUsers()
            throws TransientException
    {
        final Map<String, String> users = new HashMap<String, String>();
        final Map<String, PersonalDetails> users =
                new HashMap<String, PersonalDetails>();

        try
        {
            final Filter filter = Filter.createPresenceFilter(LDAP_COMMON_NAME);
            final String[] attributes = new String[]{LDAP_COMMON_NAME,
            final Filter filter = Filter.createPresenceFilter(LDAP_UID);
            final String[] attributes = new String[]{LDAP_UID,
                                                     LDAP_FIRST_NAME,
                                                     LDAP_LAST_NAME,
                                                     LDAP_NSACCOUNTLOCK};
@@ -450,10 +451,16 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
                {
                    if (!next.hasAttribute(LDAP_NSACCOUNTLOCK))
                    {
                        users.put(next.getAttributeValue(LDAP_COMMON_NAME),
                                  next.getAttributeValue(LDAP_FIRST_NAME)
                                  + " "
                                  + next.getAttributeValue(LDAP_LAST_NAME));
                        final String trimmedFirstName =
                                next.getAttributeValue(LDAP_FIRST_NAME).trim();
                        final String trimmedLastName =
                                next.getAttributeValue(LDAP_LAST_NAME).trim();
                        final String trimmedUID =
                                next.getAttributeValue(LDAP_UID).trim();

                        users.put(trimmedUID,
                                  new PersonalDetails(trimmedFirstName,
                                                      trimmedLastName));
                    }
                }
            }
+2 −5
Original line number Diff line number Diff line
@@ -68,10 +68,7 @@
 */
package ca.nrc.cadc.ac.server.ldap;

import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserAlreadyExistsException;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.ac.*;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.net.TransientException;
import com.unboundid.ldap.sdk.DN;
@@ -100,7 +97,7 @@ public class LdapUserPersistence<T extends Principal>
        }
    }
    
    public Map<String, String> getUsers()
    public Map<String, PersonalDetails> getUsers()
        throws TransientException, AccessControlException
    {
        LdapUserDAO<T> userDAO = null;
+2 −1
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import java.util.Map;
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletResponse;

import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserRequest;
import org.apache.log4j.Logger;
@@ -278,7 +279,7 @@ public abstract class UsersAction
     *
     * @param users         The Map of user IDs to names.
     */
    protected final void writeUsers(final Map<String, String> users)
    protected final void writeUsers(final Map<String, PersonalDetails> users)
            throws IOException
    {
        response.setContentType(acceptedContentType);
+20 −10
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@
package ca.nrc.cadc.ac.server.web.users;


import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.HttpPrincipal;
import org.apache.log4j.Level;
@@ -112,11 +113,13 @@ public class GetUsersActionTest
                createMock(HttpServletResponse.class);
        final UserPersistence<HttpPrincipal> mockUserPersistence =
                createMock(UserPersistence.class);
        final Map<String, String> userEntries = new HashMap<String, String>();
        final Map<String, PersonalDetails> userEntries =
                new HashMap<String, PersonalDetails>();

        for (int i = 1; i <= 5; i++)
        {
            userEntries.put("USER_" + i, "USER " + i);
            userEntries.put("USER_" + i,
                            new PersonalDetails("USER", Integer.toString(i)));
        }

        final GetUsersAction testSubject = new GetUsersAction(null)
@@ -143,7 +146,7 @@ public class GetUsersActionTest
        testSubject.doAction(null, mockResponse);

        final JSONArray expected =
                new JSONArray("[{\"id\":\"USER_1\",\"name\":\"USER 1\"},{\"id\":\"USER_3\",\"name\":\"USER 3\"},{\"id\":\"USER_2\",\"name\":\"USER 2\"},{\"id\":\"USER_4\",\"name\":\"USER 4\"},{\"id\":\"USER_5\",\"name\":\"USER 5\"}]");
                new JSONArray("[{\"id\":\"USER_1\",\"firstName\":\"USER\",\"lastName\":\"1\"},{\"id\":\"USER_3\",\"firstName\":\"USER\",\"lastName\":\"3\"},{\"id\":\"USER_2\",\"firstName\":\"USER\",\"lastName\":\"2\"},{\"id\":\"USER_4\",\"firstName\":\"USER\",\"lastName\":\"4\"},{\"id\":\"USER_5\",\"firstName\":\"USER\",\"lastName\":\"5\"}]");
        final JSONArray result = new JSONArray(writer.toString());

        JSONAssert.assertEquals(expected, result, true);
@@ -158,11 +161,13 @@ public class GetUsersActionTest
                createMock(HttpServletResponse.class);
        final UserPersistence<HttpPrincipal> mockUserPersistence =
                createMock(UserPersistence.class);
        final Map<String, String> userEntries = new HashMap<String, String>();
        final Map<String, PersonalDetails> userEntries =
                new HashMap<String, PersonalDetails>();

        for (int i = 1; i <= 5; i++)
        {
            userEntries.put("USER_" + i, "USER " + i);
            userEntries.put("USER_" + i,
                            new PersonalDetails("USER", Integer.toString(i)));
        }

        final GetUsersAction testSubject = new GetUsersAction(null)
@@ -189,19 +194,24 @@ public class GetUsersActionTest
        final String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
                                "<users>\r\n" +
                                "  <user id=\"USER_1\">\r\n" +
                                "    <name>USER 1</name>\r\n" +
                                "    <firstName>USER</firstName>\r\n" +
                                "    <lastName>1</lastName>\r\n" +
                                "  </user>\r\n" +
                                "  <user id=\"USER_3\">\r\n" +
                                "    <name>USER 3</name>\r\n" +
                                "    <firstName>USER</firstName>\r\n" +
                                "    <lastName>3</lastName>\r\n" +
                                "  </user>\r\n" +
                                "  <user id=\"USER_2\">\r\n" +
                                "    <name>USER 2</name>\r\n" +
                                "    <firstName>USER</firstName>\r\n" +
                                "    <lastName>2</lastName>\r\n" +
                                "  </user>\r\n" +
                                "  <user id=\"USER_4\">\r\n" +
                                "    <name>USER 4</name>\r\n" +
                                "    <firstName>USER</firstName>\r\n" +
                                "    <lastName>4</lastName>\r\n" +
                                "  </user>\r\n" +
                                "  <user id=\"USER_5\">\r\n" +
                                "    <name>USER 5</name>\r\n" +
                                "    <firstName>USER</firstName>\r\n" +
                                "    <lastName>5</lastName>\r\n" +
                                "  </user>\r\n" +
                                "</users>\r\n";
        final String result = writer.toString();
Loading