Commit 0efafa6c authored by Adrian Damian's avatar Adrian Damian
Browse files

Fixed unit tests for user listing

parent 5af45b34
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -67,21 +67,22 @@
 ************************************************************************
 */

package ca.nrc.cadc.ac.server.web;
package ca.nrc.cadc.ac.server.web.users;

import java.io.Writer;
import java.util.Collection;

import org.apache.log4j.Logger;

import ca.nrc.cadc.ac.server.GroupPersistence;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.HttpPrincipal;

public class GetGroupNamesAction extends GroupsAction
public class GetUserIDsAction extends UsersAction
{
    
    private static final Logger log = Logger.getLogger(GetGroupNamesAction.class);
    private static final Logger log = Logger.getLogger(GetUserIDsAction.class);

    GetGroupNamesAction(GroupLogInfo logInfo)
    GetUserIDsAction(UserLogInfo logInfo)
    {
        super(logInfo);
    }
@@ -89,20 +90,20 @@ public class GetGroupNamesAction extends GroupsAction
    public Object run()
        throws Exception
    {
        GroupPersistence groupPersistence = getGroupPersistence();
        Collection<String> groups = groupPersistence.getGroupNames();
        log.debug("Found " + groups.size() + " group names");
        UserPersistence userPersistence = getUserPersistence();
        Collection<HttpPrincipal> userIDs = userPersistence.getCadcIDs();
        log.debug("Found " + userIDs.size() + " user IDs");
        response.setContentType("text/plain");
        log.debug("Set content-type to text/plain");
        Writer writer = response.getWriter();
        boolean start = true;
        for (final String group : groups)
        for (final HttpPrincipal userID : userIDs)
        {
            if (!start)
            {
                writer.write("\r\n");
            }
            writer.write(group);
            writer.write(userID.getName());
            start = false;
        }
        
+3 −3
Original line number Diff line number Diff line
@@ -66,19 +66,19 @@
 *
 ************************************************************************
 */
package ca.nrc.cadc.ac.server.web;
package ca.nrc.cadc.ac.server.web.users;

import ca.nrc.cadc.log.ServletLogInfo;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

public class GroupLogInfo extends ServletLogInfo
public class UserLogInfo extends ServletLogInfo
{
    public String groupID;
    public List<String> addedMembers;
    public List<String> deletedMembers;

    public GroupLogInfo(HttpServletRequest request)
    public UserLogInfo(HttpServletRequest request)
    {
        super(request);
    }
+5 −5
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@
 *
 ************************************************************************
 */
package ca.nrc.cadc.ac.server.web;
package ca.nrc.cadc.ac.server.web.users;

import java.io.IOException;
import java.security.AccessControlException;
@@ -90,14 +90,14 @@ import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.net.TransientException;

public abstract class GroupsAction
public abstract class UsersAction
    implements PrivilegedExceptionAction<Object>
{
    private static final Logger log = Logger.getLogger(GroupsAction.class);
    protected GroupLogInfo logInfo;
    private static final Logger log = Logger.getLogger(UsersAction.class);
    protected UserLogInfo logInfo;
    protected HttpServletResponse response;

    GroupsAction(GroupLogInfo logInfo)
    UsersAction(UserLogInfo logInfo)
    {
        this.logInfo = logInfo;
    }
+16 −70
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@
 *
 ************************************************************************
 */
package ca.nrc.cadc.ac.server.web;
package ca.nrc.cadc.ac.server.web.users;

import java.io.IOException;
import java.net.URL;
@@ -76,16 +76,23 @@ import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import ca.nrc.cadc.ac.server.web.AddGroupMemberAction;
import ca.nrc.cadc.ac.server.web.AddUserMemberAction;
import ca.nrc.cadc.ac.server.web.DeleteGroupAction;
import ca.nrc.cadc.ac.server.web.GetGroupAction;
import ca.nrc.cadc.ac.server.web.ModifyGroupAction;
import ca.nrc.cadc.ac.server.web.RemoveGroupMemberAction;
import ca.nrc.cadc.ac.server.web.RemoveUserMemberAction;
import ca.nrc.cadc.util.StringUtil;

public class GroupsActionFactory
public class UsersActionFactory
{
    private static final Logger log = Logger.getLogger(GroupsActionFactory.class);
    private static final Logger log = Logger.getLogger(UsersActionFactory.class);

    static GroupsAction getGroupsAction(HttpServletRequest request, GroupLogInfo logInfo)
    static UsersAction getUsersAction(HttpServletRequest request, UserLogInfo logInfo)
        throws IOException
    {
        GroupsAction action = null;
        UsersAction action = null;
        String method = request.getMethod();
        String path = request.getPathInfo();
        log.debug("method: " + method);
@@ -116,78 +123,17 @@ public class GroupsActionFactory
        {
            if (method.equals("GET"))
            {
                action = new GetGroupNamesAction(logInfo);
                action = new GetUserIDsAction(logInfo);
            }
            else if (method.equals("PUT"))
            {
                action = new CreateGroupAction(logInfo, request.getInputStream());
                throw new UnsupportedOperationException("TODO");
            }

        }
        else if (segments.length == 1)
        else
        {
            String groupName = segments[0];
            if (method.equals("GET"))
            {
                action = new GetGroupAction(logInfo, groupName);
            }
            else if (method.equals("DELETE"))
            {
                action = new DeleteGroupAction(logInfo, groupName);
            }
            else if (method.equals("POST"))
            {
                final URL requestURL = new URL(request.getRequestURL().toString());
                final StringBuilder sb = new StringBuilder();
                sb.append(requestURL.getProtocol());
                sb.append("://");
                sb.append(requestURL.getHost());
                if (requestURL.getPort() > 0)
                {
                    sb.append(":");
                    sb.append(requestURL.getPort());
                }
                sb.append(request.getContextPath());
                sb.append(request.getServletPath());
                sb.append("/");
                sb.append(path);

                action = new ModifyGroupAction(logInfo, groupName, sb.toString(),
                                               request.getInputStream());
            }
        }
        else if (segments.length == 3)
        {
            String groupName = segments[0];
            String memberCategory = segments[1];
            if (method.equals("PUT"))
            {
                if (memberCategory.equals("groupMembers"))
                {
                    String groupMemberName = segments[2];
                    action = new AddGroupMemberAction(logInfo, groupName, groupMemberName);
                }
                else if (memberCategory.equals("userMembers"))
                {
                    String userMemberID = URLDecoder.decode(segments[2], "UTF-8");
                    String userMemberIDType = request.getParameter("idType");
                    action = new AddUserMemberAction(logInfo, groupName, userMemberID, userMemberIDType);
                }
            }
            else if (method.equals("DELETE"))
            {
                if (memberCategory.equals("groupMembers"))
                {
                    String groupMemberName = segments[2];
                    action = new RemoveGroupMemberAction(logInfo, groupName, groupMemberName);
                }
                else if (memberCategory.equals("userMembers"))
                {
                    String memberUserID = URLDecoder.decode(segments[2], "UTF-8");
                    String memberUserIDType = request.getParameter("idType");
                    action = new RemoveUserMemberAction(logInfo, groupName, memberUserID, memberUserIDType);
                }
            }
            throw new UnsupportedOperationException("TODO");
        }

        if (action != null)
+6 −6
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@
 *
 ************************************************************************
 */
package ca.nrc.cadc.ac.server.web;
package ca.nrc.cadc.ac.server.web.users;

import java.io.IOException;

@@ -79,24 +79,24 @@ import org.apache.log4j.Logger;

import ca.nrc.cadc.auth.AuthenticationUtil;

public class GroupsServlet extends HttpServlet
public class UsersServlet extends HttpServlet
{
    private static final Logger log = Logger.getLogger(GroupsServlet.class);
    private static final Logger log = Logger.getLogger(UsersServlet.class);

    /**
     * Create a GroupAction and run the action safely.
     * Create a UserAction and run the action safely.
     */
    private void doAction(HttpServletRequest request, HttpServletResponse response)
        throws IOException
    {
        long start = System.currentTimeMillis();
        GroupLogInfo logInfo = new GroupLogInfo(request);
        UserLogInfo logInfo = new UserLogInfo(request);
        try
        {
            log.info(logInfo.start());
            Subject subject = AuthenticationUtil.getSubject(request);
            logInfo.setSubject(subject);
            GroupsAction action = GroupsActionFactory.getGroupsAction(request, logInfo);
            UsersAction action = UsersActionFactory.getUsersAction(request, logInfo);
            action.doAction(subject, response);
        }
        catch (IllegalArgumentException e)
Loading