You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2021/05/12 15:06:47 UTC

svn commit: r1889802 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/security/user/ main/java/org/apache/jackrabbit/oak/security/user/autosave/ test/java/org/apache/jackrabbit/oak/security/user/ test/java/org/apache/jackrab...

Author: angela
Date: Wed May 12 15:06:47 2021
New Revision: 1889802

URL: http://svn.apache.org/viewvc?rev=1889802&view=rev
Log:
OAK-9431 : Improvements to o.a.j.o.security.user package

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidator.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/Utils.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipalTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipWriterTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryHistoryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordHistoryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeNameTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandlerTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/SystemRelativePathTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterImpersonationIgnoreTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterSessionAutosaveTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserManagerImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UtilsTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/QueryUtilTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableActionProviderTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableNodeNameTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java Wed May 12 15:06:47 2021
@@ -192,9 +192,20 @@ abstract class AuthorizableImpl implemen
         }
     }
 
+    @Nullable 
+    String getPrincipalNameOrNull() {
+        if (principalName == null) {
+            PropertyState pNameProp = tree.getProperty(REP_PRINCIPAL_NAME);
+            if (pNameProp != null) {
+                principalName = pNameProp.getValue(STRING);
+            }
+        }
+        return principalName;
+    }
+    
     @NotNull
     String getPrincipalName() throws RepositoryException {
-        String pName = internalGetPrincipalName();
+        String pName = getPrincipalNameOrNull();
         if (pName == null) {
             String msg = "Authorizable without principal name " + id;
             log.warn(msg);
@@ -231,18 +242,7 @@ abstract class AuthorizableImpl implemen
      * is member of; {@code false} otherwise.
      */
     boolean isEveryone() {
-        return isGroup() && EveryonePrincipal.NAME.equals(internalGetPrincipalName());
-    }
-
-    @Nullable
-    private String internalGetPrincipalName() {
-        if (principalName == null) {
-            PropertyState pNameProp = tree.getProperty(REP_PRINCIPAL_NAME);
-            if (pNameProp != null) {
-                principalName = pNameProp.getValue(STRING);
-            }
-        }
-        return principalName;
+        return Utils.isEveryone(this);
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java Wed May 12 15:06:47 2021
@@ -165,13 +165,10 @@ class GroupImpl extends AuthorizableImpl
             return false;
         } else {
             Tree memberTree = authorizableImpl.getTree();
-
             boolean success = getMembershipProvider().removeMember(getTree(), memberTree);
-
             if (success) {
                 getUserManager().onGroupUpdate(this, true, authorizable);
             }
-
             return success;
         }
     }
@@ -203,15 +200,9 @@ class GroupImpl extends AuthorizableImpl
     private Iterator<Authorizable> getMembers(boolean includeInherited) throws RepositoryException {
         UserManagerImpl userMgr = getUserManager();
         if (isEveryone()) {
-            String propName = getUserManager().getNamePathMapper().getJcrName((REP_PRINCIPAL_NAME));
+            String propName = userMgr.getNamePathMapper().getJcrName((REP_PRINCIPAL_NAME));
             Iterator<Authorizable> result = Iterators.filter(userMgr.findAuthorizables(propName, null, UserManager.SEARCH_TYPE_AUTHORIZABLE), Predicates.notNull());
-            return Iterators.filter(result,
-                    authorizable -> {
-                        if (authorizable instanceof AuthorizableImpl) {
-                            return !((AuthorizableImpl) authorizable).isEveryone();
-                        }
-                        return true;
-                    }
+            return Iterators.filter(result, authorizable -> !Utils.isEveryone(authorizable)
             );
         } else {
             Iterator<String> oakPaths = getMembershipProvider().getMembers(getTree(), includeInherited);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java Wed May 12 15:06:47 2021
@@ -181,7 +181,7 @@ class UserAuthentication implements Auth
         return user;
     }
 
-    private static void checkSuccess(boolean success, String msg) throws LoginException {
+    private static void checkSuccess(boolean success, @NotNull String msg) throws LoginException {
         if (!success) {
             throw new FailedLoginException(msg);
         }
@@ -192,7 +192,7 @@ class UserAuthentication implements Auth
         return (base instanceof SimpleCredentials) && userId.equals(((SimpleCredentials) base).getUserID());
     }
 
-    private boolean changePassword(User user, SimpleCredentials credentials) {
+    private boolean changePassword(@NotNull User user, @NotNull SimpleCredentials credentials) {
         try {
             Object newPasswordObject = credentials.getAttribute(CREDENTIALS_ATTRIBUTE_NEWPASSWORD);
             if (newPasswordObject != null) {
@@ -221,7 +221,7 @@ class UserAuthentication implements Auth
         }
     }
 
-    private boolean impersonate(AuthInfo info, User user) {
+    private static boolean impersonate(@NotNull AuthInfo info, @NotNull User user) {
         try {
             if (user.getID().equals(info.getUserID())) {
                 log.debug("User {} wants to impersonate himself -> success.", info.getUserID());
@@ -238,7 +238,7 @@ class UserAuthentication implements Auth
     }
 
     @Nullable
-    private Long getPasswordLastModified(User user) throws RepositoryException {
+    private Long getPasswordLastModified(@NotNull User user) throws RepositoryException {
         Tree userTree;
         if (user instanceof UserImpl) {
             userTree = ((UserImpl) user).getTree();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java Wed May 12 15:06:47 2021
@@ -107,7 +107,7 @@ class UserImpl extends AuthorizableImpl
     }
 
     @Override
-    public void changePassword(String password) throws RepositoryException {
+    public void changePassword(@Nullable String password) throws RepositoryException {
         if (password == null) {
             throw new RepositoryException("Attempt to set 'null' password for user " + getID());
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java Wed May 12 15:06:47 2021
@@ -159,7 +159,7 @@ class UserImporter implements ProtectedP
      * memberships during processing. if both would be handled only via the reference tracker {@link Membership#process()}
      * would remove the members from the property importer.
      */
-    private Map<String, Membership> memberships = new HashMap<>();
+    private final Map<String, Membership> memberships = new HashMap<>();
 
     /**
      * Temporary store for the pw an imported new user to be able to call
@@ -170,7 +170,7 @@ class UserImporter implements ProtectedP
     /**
      * Remember all new principals for impersonation handling.
      */
-    private Map<String, Principal> principals = new HashMap<>();
+    private final Map<String, Principal> principals = new HashMap<>();
 
     private UserMonitor userMonitor = UserMonitor.NOOP;
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidator.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidator.java Wed May 12 15:06:47 2021
@@ -50,7 +50,7 @@ class UserValidator extends DefaultValid
 
     private final AuthorizableType authorizableType;
 
-    UserValidator(Tree parentBefore, Tree parentAfter, UserValidatorProvider provider) {
+    UserValidator(@Nullable Tree parentBefore, @Nullable Tree parentAfter, @NotNull UserValidatorProvider provider) {
         this.parentBefore = parentBefore;
         this.parentAfter = parentAfter;
         this.provider = provider;
@@ -152,9 +152,9 @@ class UserValidator extends DefaultValid
 
     //------------------------------------------------------------< private >---
 
-    private static Validator newValidator(Tree parentBefore,
-                                          Tree parentAfter,
-                                          UserValidatorProvider provider) {
+    private static Validator newValidator(@Nullable Tree parentBefore,
+                                          @Nullable Tree parentAfter,
+                                          @NotNull UserValidatorProvider provider) {
         return new VisibleValidator(
                 new UserValidator(parentBefore, parentAfter, provider),
                 true,

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/Utils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/Utils.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/Utils.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/Utils.java Wed May 12 15:06:47 2021
@@ -16,15 +16,19 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
+import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtil;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 import javax.jcr.AccessDeniedException;
+import javax.jcr.RepositoryException;
 
 final class Utils {
 
@@ -73,4 +77,21 @@ final class Utils {
     static boolean canHavePasswordExpired(@NotNull User user, @NotNull ConfigurationParameters config) {
         return !user.isAdmin() || config.getConfigValue(UserAuthentication.PARAM_PASSWORD_EXPIRY_FOR_ADMIN, false);
     }
+    
+    static boolean isEveryone(@NotNull Authorizable authorizable) {
+        return authorizable.isGroup() && EveryonePrincipal.NAME.equals(getPrincipalName(authorizable));
+    }
+    
+    @Nullable
+    private static String getPrincipalName(@NotNull Authorizable authorizable) {
+        if (authorizable instanceof AuthorizableImpl) {
+            return ((AuthorizableImpl) authorizable).getPrincipalNameOrNull();
+        } else {
+            try {
+                return authorizable.getPrincipal().getName();
+            } catch (RepositoryException e) {
+                return null;
+            }
+        }
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java Wed May 12 15:06:47 2021
@@ -110,7 +110,7 @@ class GroupImpl extends AuthorizableImpl
         }
     }
 
-    private boolean isValid(@NotNull Authorizable a) {
+    private static boolean isValid(@NotNull Authorizable a) {
         return a instanceof AuthorizableImpl;
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipalTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipalTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipalTest.java Wed May 12 15:06:47 2021
@@ -162,7 +162,7 @@ public class AbstractGroupPrincipalTest
 
     private class AGP extends AbstractGroupPrincipal {
 
-        private Authorizable member;
+        private final Authorizable member;
         private boolean isEveryone;
 
         AGP() throws Exception {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java Wed May 12 15:06:47 2021
@@ -47,6 +47,7 @@ import java.util.UUID;
 
 import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -127,7 +128,7 @@ public class CacheValidatorProviderTest
     }
 
     @Test
-    public void testChangePrimaryType() throws RepositoryException {
+    public void testChangePrimaryTypeUser() throws Exception {
         for (Authorizable a : authorizables) {
             try {
                 Tree node = getAuthorizableTree(a);
@@ -177,11 +178,11 @@ public class CacheValidatorProviderTest
 
     @Test
     public void testCreateCacheBelowPersistedProfile() throws Exception {
-        try {
-            Tree node = getAuthorizableTree(getTestUser());
-            Tree child = TreeUtil.addChild(node, "profile", NodeTypeConstants.NT_OAK_UNSTRUCTURED);
-            root.commit();
+        Tree node = getAuthorizableTree(getTestUser());
+        Tree child = TreeUtil.addChild(node, "profile", NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+        root.commit();
 
+        try {
             TreeUtil.addChild(child, CacheConstants.REP_CACHE, CacheConstants.NT_REP_CACHE).setProperty(CacheConstants.REP_EXPIRATION, 23L, Type.LONG);
             root.commit(CacheValidatorProvider.asCommitAttributes());
             fail("Creating rep:cache node below a user or group must fail.");
@@ -235,6 +236,7 @@ public class CacheValidatorProviderTest
         Tree cache = getCache(getTestUser());
         cache.remove();
         root.commit();
+        assertFalse(getAuthorizableTree(getTestUser()).hasChild(CacheConstants.REP_CACHE));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipWriterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipWriterTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipWriterTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipWriterTest.java Wed May 12 15:06:47 2021
@@ -41,10 +41,8 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-
 /**
  * Tests large group and user graphs.
-
  *
  * @since OAK 1.0
  */

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java Wed May 12 15:06:47 2021
@@ -114,7 +114,7 @@ public class PasswordExpiryAdminTest ext
     public void testAuthenticatePasswordExpiredNewUser() throws Exception {
         Authentication a = new UserAuthentication(getUserConfiguration(), root, userId);
         // during user creation pw last modified is set, thus it shouldn't expire
-        a.authenticate(new SimpleCredentials(userId, userId.toCharArray()));
+        assertTrue(a.authenticate(new SimpleCredentials(userId, userId.toCharArray())));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryHistoryTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryHistoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryHistoryTest.java Wed May 12 15:06:47 2021
@@ -21,20 +21,16 @@ import com.google.common.collect.Immutab
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.Authentication;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
-import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableAction;
 import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider;
 import org.apache.jackrabbit.oak.spi.security.user.action.PasswordValidationAction;
-import org.jetbrains.annotations.NotNull;
 import org.junit.Before;
 import org.junit.Test;
 
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.login.CredentialExpiredException;
-import java.util.List;
 
 import static org.apache.jackrabbit.oak.spi.security.user.UserConstants.CREDENTIALS_ATTRIBUTE_NEWPASSWORD;
 import static org.junit.Assert.assertEquals;

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryTest.java Wed May 12 15:06:47 2021
@@ -43,7 +43,6 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.spi.security.user.UserConstants.REP_PWD;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -121,7 +120,7 @@ public class PasswordExpiryTest extends
     public void testAuthenticatePasswordExpiredNewUser() throws Exception {
         Authentication a = new UserAuthentication(getUserConfiguration(), root, userId);
         // during user creation pw last modified is set, thus it shouldn't expire
-        a.authenticate(new SimpleCredentials(userId, userId.toCharArray()));
+        assertTrue(a.authenticate(new SimpleCredentials(userId, userId.toCharArray())));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordHistoryTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordHistoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordHistoryTest.java Wed May 12 15:06:47 2021
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.security.user;
 
 import java.lang.reflect.Field;
+import java.util.Collections;
 import java.util.List;
 import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.ConstraintViolationException;
@@ -42,7 +43,7 @@ import static org.junit.Assert.assertTru
 import static org.junit.Assert.fail;
 
 /**
- * @see OAK-2445
+ * @see <a href="https://issues.apache.org/jira/browse/OAK-2445">OAK-2445</a>
  */
 public class PasswordHistoryTest extends AbstractSecurityTest implements UserConstants {
 
@@ -59,9 +60,8 @@ public class PasswordHistoryTest extends
 
     @NotNull
     private List<String> getHistory(@NotNull User user) throws RepositoryException {
-        return ImmutableList.copyOf(TreeUtil.getStrings(
-                root.getTree(user.getPath()).getChild(REP_PWD),
-                REP_PWD_HISTORY)).reverse();
+        Iterable<String> history = TreeUtil.getStrings(root.getTree(user.getPath()).getChild(REP_PWD), REP_PWD_HISTORY);
+        return (history == null) ? Collections.emptyList() : ImmutableList.copyOf(history).reverse();
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeNameTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeNameTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeNameTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeNameTest.java Wed May 12 15:06:47 2021
@@ -40,7 +40,7 @@ public class RandomAuthorizableNodeNameT
 
     private final String id = "id";
 
-    private AuthorizableNodeName nameGenerator = new RandomAuthorizableNodeName();
+    private final AuthorizableNodeName nameGenerator = new RandomAuthorizableNodeName();
 
     @Override
     public void after() throws Exception {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandlerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandlerTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandlerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandlerTest.java Wed May 12 15:06:47 2021
@@ -398,6 +398,13 @@ public class RepMembersConflictHandlerTe
     }
 
     @Test
+    public void testAddExistingPropertyOther() throws Exception {
+        RepMembersConflictHandler handler = new RepMembersConflictHandler();
+        PropertyState ours = PropertyStates.createProperty("any", "value");
+        assertSame(ThreeWayConflictHandler.Resolution.IGNORED, handler.addExistingProperty(mock(NodeBuilder.class), ours, mock(PropertyState.class)));
+    }
+
+    @Test
     public void testChangeDeletedPropertyRepMembers() {
         RepMembersConflictHandler handler = new RepMembersConflictHandler();
         PropertyState ours = PropertyStates.createProperty(UserConstants.REP_MEMBERS, "value");

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/SystemRelativePathTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/SystemRelativePathTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/SystemRelativePathTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/SystemRelativePathTest.java Wed May 12 15:06:47 2021
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
+import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
@@ -60,11 +61,13 @@ public class SystemRelativePathTest exte
 
     @Test
     public void testRelPath() throws RepositoryException {
-        getUserManager(root).createSystemUser("testRelPath", REL_PATH);
+        User u = getUserManager(root).createSystemUser("testRelPath", REL_PATH);
+        assertTrue(u.getPath().contains("/"+REL_PATH+"/"));
     }
 
     @Test
     public void testBelowRelPath() throws RepositoryException {
-        getUserManager(root).createSystemUser("testBelowRelPath", REL_PATH+"/subtree");
+        User u = getUserManager(root).createSystemUser("testBelowRelPath", REL_PATH+"/subtree");
+        assertTrue(u.getPath().contains("/"+REL_PATH+"/subtree/"));
     }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserContextTest.java Wed May 12 15:06:47 2021
@@ -222,14 +222,14 @@ public class UserContextTest implements
                 NT_REP_MEMBER_REFERENCES, ImmutableList.of(REP_MEMBERS)
         );
 
-        for (String ntName : m.keySet()) {
-            Tree t = mockTree("anyName", ntName);
+        m.forEach((key, value) -> {
+            Tree t = mockTree("anyName", key);
 
             TreeLocation location = Mockito.mock(TreeLocation.class);
             when(location.getTree()).thenReturn(t);
             when(location.exists()).thenReturn(true);
 
-            for (String propName : m.get(ntName)) {
+            for (String propName : value) {
                 PropertyState property = PropertyStates.createProperty(propName, "value");
                 when(location.getProperty()).thenReturn(property);
 
@@ -239,7 +239,7 @@ public class UserContextTest implements
             PropertyState property = PropertyStates.createProperty("anyName", "value");
             when(location.getProperty()).thenReturn(property);
             assertFalse(ctx.definesLocation(location));
-        }
+        });
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterImpersonationIgnoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterImpersonationIgnoreTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterImpersonationIgnoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterImpersonationIgnoreTest.java Wed May 12 15:06:47 2021
@@ -30,8 +30,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.security.user.action.UserAction;
 import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 
 import javax.jcr.RepositoryException;
 
@@ -43,7 +41,6 @@ import static org.junit.Assert.assertNul
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
 
 public class UserImporterImpersonationIgnoreTest extends UserImporterBaseTest {
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterSessionAutosaveTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterSessionAutosaveTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterSessionAutosaveTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterSessionAutosaveTest.java Wed May 12 15:06:47 2021
@@ -16,18 +16,12 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
-import javax.jcr.ImportUUIDBehavior;
-
 import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
-import org.apache.jackrabbit.oak.spi.xml.ReferenceChangeTracker;
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
 
 public class UserImporterSessionAutosaveTest extends UserImporterTest {
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserManagerImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserManagerImplTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserManagerImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserManagerImplTest.java Wed May 12 15:06:47 2021
@@ -71,7 +71,7 @@ import static org.mockito.Mockito.when;
 public class UserManagerImplTest extends AbstractSecurityTest {
 
     private UserManagerImpl userMgr;
-    private String testUserId = "testUser";
+    private final String testUserId = "testUser";
 
     @Before
     public void before() throws Exception {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java Wed May 12 15:06:47 2021
@@ -24,20 +24,22 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
+import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.QueryEngine;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
 import org.apache.jackrabbit.oak.security.principal.AbstractPrincipalProviderTest;
-import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
-import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
 import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
+import java.lang.reflect.Method;
 import java.security.Principal;
 import java.text.ParseException;
 import java.util.Arrays;
@@ -310,4 +312,16 @@ public class UserPrincipalProviderTest e
         assertNotNull(it);
         assertFalse(it.hasNext());
     }
+    
+    @Test
+    public void testCreatePrincipalInvalidType() throws Exception {
+        Method m = UserPrincipalProvider.class.getDeclaredMethod("createPrincipal", Tree.class);
+        m.setAccessible(true);
+        
+        assertNull(m.invoke(principalProvider, (Tree)null));
+        
+        PropertyState ps = PropertyStates.createProperty(JCR_PRIMARYTYPE, NodeTypeConstants.NT_OAK_UNSTRUCTURED, Type.NAME);
+        Tree tree = when(mock(Tree.class).getProperty(JCR_PRIMARYTYPE)).thenReturn(ps).getMock();
+        assertNull(m.invoke(principalProvider, tree));
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java Wed May 12 15:06:47 2021
@@ -41,10 +41,8 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
-import javax.jcr.NoSuchWorkspaceException;
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.Subject;
-import javax.security.auth.login.LoginException;
 import java.security.Principal;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java Wed May 12 15:06:47 2021
@@ -76,8 +76,8 @@ public class UserProviderTest {
     private String defaultGroupPath;
     
     private Map<String, Object> customOptions;
-    private String customUserPath = "/home/users";
-    private String customGroupPath = "/home/groups";
+    private final String customUserPath = "/home/users";
+    private final String customGroupPath = "/home/groups";
 
     @Before
     public void setUp() throws Exception {
@@ -143,9 +143,9 @@ public class UserProviderTest {
         m.put("b_Hb",   "/b/b_/b_Hb");
         m.put("basim", "/b/ba/basim");
 
-        for (String uid : m.keySet()) {
-            userTree = up.createUser(uid, null);
-            assertEquals(defaultUserPath + m.get(uid), userTree.getPath());
+        for (Map.Entry<String, String> entry : m.entrySet()) {
+            userTree = up.createUser(entry.getKey(), null);
+            assertEquals(defaultUserPath + entry.getValue(), userTree.getPath());
         }
     }
 
@@ -214,9 +214,9 @@ public class UserProviderTest {
         m.put("b_Lb",   "/b/b_/b_L/b_Lb");
         m.put("basiL",  "/b/ba/bas/basiL");
 
-        for (String uid : m.keySet()) {
-            userTree = userProvider.createUser(uid, null);
-            assertEquals(customUserPath + m.get(uid), userTree.getPath());
+        for (Map.Entry<String, String> entry : m.entrySet()) {
+            userTree = userProvider.createUser(entry.getKey(), null);
+            assertEquals(customUserPath + entry.getValue(), userTree.getPath());
         }
     }
 
@@ -232,9 +232,9 @@ public class UserProviderTest {
         colliding.put("amalia", null);
         colliding.put("Amalia", "a/b/c");
 
-        for (String uid : colliding.keySet()) {
+        for (Map.Entry<String, String> entry : colliding.entrySet()) {
             try {
-                userProvider.createUser(uid, colliding.get(uid));
+                userProvider.createUser(entry.getKey(), entry.getValue());
                 root.commit();
                 fail("userID collision must be detected");
             } catch (CommitFailedException e) {
@@ -242,9 +242,9 @@ public class UserProviderTest {
             }
         }
 
-        for (String uid : colliding.keySet()) {
+        for (Map.Entry<String, String> entry : colliding.entrySet()) {
             try {
-                userProvider.createGroup(uid, colliding.get(uid));
+                userProvider.createGroup(entry.getKey(), entry.getValue());
                 root.commit();
                 fail("userID collision must be detected");
             } catch (CommitFailedException e) {
@@ -319,11 +319,12 @@ public class UserProviderTest {
         m.put("z/x", "/z/" + Text.escapeIllegalJcrChars("z/") + '/' + Text.escapeIllegalJcrChars("z/x"));
         m.put("%\r|", '/' +Text.escapeIllegalJcrChars("%")+ '/' + Text.escapeIllegalJcrChars("%\r") + '/' + Text.escapeIllegalJcrChars("%\r|"));
 
-        for (String uid : m.keySet()) {
+        for (Map.Entry<String, String> entry : m.entrySet()) {
+            String uid = entry.getKey();
             Tree user = userProvider.createUser(uid, null);
             root.commit();
 
-            assertEquals(defaultUserPath + m.get(uid), user.getPath());
+            assertEquals(defaultUserPath + entry.getValue(), user.getPath());
             assertEquals(uid, UserUtil.getAuthorizableId(user));
 
             Tree ath = userProvider.getAuthorizable(uid);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UtilsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UtilsTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UtilsTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UtilsTest.java Wed May 12 15:06:47 2021
@@ -18,17 +18,23 @@ package org.apache.jackrabbit.oak.securi
 
 import java.util.Map;
 import com.google.common.collect.ImmutableMap;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
 import javax.jcr.AccessDeniedException;
+import javax.jcr.RepositoryException;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -88,9 +94,9 @@ public class UtilsTest extends AbstractS
                 "a/b/c/../..", "/a",
                 "a/././././b/c", "/a/b/c"
         );
-        for (String relPath : map.keySet()) {
-            Tree t = Utils.getOrAddTree(tree, relPath, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
-            assertEqualPath(root.getTree(map.get(relPath)), t);
+        for (Map.Entry<String, String> entry : map.entrySet()) {
+            Tree t = Utils.getOrAddTree(tree, entry.getKey(), NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+            assertEqualPath(root.getTree(entry.getValue()), t);
         }
     }
 
@@ -113,4 +119,34 @@ public class UtilsTest extends AbstractS
 
         Utils.getOrAddTree(t, "a/a/b", NodeTypeConstants.NT_OAK_UNSTRUCTURED);
     }
+    
+    @Test
+    public void testIsEveryoneUser() throws Exception {
+        AuthorizableImpl user = when(mock(AuthorizableImpl.class).getPrincipal()).thenReturn(EveryonePrincipal.getInstance()).getMock();
+        when(user.isGroup()).thenReturn(false);
+        assertFalse(Utils.isEveryone(user));
+    }
+
+    @Test
+    public void testIsEveryoneGroup() throws Exception {
+        Group gr = getUserManager(root).createGroup(EveryonePrincipal.getInstance());
+        assertTrue(Utils.isEveryone(gr));
+    }
+    
+    @Test
+    public void testIsEveryoneOtherAuthorizable() throws Exception {
+        Authorizable a = when(mock(Authorizable.class).getPrincipal()).thenReturn(EveryonePrincipal.getInstance()).getMock();
+        when(a.isGroup()).thenReturn(false);
+        assertFalse(Utils.isEveryone(a));
+
+        when(a.isGroup()).thenReturn(true);
+        assertTrue(Utils.isEveryone(a));
+    }
+
+    @Test
+    public void testIsEveryoneGetPrincipalFails() throws Exception {
+        Authorizable a = when(mock(Authorizable.class).getPrincipal()).thenThrow(new RepositoryException()).getMock();
+        when(a.isGroup()).thenReturn(true);
+        assertFalse(Utils.isEveryone(a));
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/QueryUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/QueryUtilTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/QueryUtilTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/QueryUtilTest.java Wed May 12 15:06:47 2021
@@ -50,14 +50,13 @@ import static org.mockito.Mockito.when;
 
 public class QueryUtilTest {
 
-    private PartialValueFactory valueFactory = new PartialValueFactory(NamePathMapper.DEFAULT);
+    private final PartialValueFactory valueFactory = new PartialValueFactory(NamePathMapper.DEFAULT);
 
     private static void assertSearchRoot(@NotNull Map<AuthorizableType, String> mapping, @NotNull ConfigurationParameters params) {
-        for (AuthorizableType type : mapping.keySet()) {
-            String s = mapping.get(type);
+        mapping.forEach((key, s) -> {
             String expected = (PathUtils.denotesRoot(s)) ? QueryConstants.SEARCH_ROOT_PATH : QueryConstants.SEARCH_ROOT_PATH + s;
-            assertEquals(expected, QueryUtil.getSearchRoot(type, params));
-        }
+            assertEquals(expected, QueryUtil.getSearchRoot(key, params));
+        });
     }
 
     @Test
@@ -156,9 +155,7 @@ public class QueryUtilTest {
                 AuthorizableType.GROUP, UserConstants.NT_REP_GROUP,
                 AuthorizableType.AUTHORIZABLE, UserConstants.NT_REP_AUTHORIZABLE);
 
-        for (AuthorizableType type : ntNames.keySet()) {
-            assertEquals(ntNames.get(type), QueryUtil.getNodeTypeName(type));
-        }
+        ntNames.forEach((key, value) -> assertEquals(value, QueryUtil.getNodeTypeName(key)));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java Wed May 12 15:06:47 2021
@@ -80,7 +80,7 @@ public class UserQueryManagerTest extend
 
     private Value v;
 
-    private List<Group> groups = new ArrayList<>();
+    private final List<Group> groups = new ArrayList<>();
 
     @Before
     public void before() throws Exception {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableActionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableActionProviderTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableActionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableActionProviderTest.java Wed May 12 15:06:47 2021
@@ -25,7 +25,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
-import org.jetbrains.annotations.NotNull;
 import org.junit.After;
 import org.junit.Test;
 import org.mockito.Mockito;

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableNodeNameTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableNodeNameTest.java?rev=1889802&r1=1889801&r2=1889802&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableNodeNameTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/whiteboard/WhiteboardAuthorizableNodeNameTest.java Wed May 12 15:06:47 2021
@@ -20,7 +20,6 @@ import com.google.common.collect.Immutab
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableNodeName;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
-import org.jetbrains.annotations.NotNull;
 import org.junit.After;
 import org.junit.Test;