Commit 3a47a616 authored by Jeff Burke's avatar Jeff Burke
Browse files

s1840: updated int-tests

parent a43e2478
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ public abstract class AbstractUserCommand extends AbstractCommand
        {
            // print all user identities
            this.systemOut.println();
            this.systemOut.println("Identitities");
            this.systemOut.println("Identities");
            Set<Principal> principals = user.getIdentities();
            for (final Principal p : principals)
            {
+19 −2
Original line number Diff line number Diff line
@@ -70,10 +70,12 @@
package ca.nrc.cadc.ac.admin;

import java.io.PrintStream;
import java.security.Principal;
import java.security.cert.CertificateException;

import javax.security.auth.Subject;

import ca.nrc.cadc.ac.User;
import org.apache.log4j.Logger;

/**
@@ -105,12 +107,27 @@ public class Main
                if (parser.getSubject() == null)
                {
                    // no credential, but command works with an anonymous user
                    log.debug("running as anon user");
                    command.run();
                }
                else
                {
                    // has credential, execute the command 
                    Subject.doAs(parser.getSubject(), command);
                    Subject subject = parser.getSubject();
                    log.debug("running as " + subject);

                    // augment the subject
                    if (subject.getPrincipals().isEmpty())
                    {
                        throw new RuntimeException("BUG: subject with no principals");
                    }
                    Principal userID = subject.getPrincipals().iterator().next();
                    User<Principal> subjectUser = command.getUserPersistence().getAugmentedUser(userID);
                    for (Principal identity: subjectUser.getIdentities())
                    {
                        subject.getPrincipals().add(identity);
                    }
                    log.debug("augmented subject: " + subject);
                    Subject.doAs(subject, command);
                }
            }
            else
+2 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ public class ViewUser extends AbstractUserCommand
    public ViewUser(final String userID)
    {
    	super(userID);
        log.debug("view user: " + userID);
    }
    
    protected void execute() 
@@ -102,6 +103,7 @@ public class ViewUser extends AbstractUserCommand
        try 
        {
            // Try the main tree first
            log.debug("principal: " + this.getPrincipal());
            User<Principal> user = this.getUserPersistence().getUser(this.getPrincipal());
            this.printUser(user);
        } 
+1 −1
Original line number Diff line number Diff line
#!/bin/bash

java -Xmx128m -jar ${CADC_ROOT}/lib/userAdmin.jar $*
java -Dca.nrc.cadc.util.PropertiesReader.dir=test -Xmx128m -jar ${CADC_ROOT}/lib/userAdmin.jar $*
+36 −41
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserAlreadyExistsException;
import ca.nrc.cadc.ac.UserRequest;
import ca.nrc.cadc.ac.server.ldap.LdapConfig;
import ca.nrc.cadc.ac.server.ldap.LdapUserDAO;
import ca.nrc.cadc.ac.server.ldap.LdapUserPersistence;
import ca.nrc.cadc.auth.DNPrincipal;
import ca.nrc.cadc.auth.HttpPrincipal;
import ca.nrc.cadc.net.TransientException;
@@ -103,10 +103,9 @@ public class AdminIntTest
{
    private static final Logger log = Logger.getLogger(AdminIntTest.class);

    static final String CONFIG = LdapConfig.class.getSimpleName() + ".test.properties";
    static final String EXEC_CMD = "./scripts/userAdmin";
    static final String EXEC_CMD = "./test/scripts/userAdminTest";

    static String servopsCert;
    static String testCert;
    static LdapConfig config;

    @BeforeClass
@@ -115,60 +114,56 @@ public class AdminIntTest
    {
        Log4jInit.setLevel("ca.nrc.cadc.ac", Level.DEBUG);

        servopsCert = System.getProperty("user.home") + "/.pub/proxy.pem";

        config = LdapConfig.getLdapConfig(CONFIG);
        testCert = "build/test/class/cadcauthtest1.pem";
    }

    @Test
//    @Test
    public void listUsers() throws Exception
    {
//        String userID = "CadcAdmin-int-test-user-" + System.currentTimeMillis();
//        boolean isPending = false;
//        addUser(userID, isPending);

        String[] args = new String[] { "--list" };

        List<String> output = doTest(args, 0);

        log.debug("number users found: " + output.size());
        assertFalse("output is empty", output.isEmpty());

//        boolean found = false;
//        for (String line : output)
//        {
//            if (line.equals(userID))
//            {
//                found = true;
//            }
//        }
//        assertTrue("User not found", found);
    }

//    @Test
    public void listPendingUsers() throws Exception
    {
        String userID = "CadcAdmin-int-test-user-" + System.currentTimeMillis();
        boolean isPending = true;
        addUser(userID, isPending);

        String[] args = new String[] { "--list-pending" };

        List<String> output = doTest(args, 0);

        log.debug("number pending users found: " + output.size());
        assertFalse("output is empty", output.isEmpty());
    }

        boolean found = false;
        for (String line : output)
        {
            if (line.equals(userID))
//    @Test
    public void viewUser() throws Exception
    {
                found = true;
            }
        }
        assertTrue("User not found", found);
        String userID = "CadcAdmin-int-test-user-" + System.currentTimeMillis();
        boolean isPending = false;
        addUser(userID, isPending);
//
//        String[] args = new String[] { "--view=" + userID };
//
//        List<String> output = doTest(args, 0);
//
//        assertFalse("output is empty", output.isEmpty());
//
//        boolean found = false;
//        for (String line : output)
//        {
//            if (line.contains(userID))
//            {
//                found = true;
//            }
//        }
//        assertTrue("User not found", found);
    }

//    @Test
    @Test
    public void viewPendingUser() throws Exception
    {
        String userID = "CadcAdmin-int-test-user-" + System.currentTimeMillis();
@@ -290,7 +285,7 @@ public class AdminIntTest
    {
        String[] exec = new String[args.length + 2];
        exec[0] = EXEC_CMD;
        exec[1] = "--cert=" + servopsCert;
        exec[1] = "--cert=" + testCert;

        System.arraycopy(args, 0, exec, 2, args.length);
        for (int i = 0; i < exec.length; i++)
@@ -330,7 +325,7 @@ public class AdminIntTest
        final UserRequest<Principal> userRequest =
            new UserRequest<Principal>(expected, "123456".toCharArray());

        final LdapUserDAO<Principal> userDAO = getUserDAO();
        final LdapUserPersistence<Principal> userDAO = getUserPersistence();
        if (isPending)
        {
            userDAO.addPendingUser(userRequest);
@@ -358,7 +353,7 @@ public class AdminIntTest
            {
                try
                {
                    final LdapUserDAO<Principal> userDAO = getUserDAO();
                    final LdapUserPersistence<Principal> userDAO = getUserPersistence();
                    if (isPending)
                    {
                        return userDAO.getPendingUser(userID);
@@ -378,9 +373,9 @@ public class AdminIntTest
        return Subject.doAs(subject, action);
    }

    <T extends Principal> LdapUserDAO<T> getUserDAO()
    <T extends Principal> LdapUserPersistence<T> getUserPersistence()
    {
        return new LdapUserDAO(config);
        return new LdapUserPersistence<T>();
    }

    DNPrincipal getDNPrincipal(final String username, final boolean isPending)
Loading