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 2010/12/10 16:46:57 UTC

svn commit: r1044407 - in /jackrabbit/branches/2.2: ./ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ jackrabbit-core/src/test/java/org/apache/jackrab...

Author: angela
Date: Fri Dec 10 15:46:57 2010
New Revision: 1044407

URL: http://svn.apache.org/viewvc?rev=1044407&view=rev
Log:
JCR-2840 :  Inconsistencies if "everyone" Group is created by User Management (merging changes from trunk)

Added:
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipalTest.java
      - copied unchanged from r1044312, jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipalTest.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java
      - copied unchanged from r1044312, jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java
Modified:
    jackrabbit/branches/2.2/   (props changed)
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalImpl.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
    jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/TestAll.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TestAll.java
    jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java

Propchange: jackrabbit/branches/2.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Dec 10 15:46:57 2010
@@ -2,4 +2,4 @@
 /jackrabbit/sandbox/JCR-1456:774917-886178
 /jackrabbit/sandbox/JCR-2170:812417-816332
 /jackrabbit/sandbox/tripod-JCR-2209:795441-795863
-/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090,1040459,1040601,1040606,1040661,1040958,1041379,1041439,1041761,1042643,1042647,1042978-1042982,1043084-1043086,1043088,1043343,1043357-1043358,1043430,1043554,1043616,1043618,1043637,1043656
+/jackrabbit/trunk:1038201,1038203,1038205,1038657,1039064,1039347,1039408,1039422-1039423,1039888,1039946,1040033,1040090,1040459,1040601,1040606,1040661,1040958,1041379,1041439,1041761,1042643,1042647,1042978-1042982,1043084-1043086,1043088,1043343,1043357-1043358,1043430,1043554,1043616,1043618,1043637,1043656,1044312

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java Fri Dec 10 15:46:57 2010
@@ -121,15 +121,13 @@ public class DefaultPrincipalProvider ex
      */
     @Override
     protected Principal providePrincipal(String principalName) {
-        // check for 'everyone'
-        if (everyonePrincipal.getName().equals(principalName)) {
-            return everyonePrincipal;
-        }
         try {
             Principal principal = new PrincipalImpl(principalName);
             Authorizable ath = userManager.getAuthorizable(principal);
             if (ath != null) {
                 return ath.getPrincipal();
+            } else if (EveryonePrincipal.NAME.equals(principalName)) {
+                return everyonePrincipal;
             }
         } catch (RepositoryException e) {
             log.error("Failed to access Authorizable for Principal " + principalName, e);
@@ -351,6 +349,9 @@ public class DefaultPrincipalProvider ex
             while (authorizableItr.hasNext()) {
                 try {
                     Principal p = authorizableItr.next().getPrincipal();
+                    if (everyonePrincipal.equals(p)) {
+                        addEveryone = false;
+                    }
                     addToCache(p);
                     return p;
                 } catch (RepositoryException e) {

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java Fri Dec 10 15:46:57 2010
@@ -16,15 +16,17 @@
  */
 package org.apache.jackrabbit.core.security.principal;
 
+import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
+
 import java.security.Principal;
 import java.util.Enumeration;
 
 /**
  * The EveryonePrincipal contains all principals (excluding itself).
  */
-public final class EveryonePrincipal implements java.security.acl.Group {
+public final class EveryonePrincipal implements java.security.acl.Group, JackrabbitPrincipal {
 
-    private static final String NAME = "everyone";
+    public static final String NAME = "everyone";
     private static final EveryonePrincipal INSTANCE = new EveryonePrincipal();
 
     private EveryonePrincipal() { }
@@ -64,6 +66,11 @@ public final class EveryonePrincipal imp
 
     @Override
     public boolean equals(Object obj) {
-        return obj == this || obj instanceof EveryonePrincipal;
+        if (obj == this || obj instanceof EveryonePrincipal) {
+            return true;
+        } else if (obj instanceof JackrabbitPrincipal) {
+            return NAME.equals(((JackrabbitPrincipal) obj).getName());
+        }
+        return false;
     }
 }

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalImpl.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalImpl.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalImpl.java Fri Dec 10 15:46:57 2010
@@ -66,7 +66,6 @@ public class PrincipalImpl implements Ja
             return true;
         }
         if (obj instanceof JackrabbitPrincipal) {
-            // TODO: check if correct
             return name.equals(((Principal) obj).getName());
         }
         return false;

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java Fri Dec 10 15:46:57 2010
@@ -144,7 +144,11 @@ public class PrincipalManagerImpl implem
      */
     public Principal getEveryone() {
         checkIsValid();
-        return EveryonePrincipal.getInstance();
+        Principal everyone = getPrincipal(EveryonePrincipal.NAME);
+        if (everyone == null) {
+            everyone = EveryonePrincipal.getInstance();
+        }
+        return everyone;
     }
 
     //--------------------------------------------------------------------------

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java Fri Dec 10 15:46:57 2010
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.core.NodeIm
 import org.apache.jackrabbit.core.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
+import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.util.Text;
@@ -328,6 +329,10 @@ abstract class AuthorizableImpl implemen
         return node.getProperty(P_PRINCIPAL_NAME).getString();
     }
 
+    boolean isEveryone() throws RepositoryException {
+        return isGroup() && EveryonePrincipal.NAME.equals(getPrincipalName());
+    }
+
     private Iterator<Group> collectMembership(boolean includeIndirect) throws RepositoryException {
         Collection<String> groupNodeIds;
         MembershipCache cache = userManager.getMembershipCache();

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java Fri Dec 10 15:46:57 2010
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.commons.fla
 import org.apache.jackrabbit.commons.iterator.LazyIteratorChain;
 import org.apache.jackrabbit.core.NodeImpl;
 import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.core.session.SessionContext;
 import org.apache.jackrabbit.core.session.SessionWriteOperation;
 import org.apache.jackrabbit.spi.commons.iterator.Iterators;
@@ -94,22 +95,31 @@ class GroupImpl extends AuthorizableImpl
      * @see Group#getDeclaredMembers()
      */
     public Iterator<Authorizable> getDeclaredMembers() throws RepositoryException {
-        return getMembers(false, UserManager.SEARCH_TYPE_AUTHORIZABLE);
+        if (isEveryone()) {
+            return userManager.findAuthorizables(getSession().getJCRName(P_PRINCIPAL_NAME), null, UserManager.SEARCH_TYPE_AUTHORIZABLE);
+        } else {
+            return getMembers(false, UserManager.SEARCH_TYPE_AUTHORIZABLE);
+        }
     }
 
     /**
      * @see Group#getMembers()
      */
     public Iterator<Authorizable> getMembers() throws RepositoryException {
-        return getMembers(true, UserManager.SEARCH_TYPE_AUTHORIZABLE);
+        if (isEveryone()) {
+            return getDeclaredMembers();
+        } else {
+            return getMembers(true, UserManager.SEARCH_TYPE_AUTHORIZABLE);
+        }
     }
 
     public boolean isDeclaredMember(Authorizable authorizable) throws RepositoryException {
         if (authorizable == null || !(authorizable instanceof AuthorizableImpl)
                 || getNode().isSame(((AuthorizableImpl) authorizable).getNode())) {
             return false;
-        }
-        else {
+        } else if (isEveryone()) {
+            return true;
+        } else {
             return getMembershipProvider(getNode()).hasMember((AuthorizableImpl) authorizable);
         }
     }
@@ -121,6 +131,8 @@ class GroupImpl extends AuthorizableImpl
         if (authorizable == null || !(authorizable instanceof AuthorizableImpl)
                 || getNode().isSame(((AuthorizableImpl) authorizable).getNode())) {
             return false;
+        } else if (isEveryone()) {
+            return true;
         } else {
             String thisID = getID();
             AuthorizableImpl impl = (AuthorizableImpl) authorizable;
@@ -141,6 +153,9 @@ class GroupImpl extends AuthorizableImpl
             log.warn("Invalid Authorizable: {}", authorizable);
             return false;
         }
+        if (isEveryone() || ((AuthorizableImpl) authorizable).isEveryone()) {
+            return false;
+        }
 
         AuthorizableImpl authImpl = ((AuthorizableImpl) authorizable);
         Node memberNode = authImpl.getNode();
@@ -167,6 +182,9 @@ class GroupImpl extends AuthorizableImpl
             log.warn("Invalid Authorizable: {}", authorizable);
             return false;
         }
+        if (isEveryone()) {
+            return false;
+        }
 
         return getMembershipProvider(getNode()).removeMember((AuthorizableImpl) authorizable);
     }

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java Fri Dec 10 15:46:57 2010
@@ -30,6 +30,7 @@ import org.apache.jackrabbit.core.Sessio
 import org.apache.jackrabbit.core.SessionListener;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.SystemPrincipal;
+import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.core.session.SessionOperation;
 import org.apache.jackrabbit.spi.Name;
@@ -580,7 +581,7 @@ public class UserManagerImpl extends Pro
      * @see UserManager#createGroup(java.security.Principal, String)
      */
     public Group createGroup(Principal principal, String intermediatePath) throws AuthorizableExistsException, RepositoryException {
-        checkValidPrincipal(principal);
+        checkValidPrincipal(principal, true);
         
         String groupID = getGroupId(principal.getName());
         return createGroup(groupID, principal, intermediatePath);
@@ -658,7 +659,7 @@ public class UserManagerImpl extends Pro
      * @throws RepositoryException If another error occurs.
      */
     void setPrincipal(NodeImpl node, Principal principal) throws AuthorizableExistsException, RepositoryException {
-        checkValidPrincipal(principal);        
+        checkValidPrincipal(principal, node.isNodeType(NT_REP_GROUP));        
         /*
          Check if there is *another* authorizable with the same principal.
          The additional validation (nodes not be same) is required in order to
@@ -953,11 +954,15 @@ public class UserManagerImpl extends Pro
      * Throws <code>IllegalArgumentException</code> if the specified principal
      * is <code>null</code> or if it's name is <code>null</code> or empty string.
      * @param principal
+     * @param isGroup
      */
-    private static void checkValidPrincipal(Principal principal) {
+    private static void checkValidPrincipal(Principal principal, boolean isGroup) {
         if (principal == null || principal.getName() == null || "".equals(principal.getName())) {
             throw new IllegalArgumentException("Principal may not be null and must have a valid name.");
         }
+        if (!isGroup && EveryonePrincipal.NAME.equals(principal.getName())) {
+            throw new IllegalArgumentException("'everyone' is a reserved group principal name.");
+        }
     }
 
     private static int parseMembershipSplitSize(Object param) {

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/TestAll.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/TestAll.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/TestAll.java Fri Dec 10 15:46:57 2010
@@ -36,6 +36,7 @@ public class TestAll extends TestCase {
         TestSuite suite = new TestSuite("core.security.principal tests");
 
         suite.addTestSuite(AbstractPrincipalProviderTest.class);
+        suite.addTestSuite(EveryonePrincipalTest.class);
         
         return suite;
     }

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java Fri Dec 10 15:46:57 2010
@@ -181,4 +181,50 @@ public class DefaultPrincipalProviderTes
             save(superuser);
         }
     }
+
+    public void testEveryonePrincipal() throws Exception {
+        Principal p = principalProvider.getPrincipal(EveryonePrincipal.NAME);
+        assertNotNull(p);
+        assertEquals(EveryonePrincipal.getInstance(), p);
+
+        PrincipalIterator pit = principalProvider.findPrincipals(EveryonePrincipal.NAME);
+        assertNotNull(pit);
+        if (pit.getSize() == -1) {
+            assertTrue(pit.hasNext());
+            assertEquals(EveryonePrincipal.getInstance(), pit.nextPrincipal());
+            assertFalse(pit.hasNext());
+        } else {
+            assertEquals(1, pit.getSize());
+            assertEquals(EveryonePrincipal.getInstance(), pit.nextPrincipal());
+        }
+    }
+
+    public void testEveryonePrincipal2() throws Exception {
+        Group g = null;
+        try {
+            g = userMgr.createGroup(EveryonePrincipal.NAME);
+            save(superuser);
+
+            Principal p = principalProvider.getPrincipal(EveryonePrincipal.NAME);
+            assertNotNull(p);
+            assertEquals(EveryonePrincipal.getInstance(), p);
+
+            PrincipalIterator pit = principalProvider.findPrincipals(EveryonePrincipal.NAME);
+            assertNotNull(pit);
+            if (pit.getSize() == -1) {
+                assertTrue(pit.hasNext());
+                assertEquals(EveryonePrincipal.getInstance(), pit.nextPrincipal());
+                assertFalse(pit.hasNext());
+            } else {
+                assertEquals(1, pit.getSize());
+                assertEquals(EveryonePrincipal.getInstance(), pit.nextPrincipal());
+            }
+
+        } finally {
+            if (g != null) {
+                g.remove();
+                save(superuser);
+            }
+        }
+    }
 }
\ No newline at end of file

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TestAll.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TestAll.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TestAll.java Fri Dec 10 15:46:57 2010
@@ -35,6 +35,7 @@ public class TestAll extends TestCase {
         suite.addTestSuite(UserManagerImplTest.class);
         suite.addTestSuite(AuthorizableImplTest.class);
         suite.addTestSuite(UserImplTest.class);
+        suite.addTestSuite(GroupImplTest.class);
         suite.addTestSuite(ImpersonationImplTest.class);
 
         suite.addTestSuite(UserAdministratorTest.class);

Modified: jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java?rev=1044407&r1=1044406&r2=1044407&view=diff
==============================================================================
--- jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java (original)
+++ jackrabbit/branches/2.2/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java Fri Dec 10 15:46:57 2010
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.core.SessionImpl;
 import org.apache.jackrabbit.core.security.TestPrincipal;
+import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 
@@ -166,6 +167,21 @@ public class UserManagerImplTest extends
         }
     }
 
+    public void testCreateEveryoneUser() throws Exception {
+        User u = null;
+        try {
+            u = userMgr.createUser(EveryonePrincipal.NAME, "pw");
+            fail("everyone is a reserved group name");
+        } catch (IllegalArgumentException e) {
+            // success
+        } finally {
+            if (u != null) {
+                u.remove();
+            }
+        }
+
+    }
+
     public void testCreateGroupWithId() throws RepositoryException, NotExecutableException {
         Principal p = getTestPrincipal();
         String uid = p.getName();