Author: angela
Date: Mon Apr  3 10:04:51 2017
New Revision: 1789940

URL: http://svn.apache.org/viewvc?rev=1789940&view=rev
Log:
OAK-6019 : UserImporter: Redundant assignment of UserManager
OAK-5882 : Improve coverage for oak.security code in oak-core (wip)

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java

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=1789940&r1=1789939&r2=1789940&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
 Mon Apr  3 10:04:51 2017
@@ -190,7 +190,7 @@ class UserImporter implements ProtectedP
             return false;
         }
 
-        if (!initUserManager((JackrabbitSession) session, isWorkspaceImport, 
securityProvider)) {
+        if (!canInitUserManager((JackrabbitSession) session, 
isWorkspaceImport, securityProvider)) {
             return false;
         }
 
@@ -200,7 +200,7 @@ class UserImporter implements ProtectedP
         return initialized;
     }
 
-    private boolean initUserManager(@Nonnull JackrabbitSession session, 
boolean isWorkspaceImport, @Nonnull SecurityProvider securityProvider) {
+    private static boolean canInitUserManager(@Nonnull JackrabbitSession 
session, boolean isWorkspaceImport, @Nonnull SecurityProvider securityProvider) 
{
         try {
             if (!isWorkspaceImport && session.getUserManager().isAutoSave()) {
                 log.warn("Session import cannot handle user content: 
UserManager is in autosave mode.");
@@ -212,8 +212,6 @@ class UserImporter implements ProtectedP
             log.error("Failed to initialize UserImporter: ", e);
             return false;
         }
-
-        userManager = new UserManagerImpl(root, namePathMapper, 
securityProvider);
         return true;
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java?rev=1789940&r1=1789939&r2=1789940&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
 Mon Apr  3 10:04:51 2017
@@ -16,17 +16,27 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
+import javax.annotation.Nonnull;
 import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
 
+import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
 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.PropInfo;
 import org.apache.jackrabbit.oak.spi.xml.ReferenceChangeTracker;
+import org.apache.jackrabbit.oak.spi.xml.TextValue;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -34,7 +44,7 @@ import static org.junit.Assert.assertFal
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.when;
 
-public class UserImporterTest extends AbstractSecurityTest {
+public class UserImporterTest extends AbstractSecurityTest implements 
UserConstants {
 
     UserImporter importer;
 
@@ -45,6 +55,15 @@ public class UserImporterTest extends Ab
         importer = new UserImporter(getImportConfig());
     }
 
+    @Override
+    public void after() throws Exception {
+        try {
+            root.refresh();
+        } finally {
+            super.after();
+        }
+    }
+
     ConfigurationParameters getImportConfig() {
         return ConfigurationParameters.EMPTY;
     }
@@ -63,6 +82,33 @@ public class UserImporterTest extends Ab
         return importer.init(mockJackrabbitSession(), root, 
getNamePathMapper(), isWorkspaceImport(), 
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING, new 
ReferenceChangeTracker(), getSecurityProvider());
     }
 
+    private Tree createUserTree() {
+        Tree folder = 
root.getTree(getUserConfiguration().getParameters().getConfigValue(PARAM_USER_PATH,
 DEFAULT_USER_PATH));
+        Tree userTree = folder.addChild("userTree");
+        userTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_USER, 
Type.NAME);
+        return userTree;
+    }
+
+    private PropInfo createPropInfo(@Nonnull String name, final String value) {
+        return new PropInfo(name, PropertyType.STRING, new TextValue() {
+            @Override
+            public String getString() {
+                return value;
+            }
+
+            @Override
+            public Value getValue(int targetType) throws RepositoryException {
+                return getValueFactory(root).createValue(value, targetType);
+            }
+
+            @Override
+            public void dispose() {
+                //nop
+            }
+        });
+    }
+
+    //---------------------------------------------------------------< init 
>---
     @Test
     public void testInitNoJackrabbitSession() throws Exception {
         Session s = Mockito.mock(Session.class);
@@ -95,4 +141,53 @@ public class UserImporterTest extends Ab
     public void testInitImportUUIDBehaviourCreateNew() throws Exception {
         assertFalse(importer.init(mockJackrabbitSession(), root, 
getNamePathMapper(), isWorkspaceImport(), 
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW, new ReferenceChangeTracker(), 
getSecurityProvider()));
     }
+
+    @Test(expected = IllegalStateException.class)
+    public void testHandlePropInfoNotInitialized() throws Exception {
+        importer.handlePropInfo(createUserTree(), 
Mockito.mock(PropInfo.class), Mockito.mock(PropertyDefinition.class));
+    }
+
+    //-----------------------------------------------------< handlePropInfo 
>---
+
+    @Test
+    public void testHandlePropInfoParentNotAuthorizable() throws Exception {
+        init();
+        assertFalse(importer.handlePropInfo(root.getTree("/"), 
Mockito.mock(PropInfo.class), Mockito.mock(PropertyDefinition.class)));
+    }
+
+    //--------------------------------------------------< processReferences 
>---
+
+    @Test(expected = IllegalStateException.class)
+    public void testProcessReferencesNotInitialized() throws Exception {
+        importer.processReferences();
+    }
+
+    //------------------------------------------------< propertiesCompleted 
>---
+
+    @Test
+    public void testPropertiesCompletedClearsCache() throws Exception {
+        Tree userTree = createUserTree();
+        Tree cacheTree = userTree.addChild(CacheConstants.REP_CACHE);
+        cacheTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, 
CacheConstants.NT_REP_CACHE);
+
+        importer.propertiesCompleted(cacheTree);
+        assertFalse(cacheTree.exists());
+        assertFalse(userTree.hasChild(CacheConstants.REP_CACHE));
+    }
+
+    @Test
+    public void testPropertiesCompletedParentNotAuthorizable() throws 
Exception {
+        init();
+        importer.propertiesCompleted(root.getTree("/"));
+    }
+
+    @Test
+    public void testPropertiesCompletedMissingId() throws Exception {
+        init();
+        Tree userTree = createUserTree();
+        importer.propertiesCompleted(userTree);
+
+        assertTrue(userTree.hasProperty(REP_AUTHORIZABLE_ID));
+    }
+
 }
\ No newline at end of file


Reply via email to