Author: angela
Date: Tue Apr 4 08:07:28 2017
New Revision: 1790077
URL: http://svn.apache.org/viewvc?rev=1790077&view=rev
Log:
OAK-6028 : UserImporter.start: should return false for User tree
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=1790077&r1=1790076&r2=1790077&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
Tue Apr 4 08:07:28 2017
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.jcr.ImportUUIDBehavior;
@@ -389,31 +390,25 @@ class UserImporter implements ProtectedP
// ---------------------------------------------< ProtectedNodeImporter
>---
@Override
public boolean start(@Nonnull Tree protectedParent) throws
RepositoryException {
+ Authorizable auth = null;
if (isMemberNode(protectedParent)) {
Tree groupTree = protectedParent;
while (isMemberNode(groupTree) && !groupTree.isRoot()) {
groupTree = groupTree.getParent();
}
- Authorizable auth = userManager.getAuthorizable(groupTree);
- if (auth == null) {
- log.debug("Cannot handle protected node " + protectedParent +
". It nor one of its parents represent a valid Authorizable.");
- return false;
- } else {
- currentMembership = getMembership(auth.getPath());
- return true;
- }
+ auth = userManager.getAuthorizable(groupTree);
} else if (isMemberReferencesListNode(protectedParent)) {
- Authorizable auth =
userManager.getAuthorizable(protectedParent.getParent());
- if (auth == null) {
- log.debug("Cannot handle protected node " + protectedParent +
". It nor one of its parents represent a valid Authorizable.");
- return false;
- } else {
- currentMembership = getMembership(auth.getPath());
- return true;
- }
+ auth = userManager.getAuthorizable(protectedParent.getParent());
+
} // else: parent node is not of type rep:Members or
rep:MemberReferencesList
- return false;
+ if (auth == null || !auth.isGroup()) {
+ log.debug("Cannot handle protected node " + protectedParent + ".
It nor one of its parents represent a valid Group.");
+ return false;
+ } else {
+ currentMembership = getMembership(auth.getPath());
+ return true;
+ }
}
@Override
@@ -480,18 +475,18 @@ class UserImporter implements ProtectedP
}
}
- private boolean isValid(PropertyDefinition definition, String
oakNodeTypeName, boolean multipleStatus) {
+ private boolean isValid(@Nonnull PropertyDefinition definition, @Nonnull
String oakNodeTypeName, boolean multipleStatus) {
return multipleStatus == definition.isMultiple() &&
definition.getDeclaringNodeType().isNodeType(namePathMapper.getJcrName(oakNodeTypeName));
}
- private static boolean isMemberNode(@Nullable Tree tree) {
+ private static boolean isMemberNode(@Nonnull Tree tree) {
//noinspection deprecation
- return tree != null &&
NT_REP_MEMBERS.equals(TreeUtil.getPrimaryTypeName(tree));
+ return tree.exists() &&
NT_REP_MEMBERS.equals(TreeUtil.getPrimaryTypeName(tree));
}
- private static boolean isMemberReferencesListNode(@Nullable Tree tree) {
- return tree != null &&
NT_REP_MEMBER_REFERENCES_LIST.equals(TreeUtil.getPrimaryTypeName(tree));
+ private static boolean isMemberReferencesListNode(@Nonnull Tree tree) {
+ return tree.exists() &&
NT_REP_MEMBER_REFERENCES_LIST.equals(TreeUtil.getPrimaryTypeName(tree));
}
private static boolean isPwdNode(@Nonnull Tree tree) {
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=1790077&r1=1790076&r2=1790077&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
Tue Apr 4 08:07:28 2017
@@ -432,4 +432,84 @@ public class UserImporterTest extends Us
importer.propertiesCompleted(root.getTree(testUser.getPath()));
testAction.checkMethods();
}
+
+ //--------------------------------------------------------------< start
>---
+ @Test
+ public void testStartUserTree() throws Exception {
+ init(true);
+ assertFalse(importer.start(createUserTree()));
+ }
+
+ @Test
+ public void testStartGroupTree() throws Exception {
+ init(true);
+ assertFalse(importer.start(createGroupTree()));
+ }
+
+ @Test
+ public void testStartMembersRefListTree() throws Exception {
+ init(true);
+ Tree groupTree = createGroupTree();
+ Tree memberRefList = groupTree.addChild(REP_MEMBERS_LIST);
+ memberRefList.setProperty(JcrConstants.JCR_PRIMARYTYPE,
NT_REP_MEMBER_REFERENCES_LIST);
+
+ assertTrue(importer.start(memberRefList));
+ }
+
+ @Test
+ public void testStartMembersRefListBelowUserTree() throws Exception {
+ init(true);
+ Tree userTree = createUserTree();
+ Tree memberRefList = userTree.addChild(REP_MEMBERS_LIST);
+ memberRefList.setProperty(JcrConstants.JCR_PRIMARYTYPE,
NT_REP_MEMBER_REFERENCES_LIST);
+
+ assertFalse(importer.start(memberRefList));
+ }
+
+ @Test
+ public void testStartMembersRefBelowAnyTree() throws Exception {
+ init(true);
+ Tree memberRefList =
root.getTree(PathUtils.ROOT_PATH).addChild(REP_MEMBERS_LIST);
+ memberRefList.setProperty(JcrConstants.JCR_PRIMARYTYPE,
NT_REP_MEMBER_REFERENCES_LIST);
+
+ assertFalse(importer.start(memberRefList));
+ }
+
+ @Test
+ public void testStartRepMembersTree() throws Exception {
+ init(true);
+ Tree groupTree = createGroupTree();
+ Tree repMembers = groupTree.addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ repMembers = repMembers.addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ assertTrue(importer.start(repMembers));
+ }
+
+ @Test
+ public void testStartRepMembersBelowUserTree() throws Exception {
+ init(true);
+ Tree userTree = createUserTree();
+ Tree repMembers = userTree.addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ repMembers = repMembers.addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ assertFalse(importer.start(repMembers));
+ }
+
+ @Test
+ public void testStartRepMembersBelowAnyTree() throws Exception {
+ init(true);
+ Tree repMembers =
root.getTree(PathUtils.ROOT_PATH).addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ repMembers = repMembers.addChild("memberTree");
+ repMembers.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_MEMBERS);
+
+ assertFalse(importer.start(repMembers));
+ }
}
\ No newline at end of file