You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2019/08/19 15:52:58 UTC

svn commit: r1865472 - in /jackrabbit/oak/trunk/oak-authorization-cug/src: main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/ test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/

Author: angela
Date: Mon Aug 19 15:52:58 2019
New Revision: 1865472

URL: http://svn.apache.org/viewvc?rev=1865472&view=rev
Log:
OAK-8556 : CugImporter.handleProperty: unreachable default handling for importBehavior

Modified:
    jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporter.java
    jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporterTest.java

Modified: jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporter.java?rev=1865472&r1=1865471&r2=1865472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporter.java (original)
+++ jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporter.java Mon Aug 19 15:52:58 2019
@@ -107,14 +107,12 @@ class CugImporter implements ProtectedPr
                         case ImportBehavior.IGNORE:
                             log.debug("Ignoring unknown principal with name '{}'.", principalName);
                             break;
-                        case ImportBehavior.ABORT:
-                            throw new AccessControlException("Unknown principal '" + principalName + "'.");
                         case ImportBehavior.BESTEFFORT:
                             log.debug("Importing unknown principal '{}'", principalName);
                             principalNames.add(principalName);
                             break;
-                        default:
-                            throw new IllegalArgumentException("Invalid import behavior " + importBehavior);
+                        default: // ImportBehavior.ABORT
+                            throw new AccessControlException("Unknown principal '" + principalName + "'.");
                     }
                 } else {
                     principalNames.add(principalName);

Modified: jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporterTest.java?rev=1865472&r1=1865471&r2=1865472&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporterTest.java (original)
+++ jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugImporterTest.java Mon Aug 19 15:52:58 2019
@@ -16,25 +16,24 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization.cug.impl;
 
-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 com.google.common.collect.ImmutableList;
-import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 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;
+
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.PropertyDefinition;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class CugImporterTest extends AbstractCugTest {
 
@@ -48,31 +47,58 @@ public class CugImporterTest extends Abs
 
     @Test(expected = IllegalStateException.class)
     public void testInitTwice() {
-        Session session = Mockito.mock(Session.class);
+        Session session = mock(Session.class);
         assertTrue(importer.init(session, root, getNamePathMapper(), true, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW, new ReferenceChangeTracker(), getSecurityProvider()));
         importer.init(session, root, getNamePathMapper(), true, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW, new ReferenceChangeTracker(), getSecurityProvider());
     }
 
     @Test
-    public void testInvalidPropInfo() throws Exception {
+    public void testInitFailsToRetrievePrincipalManager() throws Exception {
+        JackrabbitSession s = mock(JackrabbitSession.class);
+        when(s.getPrincipalManager()).thenThrow(new RepositoryException());
+
+        assertFalse(importer.init(s, root, getNamePathMapper(), false, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING, new ReferenceChangeTracker(), getSecurityProvider()));
+    }
+
+    @Test
+    public void testHandlePropertyNonCugParent() throws Exception {
+        createCug(root, SUPPORTED_PATH, "principalName");
+        Tree nonCugParent = root.getTree(SUPPORTED_PATH);
+        assertFalse(importer.handlePropInfo(nonCugParent, mock(PropInfo.class), mock(PropertyDefinition.class)));
+    }
+
+    @Test
+    public void testHandlePropertyUnsupportedNamePropInfo() throws Exception {
+        createCug(root, SUPPORTED_PATH, "principalName");
+        Tree cugParent = root.getTree(SUPPORTED_PATH).getChild(REP_CUG_POLICY);
+        PropInfo propInfo = when(mock(PropInfo.class).getName()).thenReturn("unsupportedPropName").getMock();
+        assertFalse(importer.handlePropInfo(cugParent, propInfo, mock(PropertyDefinition.class)));
+    }
+
+    @Test
+    public void testHandlePropertySingleValuePropDef() throws Exception {
+        createCug(root, SUPPORTED_PATH, "principalName");
+        Tree cugParent = root.getTree(SUPPORTED_PATH).getChild(REP_CUG_POLICY);
+
+        PropInfo propInfo = when(mock(PropInfo.class).getName()).thenReturn(REP_PRINCIPAL_NAMES).getMock();
+
+        PropertyDefinition propDef = when(mock(PropertyDefinition.class).isMultiple()).thenReturn(false).getMock();
+        assertFalse(importer.handlePropInfo(cugParent, propInfo, propDef));
+    }
+
+    @Test
+    public void testHandlePropertyPropDefWithWrongDeclaringNt() throws Exception {
         createCug(root, SUPPORTED_PATH, "principalName");
-        Tree parent = root.getTree(SUPPORTED_PATH);
-        PropInfo propInfo = new PropInfo(JcrConstants.JCR_PRIMARYTYPE, PropertyType.STRING, ImmutableList.of(new TextValue() {
-            @Override
-            public String getString() {
-                return "principalName";
-            }
-
-            @Override
-            public Value getValue(int targetType) throws RepositoryException {
-                return getValueFactory(root).createValue("principalName", PropertyType.STRING);
-            }
-
-            @Override
-            public void dispose() {
-            }
-        }));
-        PropertyDefinition propDef = Mockito.mock(PropertyDefinition.class);
-        assertFalse(importer.handlePropInfo(parent, propInfo, propDef));
+        Tree cugParent = root.getTree(SUPPORTED_PATH).getChild(REP_CUG_POLICY);
+
+        PropInfo propInfo = when(mock(PropInfo.class).getName()).thenReturn(REP_PRINCIPAL_NAMES).getMock();
+
+        NodeType nt = when(mock(NodeType.class).getName()).thenReturn(NodeTypeConstants.NT_UNSTRUCTURED).getMock();
+
+        PropertyDefinition propDef = mock(PropertyDefinition.class);
+        when(propDef.isMultiple()).thenReturn(true);
+        when(propDef.getDeclaringNodeType()).thenReturn(nt);
+
+        assertFalse(importer.handlePropInfo(cugParent, propInfo, propDef));
     }
 }
\ No newline at end of file