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


Reply via email to