Search in sources :

Example 61 with User

use of org.apache.catalina.User in project tomcat by apache.

the class MemoryUserDatabaseTests method testSerializePrincipal.

@Test
public void testSerializePrincipal() throws Exception {
    User user = db.findUser("admin");
    GenericPrincipal gpIn = new UserDatabaseRealm.UserDatabasePrincipal(user, db);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
    oos.writeObject(gpIn);
    byte[] data = bos.toByteArray();
    ByteArrayInputStream bis = new ByteArrayInputStream(data);
    ObjectInputStream ois = new ObjectInputStream(bis);
    GenericPrincipal gpOut = (GenericPrincipal) ois.readObject();
    Assert.assertEquals("admin", gpOut.getName());
    assertPrincipalNames(gpOut.getRoles(), user.getRoles());
}
Also used : User(org.apache.catalina.User) GenericPrincipal(org.apache.catalina.realm.GenericPrincipal) ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ObjectOutputStream(java.io.ObjectOutputStream) ObjectInputStream(java.io.ObjectInputStream) Test(org.junit.Test)

Example 62 with User

use of org.apache.catalina.User in project tomcat by apache.

the class MemoryUserDatabaseTests method testReloadUserDatabase.

public void testReloadUserDatabase() throws Exception {
    try (BufferedWriter out = new BufferedWriter(new FileWriter(TEST_FILE))) {
        out.write("<?xml version=\"1.0\" ?>" + "<tomcat-users xmlns=\"http://tomcat.apache.org/xml\"" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:schemaLocation=\"http://tomcat.apache.org/xml/tomcat-users.xsd\"" + " version=\"1.0\">" + "<role rolename=\"foo\" />" + "<group groupname=\"bar\" />" + "<user username=\"root\" password=\"sup3Rsekr3t\" roles=\"foo, bar\" groups=\"bar, foo\" />" + "</tomcat-users>");
        db.open();
    }
    assertPrincipalNames(new String[] { "foo", "bar" }, db.getRoles());
    assertPrincipalNames(new String[] { "bar", "foo" }, db.getGroups());
    Iterator<User> users = db.getUsers();
    Assert.assertTrue("No users found", users.hasNext());
    User user = users.next();
    Assert.assertEquals("root", user.getName());
    Assert.assertNull(user.getFullName());
    Assert.assertEquals("sup3Rsekr3t", user.getPassword());
    assertPrincipalNames(new String[] { "foo", "bar" }, user.getRoles());
    assertPrincipalNames(new String[] { "bar", "foo" }, user.getGroups());
}
Also used : User(org.apache.catalina.User) FileWriter(java.io.FileWriter) BufferedWriter(java.io.BufferedWriter)

Example 63 with User

use of org.apache.catalina.User in project tomcat by apache.

the class MemoryUserDatabaseTests method testMultithreadedMutateUserDatabase.

@Test
public void testMultithreadedMutateUserDatabase() throws Exception {
    // Generate lots of concurrent load on the user database
    Runnable job = new Runnable() {

        @Override
        public void run() {
            for (int i = 0; i < 10; ++i) {
                db.createUser("newUser-" + Thread.currentThread().getName() + "-" + i, "x", null);
            }
        }
    };
    int numThreads = 100;
    Thread[] threads = new Thread[numThreads + 1];
    for (int i = 0; i < numThreads; ++i) {
        threads[i] = new Thread(job);
    }
    // Let's
    threads[numThreads] = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                db.open();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    ++numThreads;
    for (int i = 0; i < numThreads; ++i) {
        threads[i].start();
    }
    for (int i = 0; i < numThreads; ++i) {
        threads[i].join();
    }
    // Remove all those extra users
    Iterator<User> users = db.getUsers();
    for (; users.hasNext(); ) {
        User user = users.next();
        if (user.getUsername().startsWith("newUser")) {
            db.removeUser(user);
        }
    }
    users = db.getUsers();
    Assert.assertTrue("No users found", users.hasNext());
    User user = users.next();
    Assert.assertEquals("admin", user.getName());
    Assert.assertNull(user.getFullName());
    Assert.assertEquals("sekr3t", user.getPassword());
    assertPrincipalNames(new String[] { "testrole", "otherrole" }, user.getRoles());
    assertPrincipalNames(new String[] { "testgroup", "othergroup" }, user.getGroups());
}
Also used : User(org.apache.catalina.User) Test(org.junit.Test)

Aggregations

User (org.apache.catalina.User)63 UserDatabase (org.apache.catalina.UserDatabase)24 Group (org.apache.catalina.Group)21 Role (org.apache.catalina.Role)18 ArrayList (java.util.ArrayList)17 MalformedObjectNameException (javax.management.MalformedObjectNameException)12 ObjectName (javax.management.ObjectName)9 Test (org.junit.Test)5 Connection (java.sql.Connection)4 MBeanException (javax.management.MBeanException)4 RuntimeOperationsException (javax.management.RuntimeOperationsException)4 PreparedStatement (java.sql.PreparedStatement)3 SQLException (java.sql.SQLException)3 ResultSet (java.sql.ResultSet)2 Statement (java.sql.Statement)2 NamingException (javax.naming.NamingException)2 OperationNotSupportedException (javax.naming.OperationNotSupportedException)2 LoggingBaseTest (org.apache.catalina.startup.LoggingBaseTest)2 BufferedWriter (java.io.BufferedWriter)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1