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