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