Author: stillalex
Date: Mon Jun 11 13:56:52 2018
New Revision: 1833329
URL: http://svn.apache.org/viewvc?rev=1833329&view=rev
Log:
OAK-6027 UserImporter.Impersonators : use Oak path to user instead of ID
- merged r1790006 into 1.6 branch
Modified:
jackrabbit/oak/branches/1.6/ (props changed)
jackrabbit/oak/branches/1.6/oak-core/ (props changed)
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
Propchange: jackrabbit/oak/branches/1.6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 11 13:56:52 2018
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785652,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789534,1789925,1789940,1789987,1790382,1790502-1790503,1792049,1792463,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798832,1798834,1799219,1799389,1799393,1799924,1800244,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802905,1802934,1802938
,1802973,1803026,1803247-1803249,1803951,1803953-1803955,1804437,1805851-1805852,1806668,1807308,1807688,1808022,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1809289,1809745,1811071-1811072,1811155,1811380,1811655,1811952,1811963,1811986,1813192,1814189,1814332,1814397,1815201,1815438,1815926,1817326,1817919,1817987-1817988,1817990,1818038,1818042,1818056,1818124,1818554,1818576,1818645,1819048,1819050,1821325,1821358,1821495,1821516,1822850,1823172,1825471,1826237,1826338,1826532,1826640,1826932,1826957,1827472,1827486,1827977,1829569,1829987,1830019,1830160,1830748,1831374,1832379,1832535
+/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785652,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789534,1789925,1789940,1789987,1790006,1790382,1790502-1790503,1792049,1792463,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798832,1798834,1799219,1799389,1799393,1799924,1800244,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802905,1802934
,1802938,1802973,1803026,1803247-1803249,1803951,1803953-1803955,1804437,1805851-1805852,1806668,1807308,1807688,1808022,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1809289,1809745,1811071-1811072,1811155,1811380,1811655,1811952,1811963,1811986,1813192,1814189,1814332,1814397,1815201,1815438,1815926,1817326,1817919,1817987-1817988,1817990,1818038,1818042,1818056,1818124,1818554,1818576,1818645,1819048,1819050,1821325,1821358,1821495,1821516,1822850,1823172,1825471,1826237,1826338,1826532,1826640,1826932,1826957,1827472,1827486,1827977,1829569,1829987,1830019,1830160,1830748,1831374,1832379,1832535
/jackrabbit/trunk:1345480
Propchange: jackrabbit/oak/branches/1.6/oak-core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 11 13:56:52 2018
@@ -1,5 +1,5 @@
/jackrabbit/oak/branches/1.0/oak-core:1665962
/jackrabbit/oak/trunk/oak-blob-plugins:1819950
-/jackrabbit/oak/trunk/oak-core:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785652,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789441,1789534,1789925,1789940,1789987,1790382,1792049,1792463,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798832,1798834,1799219,1799389,1799393,1799861,1799924,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802905,1802934,180293
8,1802973,1803026,1803247-1803249,1803951,1803953-1803955,1804437,1805851-1805852,1806668,1807308,1807688,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1811380,1811952,1811963,1811986,1814332,1818645,1821325,1821358,1821516,1830160
+/jackrabbit/oak/trunk/oak-core:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782476,1782770,1782945,1782966,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783110,1783619,1783720,1783731,1783733,1783738,1783742,1783773,1783855,1783891,1784023,1784034,1784130,1784162,1784251,1784401,1784551,1784574,1784689,1785095,1785108,1785283,1785652,1785838,1785917,1785919,1785946,1786122,1787074,1787145,1787151,1787217,1787425,1788056,1788378,1788387-1788389,1788463,1788476,1788850,1789056,1789441,1789534,1789925,1789940,1789987,1790006,1790382,1792049,1792463,1792742,1792746,1793013,1793088,1793618,1793627,1793644,1794393,1794417,1794683,1795138,1795314,1795330,1795475,1795488,1795491,1795502,1795594,1795613,1795618,1796144,1796230,1796239,1796274,1796278,1796988,1797378,1798035,1798832,1798834,1799219,1799389,1799393,1799861,1799924,1800269,1800606,1800613,1800974,1801011,1801013,1801118-1801119,1801675,1802260,1802262,1802286,1802548,1802905,180293
4,1802938,1802973,1803026,1803247-1803249,1803951,1803953-1803955,1804437,1805851-1805852,1806668,1807308,1807688,1808125,1808128,1808142,1808240,1808246,1809024,1809026,1809131,1809163,1809253,1809255-1809256,1811380,1811952,1811963,1811986,1814332,1818645,1821325,1821358,1821516,1830160
/jackrabbit/oak/trunk/oak-store-document:1809866,1811575,1811702,1811709,1811823,1811835,1811931,1812739,1812750,1812753,1814407,1814499,1814579,1815450,1815466,1815940,1816436,1817379,1818301,1818303,1818903,1818906,1819421,1820199,1820661,1821130,1821477,1821487,1823163,1823169,1824962,1825442,1825470
/jackrabbit/trunk/oak-core:1345480
Modified:
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java?rev=1833329&r1=1833328&r2=1833329&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
(original)
+++
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
Mon Jun 11 13:56:52 2018
@@ -297,7 +297,7 @@ class UserImporter implements ProtectedP
// since impersonators may be imported later on, postpone
processing
// to the end.
// see -> process References
- referenceTracker.processedReference(new
Impersonators(a.getID(), propInfo.getTextValues()));
+ referenceTracker.processedReference(new
Impersonators(parent.getPath(), propInfo.getTextValues()));
return true;
} else if (REP_DISABLED.equals(propName)) {
@@ -665,20 +665,20 @@ class UserImporter implements ProtectedP
*/
private final class Impersonators {
- private final String userId;
+ private final String userPath;
private final Set<String> principalNames = new HashSet<String>();
- private Impersonators(String userId, List<? extends TextValue> values)
{
- this.userId = userId;
+ private Impersonators(String userPath, List<? extends TextValue>
values) {
+ this.userPath = userPath;
for (TextValue v : values) {
principalNames.add(v.getString());
}
}
private void process() throws RepositoryException {
- Authorizable a = userManager.getAuthorizable(userId);
+ Authorizable a = userManager.getAuthorizableByOakPath(userPath);
if (a == null || a.isGroup()) {
- throw new RepositoryException(userId + " does not represent a
valid user.");
+ throw new RepositoryException(userPath + " does not represent
a valid user.");
}
Impersonation imp = checkNotNull(((User) a).getImpersonation());
Modified:
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java?rev=1833329&r1=1833328&r2=1833329&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
(original)
+++
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserImporterTest.java
Mon Jun 11 13:56:52 2018
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.security.user;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import javax.annotation.Nonnull;
import javax.jcr.ImportUUIDBehavior;
@@ -29,6 +30,7 @@ import javax.jcr.nodetype.PropertyDefini
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.api.JackrabbitSession;
@@ -38,19 +40,23 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.PropertyState;
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.commons.PathUtils;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
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.GroupAction;
+import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil;
import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
import org.apache.jackrabbit.oak.spi.xml.PropInfo;
import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
@@ -63,6 +69,7 @@ import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
@@ -70,6 +77,7 @@ import static org.mockito.Mockito.when;
public class UserImporterTest extends AbstractSecurityTest implements
UserConstants {
private static final String TEST_USER_ID = "uid";
+ private static final String TEST_GROUP_ID = "gid";
private TestAction testAction;
AuthorizableActionProvider actionProvider = new
AuthorizableActionProvider() {
@@ -79,8 +87,11 @@ public class UserImporterTest extends Ab
return (testAction == null) ?
ImmutableList.<AuthorizableAction>of() : ImmutableList.of(testAction);
}
};
+
private User testUser;
+ private ReferenceChangeTracker refTracker = new ReferenceChangeTracker();
+
UserImporter importer;
@Override
@@ -94,6 +105,7 @@ public class UserImporterTest extends Ab
@Override
public void after() throws Exception {
try {
+ refTracker.clear();
root.refresh();
} finally {
super.after();
@@ -136,7 +148,7 @@ public class UserImporterTest extends Ab
if (createAction) {
testAction = new TestAction();
}
- return importer.init(mockJackrabbitSession(), root,
getNamePathMapper(), isWorkspaceImport(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING, new
ReferenceChangeTracker(), getSecurityProvider());
+ return importer.init(mockJackrabbitSession(), root,
getNamePathMapper(), isWorkspaceImport(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING, refTracker,
getSecurityProvider());
}
private Tree createUserTree() {
@@ -153,26 +165,32 @@ public class UserImporterTest extends Ab
NodeUtil node = new NodeUtil(root.getTree(PathUtils.ROOT_PATH));
NodeUtil groupRoot =
node.getOrAddTree(PathUtils.relativize(PathUtils.ROOT_PATH, groupPath),
NT_REP_AUTHORIZABLE_FOLDER);
- return groupRoot.addChild("testGroup", NT_REP_GROUP).getTree();
- }
-
- 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
- }
- });
+ Tree groupTree = groupRoot.addChild("testGroup",
NT_REP_GROUP).getTree();
+ groupTree.setProperty(JcrConstants.JCR_UUID, new UserProvider(root,
ConfigurationParameters.EMPTY).getContentID(TEST_GROUP_ID));
+ return groupTree;
+ }
+
+ private PropInfo createPropInfo(@Nonnull String name, final String...
values) {
+ List<TextValue> txtValues = Lists.newArrayList();
+ for (final String v : values) {
+ txtValues.add(new TextValue() {
+ @Override
+ public String getString() {
+ return v;
+ }
+
+ @Override
+ public Value getValue(int targetType) throws
RepositoryException {
+ return getValueFactory(root).createValue(v, targetType);
+ }
+
+ @Override
+ public void dispose() {
+ //nop
+ }
+ });
+ }
+ return new PropInfo(name, PropertyType.STRING, txtValues);
}
private PropertyDefinition mockPropertyDefinition(@Nonnull String
declaringNt, boolean mv) throws Exception {
@@ -275,6 +293,166 @@ public class UserImporterTest extends Ab
assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_AUTHORIZABLE_ID, TEST_USER_ID),
mockPropertyDefinition(NT_REP_USER, false)));
}
+ @Test
+ public void testHandlePrincipalName() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_PRINCIPAL_NAME, "principalName"),
mockPropertyDefinition(NT_REP_AUTHORIZABLE, false)));
+ assertEquals("principalName",
userTree.getProperty(REP_PRINCIPAL_NAME).getValue(Type.STRING));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testHandleEmptyPrincipalName() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ importer.handlePropInfo(userTree, createPropInfo(REP_PRINCIPAL_NAME,
""), mockPropertyDefinition(NT_REP_AUTHORIZABLE, false));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testHandleEveryonePrincipalNameOnUser() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ importer.handlePropInfo(userTree, createPropInfo(REP_PRINCIPAL_NAME,
EveryonePrincipal.NAME), mockPropertyDefinition(NT_REP_AUTHORIZABLE, false));
+ }
+
+ @Test
+ public void testHandlePrincipalNameMvPropertyDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_PRINCIPAL_NAME, "principalName"),
mockPropertyDefinition(NT_REP_AUTHORIZABLE, true)));
+ assertNull(userTree.getProperty(REP_PRINCIPAL_NAME));
+ }
+
+ @Test
+ public void testHandlePrincipalNameOtherDeclNtDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_PRINCIPAL_NAME, "principalName"),
mockPropertyDefinition(NT_REP_AUTHORIZABLE_FOLDER, false)));
+ assertNull(userTree.getProperty(REP_PRINCIPAL_NAME));
+ }
+
+ @Test
+ public void testHandlePassword() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ String pwHash = PasswordUtil.buildPasswordHash("pw");
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_PASSWORD, pwHash), mockPropertyDefinition(NT_REP_USER,
false)));
+ assertEquals(pwHash,
userTree.getProperty(REP_PASSWORD).getValue(Type.STRING));
+ }
+
+ @Test
+ public void testHandlePasswordOnSystemUser() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ userTree.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_SYSTEM_USER,
Type.NAME);
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_PASSWORD, PasswordUtil.buildPasswordHash("pw")),
mockPropertyDefinition(NT_REP_USER, false)));
+ }
+
+ @Test
+ public void testHandlePasswordOnGroup() throws Exception {
+ init();
+ Tree groupTree = createGroupTree();
+ assertFalse(importer.handlePropInfo(groupTree,
createPropInfo(REP_PASSWORD, PasswordUtil.buildPasswordHash("pw")),
mockPropertyDefinition(NT_REP_USER, false)));
+ }
+
+ @Test
+ public void testHandlePasswordMvPropertyDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_PASSWORD, PasswordUtil.buildPasswordHash("pw")),
mockPropertyDefinition(NT_REP_USER, true)));
+ assertNull(userTree.getProperty(REP_PASSWORD));
+ }
+
+ @Test
+ public void testHandlePasswordOtherDeclNtDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_PASSWORD, PasswordUtil.buildPasswordHash("pw")),
mockPropertyDefinition(NT_REP_AUTHORIZABLE, false)));
+ assertNull(userTree.getProperty(REP_PASSWORD));
+ }
+
+ @Test
+ public void testHandleImpersonators() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_IMPERSONATORS, "impersonator1", "impersonator2"),
mockPropertyDefinition(NT_REP_USER, true)));
+ // writing is postponed though and the ref-tracker must not be empty
+ assertNull(userTree.getProperty(REP_IMPERSONATORS));
+ assertTrue(refTracker.getProcessedReferences().hasNext());
+ }
+
+ @Test
+ public void testHandleImpersonatorsOnGroup() throws Exception {
+ init();
+ Tree groupTree = createGroupTree();
+ assertFalse(importer.handlePropInfo(groupTree,
createPropInfo(REP_IMPERSONATORS, "impersonator1"),
mockPropertyDefinition(NT_REP_USER, true)));
+ }
+
+ @Test
+ public void testHandleImpersonatorsSinglePropertyDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_IMPERSONATORS, "impersonator1"),
mockPropertyDefinition(NT_REP_USER, false)));
+ assertNull(userTree.getProperty(REP_IMPERSONATORS));
+ }
+
+ @Test
+ public void testHandleImpersonatorsOtherDeclNtDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_IMPERSONATORS, "impersonator1"),
mockPropertyDefinition(NT_REP_AUTHORIZABLE, true)));
+ assertNull(userTree.getProperty(REP_IMPERSONATORS));
+ }
+
+ @Test
+ public void testHandleDisabled() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_DISABLED, "disabled"), mockPropertyDefinition(NT_REP_USER,
false)));
+ PropertyState property = userTree.getProperty(REP_DISABLED);
+ assertNotNull(property);
+ assertEquals("disabled", property.getValue(Type.STRING));
+ }
+
+ @Test
+ public void testHandleDisabledOnGroup() throws Exception {
+ init();
+ Tree groupTree = createGroupTree();
+ assertFalse(importer.handlePropInfo(groupTree,
createPropInfo(REP_DISABLED, "disabled"), mockPropertyDefinition(NT_REP_USER,
false)));
+ assertNull(groupTree.getProperty(REP_DISABLED));
+ }
+
+ @Test(expected = RepositoryException.class)
+ public void testHandleDisabledMvProperty() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ importer.handlePropInfo(userTree, createPropInfo(REP_DISABLED,
"disabled", "disabled"), mockPropertyDefinition(NT_REP_USER, false));
+ }
+
+ @Test
+ public void testHandleDisabledMvPropertyDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_DISABLED, "disabled"), mockPropertyDefinition(NT_REP_USER,
true)));
+ assertNull(userTree.getProperty(REP_DISABLED));
+ }
+
+ @Test
+ public void testHandleDisabledOtherDeclNtDef() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo(REP_DISABLED, "disabled"),
mockPropertyDefinition(NT_REP_AUTHORIZABLE, false)));
+ assertNull(userTree.getProperty(REP_DISABLED));
+ }
+
+ @Test
+ public void testHandleUnknownProperty() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertFalse(importer.handlePropInfo(userTree,
createPropInfo("unknownProperty", "value"),
mockPropertyDefinition(NodeTypeConstants.NT_OAK_UNSTRUCTURED, false)));
+ assertNull(userTree.getProperty("unknownProperty"));
+ }
+
//--------------------------------------------------< processReferences
>---
@Test(expected = IllegalStateException.class)
@@ -282,6 +460,32 @@ public class UserImporterTest extends Ab
importer.processReferences();
}
+ @Test
+ public void testProcessUnknownImpersonators() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_IMPERSONATORS, "impersonator1", "impersonator2"),
mockPropertyDefinition(NT_REP_USER, true)));
+
+ importer.processReferences();
+
+ // default importbehavior == IGNORE
+ PropertyState impersonators = userTree.getProperty(REP_IMPERSONATORS);
+ assertNull(impersonators);
+ }
+
+ @Test
+ public void testProcessImpersonators() throws Exception {
+ init();
+ Tree userTree = createUserTree();
+ assertTrue(importer.handlePropInfo(userTree,
createPropInfo(REP_IMPERSONATORS, testUser.getPrincipal().getName()),
mockPropertyDefinition(NT_REP_USER, true)));
+
+ importer.processReferences();
+
+ PropertyState impersonators = userTree.getProperty(REP_IMPERSONATORS);
+ assertNotNull(impersonators);
+ assertEquals(ImmutableList.of(testUser.getPrincipal().getName()),
impersonators.getValue(Type.STRINGS));
+ }
+
//------------------------------------------------< propertiesCompleted
>---
@Test