Loading projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/AbstractUserCommand.java +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/Main.java +19 −2 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/ViewUser.java +2 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public class ViewUser extends AbstractUserCommand public ViewUser(final String userID) { super(userID); log.debug("view user: " + userID); } protected void execute() Loading @@ -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); } Loading projects/cadcAccessControl-Admin/test/scripts/userAdminTest +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 $* projects/cadcAccessControl-Admin/test/src/ca/nrc/cadc/ac/admin/integration/AdminIntTest.java +36 −41 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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(); Loading Loading @@ -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++) Loading Loading @@ -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); Loading Loading @@ -358,7 +353,7 @@ public class AdminIntTest { try { final LdapUserDAO<Principal> userDAO = getUserDAO(); final LdapUserPersistence<Principal> userDAO = getUserPersistence(); if (isPending) { return userDAO.getPendingUser(userID); Loading @@ -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 Loading
projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/AbstractUserCommand.java +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading
projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/Main.java +19 −2 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading
projects/cadcAccessControl-Admin/src/ca/nrc/cadc/ac/admin/ViewUser.java +2 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public class ViewUser extends AbstractUserCommand public ViewUser(final String userID) { super(userID); log.debug("view user: " + userID); } protected void execute() Loading @@ -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); } Loading
projects/cadcAccessControl-Admin/test/scripts/userAdminTest +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 $*
projects/cadcAccessControl-Admin/test/src/ca/nrc/cadc/ac/admin/integration/AdminIntTest.java +36 −41 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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(); Loading Loading @@ -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++) Loading Loading @@ -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); Loading Loading @@ -358,7 +353,7 @@ public class AdminIntTest { try { final LdapUserDAO<Principal> userDAO = getUserDAO(); final LdapUserPersistence<Principal> userDAO = getUserPersistence(); if (isPending) { return userDAO.getPendingUser(userID); Loading @@ -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