You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/09/24 12:30:35 UTC

svn commit: r818433 [2/2] - in /jackrabbit/trunk: jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principa...

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserAdministratorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserAdministratorTest.java?rev=818433&r1=818432&r2=818433&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserAdministratorTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserAdministratorTest.java Thu Sep 24 10:30:34 2009
@@ -32,6 +32,8 @@
 import java.security.Principal;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
 
 /**
  * <code>UserAdministratorTest</code>...
@@ -43,7 +45,6 @@
 
     // user-admin 'below'
     private String otherUID;
-    private String otherPath;
     private Session otherSession;
 
     // the user-admin group
@@ -64,7 +65,6 @@
         Credentials otherCreds = buildCredentials(p.getName(), pw);
         User other = userMgr.createUser(p.getName(), pw);
         otherUID = other.getID();
-        otherPath = ((UserImpl) other).getNode().getPath();
 
         // make other user a user-administrator:
         Authorizable ua = userMgr.getAuthorizable(UserConstants.USER_ADMIN_GROUP_NAME);
@@ -136,13 +136,43 @@
     public void testCreateUserWithIntermediatePath() throws RepositoryException, NotExecutableException {
         UserManager umgr = getUserManager(otherSession);
         UserImpl u = null;
+
         // create a new user with intermediate-path
         // -> must succeed and user must be created
-        // -> intermediate path must be ignored.
+        // -> intermediate path must be part of the nodes path
+        Principal p = getTestPrincipal();
+        String usersPath = ((UserManagerImpl) umgr).getUsersPath();
+        Map<String, String> m = new HashMap<String, String>();
+        m.put("/some/intermediate/path", usersPath + "/some/intermediate/path/" + p.getName());
+        m.put("some/intermediate/path", usersPath + "/some/intermediate/path/" + p.getName());
+        m.put("/", usersPath + "/" + p.getName());
+        m.put("", usersPath + "/" + p.getName());
+        m.put(usersPath + "/some/intermediate/path", usersPath + "/some/intermediate/path/" + p.getName());
+
+        for (String intermediatePath : m.keySet()) {
+            try {
+                u = (UserImpl) umgr.createUser(p.getName(), buildPassword(p), p, intermediatePath);
+                String expPath = m.get(intermediatePath);
+                assertEquals(expPath, u.getNode().getPath());
+            } finally {
+                if (u != null) {
+                    u.remove();
+                }
+            }
+        }
+    }
+
+    public void testCreateNestedUsers() throws NotExecutableException, RepositoryException {
+        UserManager umgr = getUserManager(otherSession);
+        UserImpl u = null;
+
+        String invalidIntermediatePath = ((UserImpl) umgr.getAuthorizable(otherUID)).getNode().getPath();
         try {
             Principal p = getTestPrincipal();
-            u = (UserImpl) umgr.createUser(p.getName(), buildPassword(p), p, "/some/intermediate/path");
-            assertEquals(-1, u.getNode().getPath().indexOf("/some/intermediate/path"));
+            u = (UserImpl) umgr.createUser(p.getName(), buildPassword(p), p, invalidIntermediatePath);
+            fail("An attempt to create a user below an existing user must fail.");
+        } catch (RepositoryException e) {
+            // success
         } finally {
             if (u != null) {
                 u.remove();