Commit 737ed18d authored by Jeff Burke's avatar Jeff Burke
Browse files

s1840: int testing fixes.

parent d0f841ed
Loading
Loading
Loading
Loading
+20 −23
Original line number Diff line number Diff line
@@ -423,9 +423,10 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
        SearchResultEntry searchResult = null;
        try
        {
            Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK));
            filter = Filter.createANDFilter(filter,
                Filter.createEqualityFilter(searchField, userID.getName()));
//            Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK));
//            filter = Filter.createANDFilter(filter,
//                Filter.createEqualityFilter(searchField, userID.getName()));
            Filter filter = Filter.createEqualityFilter(searchField, userID.getName());
            logger.debug("search filter: " + filter);

            SearchRequest searchRequest =
@@ -454,7 +455,8 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
                searchResult.getAttributeValue(
                       userLdapAttrib.get(HttpPrincipal.class))));

        Long numericID = searchResult.getAttributeValueAsLong(userLdapAttrib.get(NumericPrincipal.class));
        Long numericID = searchResult.getAttributeValueAsLong(
            userLdapAttrib.get(NumericPrincipal.class));
        logger.debug("Numeric id is: " + numericID);
        if (numericID == null)
        {
@@ -494,9 +496,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO

        try
        {
            Filter filter = Filter.createNOTFilter(Filter.createPresenceFilter(LDAP_NSACCOUNTLOCK));
            filter = Filter.createANDFilter(filter,
                Filter.createEqualityFilter(searchField, userID.getName()));
            Filter filter = Filter.createEqualityFilter(searchField, userID.getName());
            logger.debug("search filter: " + filter);

            SearchRequest searchRequest = new SearchRequest(
@@ -537,7 +537,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
     * @throws TransientException If an temporary, unexpected problem occurred.
     */
    public Collection<User<Principal>> getUsers()
        throws TransientException
        throws AccessControlException, TransientException
    {
        return getUsers(config.getUsersDN());
    }
@@ -549,13 +549,13 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
     * @throws TransientException If an temporary, unexpected problem occurred.
     */
    public Collection<User<Principal>> getPendingUsers()
        throws TransientException
        throws AccessControlException, TransientException
    {
        return getUsers(config.getUserRequestsDN());
    }

    private Collection<User<Principal>> getUsers(final String usersDN)
        throws TransientException
        throws AccessControlException, TransientException
    {
        final Collection<User<Principal>> users = new ArrayList<User<Principal>>();

@@ -565,7 +565,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
            logger.debug("search filter: " + filter);

            final String[] attributes = new String[]
                { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME, LDAP_NSACCOUNTLOCK };
                { LDAP_UID, LDAP_FIRST_NAME, LDAP_LAST_NAME };
            final SearchRequest searchRequest =
                new SearchRequest(usersDN, SearchScope.ONE, filter, attributes);

@@ -576,8 +576,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO

                LdapDAO.checkLdapResult(searchResult.getResultCode());
                for (SearchResultEntry next : searchResult.getSearchEntries())
                {
                    if (!next.hasAttribute(LDAP_NSACCOUNTLOCK))
                {
                    final String firstName =
                        next.getAttributeValue(LDAP_FIRST_NAME).trim();
@@ -590,7 +588,6 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO
                    users.add(user);
                }
            }
            }
            catch (LDAPSearchException e)
            {
                if (e.getResultCode() == ResultCode.NO_SUCH_OBJECT)
+2 −1
Original line number Diff line number Diff line
@@ -127,6 +127,8 @@ public class UserServlet extends HttpServlet
        {
            log.info(logInfo.start());
            AbstractUserAction action = factory.createAction(request);
            action.setAcceptedContentType(getAcceptedContentType(request));
            log.debug("content-type: " + getAcceptedContentType(request));

            // Special case: if the calling subject has a servops X500Principal,
            // AND it is a GET request, do not augment the subject.
@@ -147,7 +149,6 @@ public class UserServlet extends HttpServlet
            SyncOutput syncOut = new SyncOutput(response);
            action.setLogInfo(logInfo);
            action.setSyncOut(syncOut);
            action.setAcceptedContentType(getAcceptedContentType(request));

            try
            {
+0 −7
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@
 */
package ca.nrc.cadc.ac.server.web.users;

import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.ReaderException;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserAlreadyExistsException;
@@ -81,7 +80,6 @@ import ca.nrc.cadc.ac.json.JsonUserWriter;
import ca.nrc.cadc.ac.server.PluginFactory;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.ac.server.web.SyncOutput;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.ac.xml.UserListWriter;
import ca.nrc.cadc.ac.xml.UserReader;
import ca.nrc.cadc.ac.xml.UserRequestReader;
@@ -89,7 +87,6 @@ import ca.nrc.cadc.ac.xml.UserWriter;
import ca.nrc.cadc.net.TransientException;
import org.apache.log4j.Logger;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
@@ -97,10 +94,6 @@ import java.security.AccessControlException;
import java.security.Principal;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public abstract class AbstractUserAction implements PrivilegedExceptionAction<Object>
{
+64 −3
Original line number Diff line number Diff line
@@ -71,11 +71,18 @@ package ca.nrc.cadc.ac.server.web.users;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.CookiePrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.auth.IdentityType;
import ca.nrc.cadc.auth.NumericPrincipal;
import org.apache.log4j.Logger;

import javax.security.auth.x500.X500Principal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.security.Principal;
import java.util.Iterator;
import java.util.Set;
@@ -83,11 +90,13 @@ import java.util.Set;

public class ModifyUserAction extends AbstractUserAction
{
    private static final Logger log = Logger.getLogger(ModifyUserAction.class);

    private final InputStream inputStream;
    private final String request;
    private final HttpServletRequest request;


    ModifyUserAction(final InputStream inputStream, final String request)
    ModifyUserAction(final InputStream inputStream, final HttpServletRequest request)
    {
        super();

@@ -102,7 +111,59 @@ public class ModifyUserAction extends AbstractUserAction
        final User<Principal> modifiedUser = modifyUser(user);
        logUserInfo(modifiedUser.getUserID().getName());

        syncOut.setHeader("Location", request);
        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(request.getPathInfo());
        sb.append("?idType=");

        // Need to find the principal type for this userID
        String idType = null;
        for (Principal principal : user.getIdentities())
        {
            if (principal.getName().equals(modifiedUser.getUserID().getName()))
            {
                if (principal instanceof HttpPrincipal)
                {
                    idType = IdentityType.USERNAME.getValue();
                }
                else if (principal instanceof X500Principal)
                {
                    idType = IdentityType.X500.getValue();
                }
                else if (principal instanceof NumericPrincipal)
                {
                    idType = IdentityType.CADC.getValue();
                }
                else if (principal instanceof CookiePrincipal)
                {
                    idType = IdentityType.COOKIE.getValue();
                }
            }
        }

        if (idType == null)
        {
            throw new IllegalArgumentException(
                "Bad POST request to " + request.getServletPath() +
                    " because unknown userID Principal");
        }

        sb.append(idType);

        final String redirectUrl = sb.toString();
        log.debug("redirect URL: " + redirectUrl);

        syncOut.setHeader("Location", redirectUrl);
        syncOut.setCode(303);
    }

+1 −17
Original line number Diff line number Diff line
@@ -169,23 +169,7 @@ public abstract class UserActionFactory

                if (segments.length == 1)
                {
                    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(path);
                    sb.append("?");
                    sb.append(request.getQueryString());

                    action = new ModifyUserAction(request.getInputStream(), sb.toString());
                    action = new ModifyUserAction(request.getInputStream(), request);
                }

                if (action != null)