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/02/08 15:54:15 UTC
svn commit: r1853226 [1/2] - in /jackrabbit/oak/trunk/oak-security-spi: ./
src/test/java/org/apache/jackrabbit/oak/plugins/tree/
src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/
src/test/java/org/apache/jackrabbit/oak/s...
Author: angela
Date: Fri Feb 8 15:54:14 2019
New Revision: 1853226
URL: http://svn.apache.org/viewvc?rev=1853226&view=rev
Log:
OAK-8036 : Improve test in oak-security-spi
Added:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/NullLocationTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/PropertyLocationTest.java
Modified:
jackrabbit/oak/trunk/oak-security-spi/pom.xml
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTreeTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeLocationTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeUtilTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACETest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlManagerTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ImmutableACLTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/TestACL.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionDefinitionImplTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionImplTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeBitsTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/xml/PropInfoTest.java
Modified: jackrabbit/oak/trunk/oak-security-spi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/pom.xml?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-security-spi/pom.xml Fri Feb 8 15:54:14 2019
@@ -34,7 +34,7 @@
<properties>
<!-- enable execution of jacoco and set minimal line coverage -->
<skip.coverage>false</skip.coverage>
- <minimum.coverage>0.89</minimum.coverage>
+ <minimum.coverage>0.91</minimum.coverage>
</properties>
<build>
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTreeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTreeTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTreeTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/AbstractTreeTest.java Fri Feb 8 15:54:14 2019
@@ -33,7 +33,9 @@ import static org.mockito.Mockito.withSe
public class AbstractTreeTest {
+ static final String NON_EXISTING_PATH = "/nonExisting";
static final String CHILD_PATH = "/z/child";
+ static final String PROPERTY_PATH = CHILD_PATH + "/p";
static final String STRING_VALUE = "value";
static final long LONG_VALUE = 1;
@@ -50,11 +52,11 @@ public class AbstractTreeTest {
when(rootTree.hasProperty("p")).thenReturn(true);
when(rootTree.getProperty("p")).thenReturn(PropertyStates.createProperty("p", LONG_VALUE));
- nonExisting = mockTree("/nonExisting", rootTree, false, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+ nonExisting = mockTree(NON_EXISTING_PATH, rootTree, false, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
Tree x = mockTree("/x", rootTree, true);
z = mockTree("/z", rootTree, true, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
- child = mockTree("/z/child", z, true, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+ child = mockTree(CHILD_PATH, z, true, NodeTypeConstants.NT_OAK_UNSTRUCTURED);
when(child.hasProperty("p")).thenReturn(true);
when(child.getProperty("p")).thenReturn(PropertyStates.createProperty("p", STRING_VALUE));
when(child.hasProperty("pp")).thenReturn(true);
@@ -71,7 +73,8 @@ public class AbstractTreeTest {
when(rootTree.getChild("nonExisting")).thenReturn(nonExisting);
root = Mockito.mock(Root.class);
- when(root.getTree("/")).thenReturn(rootTree);
+ when(root.getTree(PathUtils.ROOT_PATH)).thenReturn(rootTree);
+ when(root.getTree(CHILD_PATH)).thenReturn(child);
}
public Tree mockTree(String path, boolean exists) {
@@ -112,7 +115,6 @@ public class AbstractTreeTest {
when(t.hasProperty("nonExisting")).thenReturn(false);
when(t.hasChild("nonExisting")).thenReturn(false);
when(t.getChild("nonExisting")).thenReturn(nonExisting);
- when(t.remove()).thenThrow(new UnsupportedOperationException());
return t;
}
}
\ No newline at end of file
Added: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/NullLocationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/NullLocationTest.java?rev=1853226&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/NullLocationTest.java (added)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/NullLocationTest.java Fri Feb 8 15:54:14 2019
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.tree;
+
+import org.apache.jackrabbit.util.Text;
+import org.junit.Before;
+import org.junit.Test;
+
+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.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class NullLocationTest extends AbstractTreeTest {
+
+ private static final String NULL_LOCATION_PATH = PROPERTY_PATH + "/null";
+
+ private TreeLocation nullLocation;
+
+ @Before
+ public void before() throws Exception {
+ super.before();
+
+ nullLocation = TreeLocation.create(root, NULL_LOCATION_PATH);
+ }
+
+ @Test
+ public void testExists() {
+ assertFalse(nullLocation.exists());
+ }
+
+ @Test
+ public void testGetTree() {
+ assertNull(nullLocation.getTree());
+ }
+
+ @Test
+ public void testGetProperty() {
+ assertNull(nullLocation.getProperty());
+ }
+
+ @Test
+ public void testGetName() {
+ assertEquals("null", nullLocation.getName());
+ }
+
+ @Test
+ public void testGetPath() {
+ assertEquals(NULL_LOCATION_PATH, nullLocation.getPath());
+ }
+
+ @Test
+ public void testRemove() {
+ assertFalse(nullLocation.remove());
+ }
+
+ @Test
+ public void testGetChild() {
+ TreeLocation child = nullLocation.getChild("child");
+ assertNotNull(child);
+ assertFalse(child.exists());
+ assertNull(child.getTree());
+ assertNull(child.getProperty());
+ assertEquals("child", child.getName());
+ }
+
+
+ @Test
+ public void testGetDeepChild() {
+ TreeLocation child = nullLocation.getChild("b").getChild("c");
+ assertEquals(NULL_LOCATION_PATH + "/b/c", child.getPath());
+
+ TreeLocation b = child.getParent();
+ assertEquals(NULL_LOCATION_PATH + "/b", b.getPath());
+ assertEquals("b", b.getName());
+ }
+
+ @Test
+ public void testToString() {
+ assertEquals(TreeLocation.create(root, PROPERTY_PATH).getChild("null").toString(), nullLocation.toString());
+ }
+
+ @Test
+ public void testRootParent() {
+ TreeLocation nullLocation = TreeLocation.create(root).getParent();
+ assertSame(nullLocation, nullLocation.getParent());
+ assertTrue(nullLocation.getName().isEmpty());
+ assertTrue(nullLocation.getPath().isEmpty());
+ }
+}
\ No newline at end of file
Added: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/PropertyLocationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/PropertyLocationTest.java?rev=1853226&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/PropertyLocationTest.java (added)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/PropertyLocationTest.java Fri Feb 8 15:54:14 2019
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.tree;
+
+import org.apache.jackrabbit.util.Text;
+import org.junit.Before;
+import org.junit.Test;
+
+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.times;
+import static org.mockito.Mockito.verify;
+
+public class PropertyLocationTest extends AbstractTreeTest {
+
+ private TreeLocation propertyLocation;
+
+ @Before
+ public void before() throws Exception {
+ super.before();
+
+ propertyLocation = TreeLocation.create(root, PROPERTY_PATH);
+ }
+
+ @Test
+ public void testExists() {
+ assertTrue(propertyLocation.exists());
+ }
+
+ @Test
+ public void testGetName() {
+ assertEquals(Text.getName(PROPERTY_PATH), propertyLocation.getName());
+ }
+
+ @Test
+ public void testGetTree() {
+ assertNull(propertyLocation.getTree());
+ }
+
+ @Test
+ public void testGetProperty() {
+ assertEquals(root.getTree(CHILD_PATH).getProperty(propertyLocation.getName()), propertyLocation.getProperty());
+ }
+
+ @Test
+ public void testGetChild() {
+ TreeLocation child = propertyLocation.getChild("child");
+ assertFalse(child.exists());
+ assertEquals(propertyLocation.getProperty(), child.getParent().getProperty());
+ }
+
+ @Test
+ public void testGetParent() {
+ TreeLocation parent = propertyLocation.getParent();
+ assertTrue(parent.exists());
+ assertEquals(CHILD_PATH, parent.getPath());
+ assertNotNull(parent.getTree());
+ }
+
+ @Test
+ public void testRemovePropertyLocation() {
+ String propName = propertyLocation.getName();
+ assertTrue(propertyLocation.remove());
+ verify(child, times(1)).removeProperty(propName);
+ }
+}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeLocationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeLocationTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeLocationTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeLocationTest.java Fri Feb 8 15:54:14 2019
@@ -18,6 +18,8 @@
*/
package org.apache.jackrabbit.oak.plugins.tree;
+import org.apache.jackrabbit.util.Text;
+import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -26,113 +28,103 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class TreeLocationTest extends AbstractTreeTest {
- @Test
- public void testNullLocation() {
- TreeLocation nullLocation = TreeLocation.create(root).getParent();
- assertNull(nullLocation.getTree());
- assertTrue(nullLocation.getName().isEmpty());
+ private TreeLocation nodeLocation;
- TreeLocation child = nullLocation.getChild("any");
- assertNotNull(child);
- assertNull(child.getTree());
- assertNull(child.getProperty());
+ @Before
+ public void before() throws Exception {
+ super.before();
+ nodeLocation = TreeLocation.create(child);
+ }
- TreeLocation child2 = nullLocation.getChild("x");
- assertNotNull(child2);
- assertNull(child.getTree());
- assertNull(child.getProperty());
+ @Test
+ public void testExists() {
+ assertTrue(nodeLocation.exists());
}
@Test
- public void testParentOfRoot() {
- TreeLocation nullLocation = TreeLocation.create(root).getParent();
- assertSame(nullLocation, nullLocation.getParent());
- assertTrue(nullLocation.getName().isEmpty());
+ public void testGetName() {
+ assertEquals(Text.getName(CHILD_PATH), nodeLocation.getName());
}
@Test
- public void testNodeLocation() {
- TreeLocation x = TreeLocation.create(root, "/x");
- assertNotNull(x.getTree());
+ public void testGetPath() {
+ assertEquals(CHILD_PATH, nodeLocation.getPath());
+ }
- assertEquals(rootTree, x.getParent().getTree());
+ @Test
+ public void testGetTree() {
+ assertEquals(child, nodeLocation.getTree());
}
@Test
- public void testPropertyLocation() {
- TreeLocation propLocation = TreeLocation.create(root, "/p");
- assertNotNull(propLocation.getProperty());
- assertEquals("p", propLocation.getName());
- assertTrue(propLocation.exists());
+ public void testGetProperty() {
+ assertNull(nodeLocation.getProperty());
+ }
- TreeLocation abc = propLocation.getChild("b").getChild("c");
- assertEquals("/p/b/c", abc.getPath());
- assertNull(abc.getProperty());
+ @Test
+ public void testGetParent() {
+ assertEquals(z, nodeLocation.getParent().getTree());
+ assertEquals(rootTree, nodeLocation.getParent().getParent().getTree());
+ }
- TreeLocation ab = abc.getParent();
- assertEquals("/p/b", ab.getPath());
- assertEquals("b", ab.getName());
- assertNull(ab.getProperty());
+ @Test
+ public void testGetChild() {
+ TreeLocation propertyChild = nodeLocation.getChild(Text.getName(PROPERTY_PATH));
+ assertNotNull(propertyChild);
+ assertTrue(propertyChild.exists());
- assertEquals(propLocation.getProperty(), ab.getParent().getProperty());
+ assertEquals(child, nodeLocation.getParent().getChild(nodeLocation.getName()).getTree());
}
@Test
- public void testRemovePropertyLocation() {
- TreeLocation propLocation = TreeLocation.create(root, "/p");
- assertTrue(propLocation.remove());
+ public void testGetNonExistingChild() {
+ TreeLocation location = nodeLocation.getChild(Text.getName(NON_EXISTING_PATH));
+ assertFalse(location.exists());
+ assertNull(location.getTree());
}
@Test
- public void getDeepLocation() {
- TreeLocation child = TreeLocation.create(root, "/z/child");
- assertNotNull(child.getTree());
- assertEquals("child", child.getName());
- assertNull(child.getProperty());
+ public void testRemove() {
+ when(child.remove()).thenReturn(true);
- TreeLocation p = TreeLocation.create(root, "/z/child/p");
- assertNotNull(p.getProperty());
- assertNull(p.getTree());
- assertEquals("/z/child/p", p.getPath());
-
- TreeLocation n = TreeLocation.create(root, "/z/child/p/3/4");
- assertNull(n.getTree());
- assertNull(n.getProperty());
- assertEquals("/z/child/p/3/4", n.getPath());
- assertFalse(n.exists());
- assertFalse(n.remove());
+ assertTrue(nodeLocation.remove());
+ verify(child).remove();
+ }
- TreeLocation t = n.getParent().getParent();
- assertNull(t.getTree());
- assertNotNull(t.getProperty());
+ @Test
+ public void testRemove2() {
+ when(child.remove()).thenReturn(false);
- TreeLocation t2 = t.getParent();
- assertNotNull(t2.getTree());
- assertEquals("/z/child", t2.getPath());
+ assertFalse(nodeLocation.remove());
+ verify(child).remove();
}
- @Test(expected = UnsupportedOperationException.class)
- public void testRemoveExisting() {
- TreeLocation child = TreeLocation.create(root, "/z/child");
- child.remove();
+ @Test
+ public void testGetNonExisting() {
+ TreeLocation location = TreeLocation.create(root, NON_EXISTING_PATH);
+ assertFalse(location.exists());
+ assertNull(location.getTree());
+ assertEquals(Text.getName(NON_EXISTING_PATH), nonExisting.getName());
+ assertEquals(NON_EXISTING_PATH, nonExisting.getPath());
}
@Test
public void testRemoveNonExisting() {
- TreeLocation nonExisting = TreeLocation.create(root, "/nonExisting");
- // remove must not throw as it doesn't exist
- assertFalse(nonExisting.remove());
+ TreeLocation location = TreeLocation.create(root, NON_EXISTING_PATH);
+ assertFalse(location.remove());
+ verify(nonExisting, never()).remove();
}
@Test
- public void testNonExisting() {
- TreeLocation nonExisting = TreeLocation.create(root, "/nonExisting");
- assertNull(nonExisting.getTree());
-
- assertEquals("nonExisting", nonExisting.getName());
- assertEquals("/nonExisting", nonExisting.getPath());
+ public void testToString() {
+ TreeLocation location = TreeLocation.create(rootTree);
+ assertEquals(TreeLocation.create(rootTree).toString(), location.toString());
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeUtilTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeUtilTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/plugins/tree/TreeUtilTest.java Fri Feb 8 15:54:14 2019
@@ -21,18 +21,23 @@ import java.util.UUID;
import javax.jcr.AccessDeniedException;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.commons.LazyValue;
import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
import org.junit.Test;
+import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NT_OAK_UNSTRUCTURED;
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.mock;
import static org.mockito.Mockito.when;
public class TreeUtilTest extends AbstractTreeTest {
@@ -56,7 +61,7 @@ public class TreeUtilTest extends Abstra
typeRoot = rootTree; // TODO
ntDef = mockTree("/typeDef", typeRoot, true);
- when(typeRoot.getChild(NodeTypeConstants.NT_OAK_UNSTRUCTURED)).thenReturn(ntDef);
+ when(typeRoot.getChild(NT_OAK_UNSTRUCTURED)).thenReturn(ntDef);
when(typeRoot.getChild(NodeTypeConstants.MIX_LOCKABLE)).thenReturn(ntDef);
when(typeRoot.getChild(NodeTypeConstants.MIX_VERSIONABLE)).thenReturn(ntDef);
when(typeRoot.getChild("rep:NonExistingType")).thenReturn(nonExisting);
@@ -66,11 +71,72 @@ public class TreeUtilTest extends Abstra
@Test
public void testGetPrimaryTypeName() {
- assertEquals(NodeTypeConstants.NT_OAK_UNSTRUCTURED, TreeUtil.getPrimaryTypeName(child));
+ assertEquals(NT_OAK_UNSTRUCTURED, TreeUtil.getPrimaryTypeName(child));
assertNull(TreeUtil.getPrimaryTypeName(rootTree.getChild("x")));
}
@Test
+ public void testGetPrimaryTypeNameUnusedLazy() {
+ assertEquals(NT_OAK_UNSTRUCTURED, TreeUtil.getPrimaryTypeName(child, mock(LazyValue.class)));
+ }
+
+ @Test
+ public void testGetPrimaryTypeNameNewTreeLazy() {
+ Tree newTree = when(rootTree.getChild("x").getStatus()).thenReturn(Tree.Status.NEW).getMock();
+ assertNull(TreeUtil.getPrimaryTypeName(newTree, new LazyValue<Tree>() {
+ @Override
+ protected Tree createValue() {
+ throw new RuntimeException("should not get here");
+ }
+ }));
+ }
+
+ @Test
+ public void testGetPrimaryTypeNameFromLazy() {
+ assertEquals(NT_OAK_UNSTRUCTURED, TreeUtil.getPrimaryTypeName(rootTree.getChild("x"), new LazyValue<Tree>() {
+ @Override
+ protected Tree createValue() {
+ return when(mock(Tree.class).getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, NT_OAK_UNSTRUCTURED, Type.NAME)).getMock();
+ }
+ }));
+ }
+
+ @Test
+ public void testGetMixinTypes() {
+ assertTrue(Iterables.elementsEqual(TreeUtil.getNames(child, JcrConstants.JCR_MIXINTYPES), TreeUtil.getMixinTypeNames(child)));
+ assertTrue(Iterables.elementsEqual(TreeUtil.getNames(rootTree, JcrConstants.JCR_MIXINTYPES), TreeUtil.getMixinTypeNames(rootTree)));
+ }
+
+ @Test
+ public void testGetMixinTypeNamesUnusedLazy() {
+ assertTrue(Iterables.elementsEqual(
+ TreeUtil.getNames(child, JcrConstants.JCR_MIXINTYPES),
+ TreeUtil.getMixinTypeNames(child, mock(LazyValue.class))));
+ }
+
+ @Test
+ public void testGetMixinTypeNamesNewTreeLazy() {
+ Tree newTree = when(rootTree.getChild("x").getStatus()).thenReturn(Tree.Status.NEW).getMock();
+ assertTrue(Iterables.isEmpty(TreeUtil.getMixinTypeNames(newTree, new LazyValue<Tree>() {
+ @Override
+ protected Tree createValue() {
+ throw new RuntimeException("should not get here");
+ }
+ })));
+ }
+
+ @Test
+ public void testGetMixinTypeNamesFromLazy() {
+ assertTrue(Iterables.elementsEqual(TreeUtil.getNames(child, JcrConstants.JCR_MIXINTYPES), TreeUtil.getMixinTypeNames(rootTree.getChild("x"), new LazyValue<Tree>() {
+ @Override
+ protected Tree createValue() {
+ return child;
+ }
+ })));
+ }
+
+
+ @Test
public void testGetStrings() {
assertNull(TreeUtil.getStrings(nonExisting, "pp"));
Iterable<String> values = TreeUtil.getStrings(child, "pp");
@@ -172,22 +238,22 @@ public class TreeUtilTest extends Abstra
@Test(expected = AccessDeniedException.class)
public void testAddChildNonExisting() throws Exception {
- TreeUtil.addChild(rootTree, nonExisting.getName(), NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+ TreeUtil.addChild(rootTree, nonExisting.getName(), NT_OAK_UNSTRUCTURED);
}
@Test
public void testAddChild() throws Exception {
- assertEquals(z.getPath(), TreeUtil.addChild(rootTree, z.getName(), NodeTypeConstants.NT_OAK_UNSTRUCTURED).getPath());
+ assertEquals(z.getPath(), TreeUtil.addChild(rootTree, z.getName(), NT_OAK_UNSTRUCTURED).getPath());
}
@Test(expected = AccessDeniedException.class)
public void testGetOrAddChildNonExisting() throws Exception {
- TreeUtil.getOrAddChild(rootTree, nonExisting.getName(), NodeTypeConstants.NT_OAK_UNSTRUCTURED);
+ TreeUtil.getOrAddChild(rootTree, nonExisting.getName(), NT_OAK_UNSTRUCTURED);
}
@Test
public void testGetOrAddChild() throws Exception {
- assertEquals(z.getPath(), TreeUtil.getOrAddChild(rootTree, z.getName(), NodeTypeConstants.NT_OAK_UNSTRUCTURED).getPath());
+ assertEquals(z.getPath(), TreeUtil.getOrAddChild(rootTree, z.getName(), NT_OAK_UNSTRUCTURED).getPath());
}
@Test(expected = AccessDeniedException.class)
@@ -239,7 +305,7 @@ public class TreeUtilTest extends Abstra
@Test
public void testIsNodeType() {
- assertTrue(TreeUtil.isNodeType(child, NodeTypeConstants.NT_OAK_UNSTRUCTURED, typeRoot));
+ assertTrue(TreeUtil.isNodeType(child, NT_OAK_UNSTRUCTURED, typeRoot));
}
@Test
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACETest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACETest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACETest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ACETest.java Fri Feb 8 15:54:14 2019
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol;
+import java.util.Collections;
import java.util.Set;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
@@ -27,8 +28,11 @@ import javax.jcr.security.Privilege;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.value.jcr.ValueFactoryImpl;
import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
@@ -43,11 +47,14 @@ import org.mockito.Mockito;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
/**
* Tests for {@link ACE}
@@ -60,7 +67,7 @@ public class ACETest extends AbstractAcc
@Before
public void before() throws Exception {
- ValueFactory valueFactory = new ValueFactoryImpl(Mockito.mock(Root.class), getNamePathMapper());
+ ValueFactory valueFactory = new ValueFactoryImpl(mock(Root.class), getNamePathMapper());
globValue = valueFactory.createValue("*");
nameValue = valueFactory.createValue("nt:file", PropertyType.NAME);
nameValues = new Value[] {
@@ -141,24 +148,51 @@ public class ACETest extends AbstractAcc
assertEquals(expected, bits);
}
+ @Test(expected = AccessControlException.class)
+ public void testNullPrivileges() throws Exception {
+ new ACE(testPrincipal, null, true, Collections.emptySet(), getNamePathMapper()) {
+ @Override
+ public Privilege[] getPrivileges() {
+ return new Privilege[0];
+ }
+ };
+ }
+
+ @Test(expected = AccessControlException.class)
+ public void testEmptyPrivileges() throws Exception {
+ new ACE(testPrincipal, PrivilegeBits.EMPTY, true, null, getNamePathMapper()) {
+ @Override
+ public Privilege[] getPrivileges() {
+ return new Privilege[0];
+ }
+ };
+ }
+
@Test
- public void testNullPrivileges() {
- try {
- new EmptyACE(null);
- fail("Privileges must not be null");
- } catch (AccessControlException e) {
- // success
- }
+ public void testNullRestrictions() throws Exception {
+ ACE ace = new ACE(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, null, getNamePathMapper()) {
+ @Override
+ public Privilege[] getPrivileges() {
+ return new Privilege[0];
+ }
+ };
+ assertTrue(ace.getRestrictions().isEmpty());
}
@Test
- public void testEmptyPrivileges() {
- try {
- new EmptyACE(PrivilegeBits.EMPTY);
- fail("Privileges must not be empty.");
- } catch (AccessControlException e) {
- // success
- }
+ public void testRestrictions() throws Exception {
+ Restriction r = new RestrictionImpl(PropertyStates.createProperty("r", "v"), false);
+ Restriction r2 = new RestrictionImpl(PropertyStates.createProperty("r2", ImmutableList.of("v"), Type.STRINGS), false);
+ Set<Restriction> restrictions = Sets.newHashSet(r, r2);
+ ACE ace = new ACE(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, restrictions, getNamePathMapper()) {
+ @Override
+ public Privilege[] getPrivileges() {
+ return new Privilege[0];
+ }
+ };
+ assertFalse(ace.getRestrictions().isEmpty());
+ assertNotSame(restrictions, ace.getRestrictions());
+ assertTrue(Iterables.elementsEqual(restrictions, ace.getRestrictions()));
}
@Test
@@ -310,7 +344,7 @@ public class ACETest extends AbstractAcc
public void testEqualsSameACE() throws Exception {
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
- assertTrue(ace.equals(ace));
+ assertEquals(ace, ace);
}
@Test
@@ -318,14 +352,14 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
ACE ace2 = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
- assertTrue(ace.equals(ace2));
+ assertEquals(ace, ace2);
}
@Test
public void testEqualsOtherEntryImpl() throws Exception {
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
- assertFalse(ace.equals(Mockito.mock(JackrabbitAccessControlEntry.class)));
+ assertNotEquals(ace, mock(JackrabbitAccessControlEntry.class));
}
@Test
@@ -333,7 +367,7 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
ACE ace2 = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), false);
- assertFalse(ace.equals(ace2));
+ assertNotEquals(ace, ace2);
}
@Test
@@ -341,7 +375,7 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
ACE ace2 = createEntry(EveryonePrincipal.getInstance(), PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
- assertFalse(ace.equals(ace2));
+ assertNotEquals(ace, ace2);
}
@Test
@@ -349,7 +383,7 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true);
ACE ace2 = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_ADD_CHILD_NODES), true);
- assertFalse(ace.equals(ace2));
+ assertNotEquals(ace, ace2);
}
@Test
@@ -357,7 +391,7 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, createRestriction("name2", "val"));
ACE ace2 = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, createRestriction("name", "val"));
- assertFalse(ace.equals(ace2));
+ assertNotEquals(ace, ace2);
}
@Test
@@ -365,18 +399,6 @@ public class ACETest extends AbstractAcc
ACE ace = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, createRestriction("name", "val"));
ACE ace2 = createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), true, createRestriction("name", "val2"));
- assertFalse(ace.equals(ace2));
- }
-
- private class EmptyACE extends ACE {
-
- public EmptyACE(PrivilegeBits privilegeBits) throws AccessControlException {
- super(testPrincipal, privilegeBits, true, null, getNamePathMapper());
- }
-
- @Override
- public Privilege[] getPrivileges() {
- return new Privilege[0];
- }
+ assertNotEquals(ace, ace2);
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlListTest.java Fri Feb 8 15:54:14 2019
@@ -25,6 +25,8 @@ import java.util.Map;
import java.util.Set;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.security.Privilege;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
@@ -51,6 +53,11 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
@@ -269,4 +276,36 @@ public class AbstractAccessControlListTe
public void testIsMultiValueRestrictionForUnknownName() {
assertFalse(createEmptyACL().isMultiValueRestriction("unknownRestrictionName"));
}
+
+ @Test
+ public void testAddAccessControlEntry() throws Exception {
+ AbstractAccessControlList acl = spy(createEmptyACL());
+
+ Privilege[] privs = new Privilege[0];
+ acl.addAccessControlEntry(testPrincipal, privs);
+
+ verify(acl, never()).addEntry(testPrincipal, privs, true);
+ verify(acl, times(1)).addEntry(testPrincipal, privs, true, Collections.emptyMap());
+ }
+
+ @Test
+ public void testAddEntry() throws Exception {
+ AbstractAccessControlList acl = spy(createEmptyACL());
+
+ Privilege[] privs = new Privilege[0];
+ acl.addEntry(testPrincipal, privs, false);
+
+ verify(acl, times(1)).addEntry(testPrincipal, privs, false, Collections.emptyMap());
+ }
+
+ @Test
+ public void testAddEntryWithRestrictions() throws Exception {
+ AbstractAccessControlList acl = spy(createEmptyACL());
+
+ Privilege[] privs = new Privilege[0];
+ Map<String, Value> restrictions = Collections.singletonMap("name", mock(Value.class));
+ acl.addEntry(testPrincipal, privs, false, restrictions);
+
+ verify(acl, times(1)).addEntry(testPrincipal, privs, false, restrictions, null);
+ }
}
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlManagerTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AbstractAccessControlManagerTest.java Fri Feb 8 15:54:14 2019
@@ -62,6 +62,9 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class AbstractAccessControlManagerTest extends AbstractAccessControlTest {
@@ -268,14 +271,9 @@ public class AbstractAccessControlManage
}
}
- @Test
+ @Test(expected = PathNotFoundException.class)
public void testGetSupportedPrivilegesNonExistingPath() throws Exception {
- try {
- acMgr.getSupportedPrivileges(nonExistingPath);
- fail("Nonexisting node -> PathNotFoundException expected.");
- } catch (PathNotFoundException e) {
- // success
- }
+ acMgr.getSupportedPrivileges(nonExistingPath);
}
//--------------------------------------------------< privilegeFromName >---
@@ -420,6 +418,17 @@ public class AbstractAccessControlManage
}
@Test
+ public void testGetPrivilegesSessionPrincipalSet() throws Exception {
+ AbstractAccessControlManager mgr = spy(acMgr);
+ Privilege[] privileges = mgr.getPrivileges(testPath, testPrincipals);
+ assertArrayEquals(acMgr.getPrivileges(testPath), privileges);
+
+ // getPrivileges(String,Set) for the principals attached to the content session,
+ // must result in forwarding the call to getPrivilege(String)
+ verify(mgr, times(1)).getPrivileges(testPath);
+ }
+
+ @Test
public void testGetRepoPrivileges() throws Exception {
assertArrayEquals(allPrivileges, acMgr.getPrivileges(null));
}
@@ -434,7 +443,7 @@ public class AbstractAccessControlManage
assertArrayEquals(new Privilege[0], acMgr.getPrivileges(null, ImmutableSet.<Principal>of()));
}
- private final class TestAcMgr extends AbstractAccessControlManager {
+ private class TestAcMgr extends AbstractAccessControlManager {
protected TestAcMgr(@NotNull Root root, @NotNull NamePathMapper namePathMapper, @NotNull SecurityProvider securityProvider) {
super(root, namePathMapper, securityProvider);
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ImmutableACLTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ImmutableACLTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ImmutableACLTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/ImmutableACLTest.java Fri Feb 8 15:54:14 2019
@@ -16,14 +16,6 @@
*/
package org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.jcr.Value;
-import javax.jcr.security.AccessControlEntry;
-import javax.jcr.security.AccessControlException;
-import javax.jcr.security.Privilege;
-
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
@@ -38,6 +30,14 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
+import javax.jcr.Value;
+import javax.jcr.security.AccessControlEntry;
+import javax.jcr.security.AccessControlException;
+import javax.jcr.security.Privilege;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
@@ -240,4 +240,22 @@ public class ImmutableACLTest extends Ab
assertSame(aacl.getNamePathMapper(), iacl.getNamePathMapper());
}
+
+ @Override
+ @Test(expected = AccessControlException.class)
+ public void testAddAccessControlEntry() throws Exception {
+ createEmptyACL().addAccessControlEntry(testPrincipal, new Privilege[0]);
+ }
+
+ @Override
+ @Test(expected = AccessControlException.class)
+ public void testAddEntry() throws Exception {
+ createEmptyACL().addEntry(testPrincipal, new Privilege[0], true);
+ }
+
+ @Override
+ @Test(expected = AccessControlException.class)
+ public void testAddEntryWithRestrictions() throws Exception {
+ createEmptyACL().addEntry(testPrincipal, new Privilege[0], true, Collections.emptyMap());
+ }
}
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/TestACL.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/TestACL.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/TestACL.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/TestACL.java Fri Feb 8 15:54:14 2019
@@ -34,7 +34,7 @@ import org.jetbrains.annotations.Nullabl
/**
* Test implementation of AbstractAccessControlList
*/
-public final class TestACL extends AbstractAccessControlList {
+public class TestACL extends AbstractAccessControlList {
private final List<JackrabbitAccessControlEntry> entries = new ArrayList<>();
private final RestrictionProvider restrictionProvider;
@@ -66,14 +66,8 @@ public final class TestACL extends Abstr
}
@Override
- public boolean addEntry(Principal principal, Privilege[] privileges,
- boolean isAllow, Map<String, Value> restrictions) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public boolean addEntry(Principal principal, Privilege[] privileges, boolean isAllow, Map<String, Value> restrictions, Map<String, Value[]> mvRestrictions) {
- throw new UnsupportedOperationException();
+ return false;
}
@Override
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java Fri Feb 8 15:54:14 2019
@@ -257,6 +257,14 @@ public class PermissionsTest {
}
@Test
+ public void testIsRepositoryPermission() {
+ Set<Long> repoPermissions = ImmutableSet.of(Permissions.NAMESPACE_MANAGEMENT, Permissions.NODE_TYPE_DEFINITION_MANAGEMENT, Permissions.PRIVILEGE_MANAGEMENT, Permissions.WORKSPACE_MANAGEMENT);
+ for (long permission : Permissions.aggregates(Permissions.ALL)) {
+ assertEquals(repoPermissions.contains(permission), Permissions.isRepositoryPermission(permission));
+ }
+ }
+
+ @Test
public void testRespectParentPermissions() {
List<Long> permissions = ImmutableList.of(
Permissions.ALL,
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java Fri Feb 8 15:54:14 2019
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.spi.security.authorization.restriction;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -25,6 +26,7 @@ import javax.jcr.Value;
import javax.jcr.security.AccessControlException;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
@@ -45,6 +47,9 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class AbstractRestrictionProviderTest implements AccessControlConstants {
@@ -74,7 +79,11 @@ public class AbstractRestrictionProvider
RestrictionDefinition glob = new RestrictionDefinitionImpl(REP_GLOB, Type.STRING, false);
RestrictionDefinition nts = new RestrictionDefinitionImpl(REP_NT_NAMES, Type.NAMES, false);
RestrictionDefinition mand = new RestrictionDefinitionImpl("mandatory", Type.BOOLEAN, true);
- supported = ImmutableMap.of(glob.getName(), glob, nts.getName(), nts, mand.getName(), mand);
+ RestrictionDefinition undef = mock(RestrictionDefinition.class);
+ when(undef.getName()).thenReturn("undefined");
+ when(undef.getRequiredType()).thenReturn((Type) Type.UNDEFINED);
+
+ supported = ImmutableMap.of(glob.getName(), glob, nts.getName(), nts, mand.getName(), mand, undef.getName(), undef);
restrictionProvider = new AbstractRestrictionProvider(supported) {
@NotNull
@Override
@@ -93,12 +102,17 @@ public class AbstractRestrictionProvider
private Tree getAceTree(Restriction... restrictions) {
Tree restrictionsTree = Mockito.mock(Tree.class);;
when(restrictionsTree.getName()).thenReturn(REP_RESTRICTIONS);
- when(restrictionsTree.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_RESTRICTIONS, Type.NAME));
+ PropertyState primaryType = PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_RESTRICTIONS, Type.NAME);
+ when(restrictionsTree.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(primaryType);
+
List<PropertyState> properties = new ArrayList<>();
for (Restriction r : restrictions) {
when(restrictionsTree.getProperty(r.getDefinition().getName())).thenReturn(r.getProperty());
properties.add(r.getProperty());
}
+ properties.add(primaryType);
+ properties.add(PropertyStates.createProperty(Iterables.get(AccessControlConstants.ACE_PROPERTY_NAMES, 0), "value"));
+
when(restrictionsTree.getProperties()).thenReturn((Iterable)properties);
when(restrictionsTree.exists()).thenReturn(true);
@@ -127,68 +141,28 @@ public class AbstractRestrictionProvider
assertTrue(defs.isEmpty());
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateForUnsupportedPath() throws Exception {
- try {
- restrictionProvider.createRestriction(unsupportedPath, REP_GLOB, globValue);
- fail();
- } catch (AccessControlException e) {
- // success
- }
-
- try {
- restrictionProvider.createRestriction(unsupportedPath, REP_NT_NAMES, nameValues);
- fail();
- } catch (AccessControlException e) {
- // success
- }
+ restrictionProvider.createRestriction(unsupportedPath, REP_GLOB, globValue);
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateForUnsupportedName() throws Exception {
- try {
- restrictionProvider.createRestriction(testPath, "unsupported", globValue);
- fail();
- } catch (AccessControlException e) {
- // success
- }
-
- try {
- restrictionProvider.createRestriction(testPath, "unsupported", nameValues);
- fail();
- } catch (AccessControlException e) {
- // success
- }
+ restrictionProvider.createRestriction(testPath, "unsupported", nameValue);
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateForUnsupportedType() throws Exception {
- try {
- restrictionProvider.createRestriction(testPath, REP_GLOB, valueFactory.createValue(true));
- fail();
- } catch (AccessControlException e) {
- // success
- }
- try {
- restrictionProvider.createRestriction(testPath, REP_NT_NAMES,
- valueFactory.createValue("nt:file", PropertyType.NAME),
- valueFactory.createValue(true));
- fail();
- } catch (AccessControlException e) {
- // success
- }
+ restrictionProvider.createRestriction(testPath, REP_NT_NAMES,
+ valueFactory.createValue("nt:file", PropertyType.NAME),
+ valueFactory.createValue(true));
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateForUnsupportedMultiValues() throws Exception {
- try {
- restrictionProvider.createRestriction(testPath, REP_GLOB,
- valueFactory.createValue("*"),
- valueFactory.createValue("/a/*"));
- fail();
- } catch (AccessControlException e) {
- // success
- }
+ restrictionProvider.createRestriction(testPath, REP_GLOB,
+ valueFactory.createValue("*"),
+ valueFactory.createValue("/a/*"));
}
@Test
@@ -285,6 +259,16 @@ public class AbstractRestrictionProvider
}
@Test
+ public void testCreatedUndefinedType() throws Exception {
+ Restriction r = restrictionProvider.createRestriction(testPath, "undefined", valueFactory.createValue(23));
+ }
+
+ @Test(expected = AccessControlException.class)
+ public void testCreateUndefinedTypeMV() throws Exception {
+ Restriction r2 = restrictionProvider.createRestriction(testPath, "undefined", valueFactory.createValue(23), valueFactory.createValue(false));
+ }
+
+ @Test
public void testReadRestrictionsForUnsupportedPath() {
Set<Restriction> restrictions = restrictionProvider.readRestrictions(unsupportedPath, getAceTree());
assertTrue(restrictions.isEmpty());
@@ -301,55 +285,36 @@ public class AbstractRestrictionProvider
}
@Test
- public void testValidateRestrictionsUnsupportedPath() throws Exception {
+ public void testValidateRestrictionsUnsupportedPathEmptyRestrictions() throws Exception {
// empty restrictions => must succeed
restrictionProvider.validateRestrictions(null, getAceTree());
+ }
-
+ @Test(expected = AccessControlException.class)
+ public void testValidateRestrictionsUnsupportedPath() throws Exception {
// non-empty restrictions => must fail
- try {
- Restriction restr = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
- restrictionProvider.validateRestrictions(null, getAceTree(restr));
- fail();
- } catch (AccessControlException e) {
- // success
- }
+ Restriction restr = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
+ restrictionProvider.validateRestrictions(null, getAceTree(restr));
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testValidateRestrictionsWrongType() throws Exception {
Restriction mand = restrictionProvider.createRestriction(testPath, "mandatory", valueFactory.createValue(true));
- try {
- Tree ace = getAceTree(mand, new RestrictionImpl(PropertyStates.createProperty(REP_GLOB, true), false));
-
- restrictionProvider.validateRestrictions(testPath, ace);
- fail("wrong type with restriction 'rep:glob");
- } catch (AccessControlException e) {
- // success
- }
+ Tree ace = getAceTree(mand, new RestrictionImpl(PropertyStates.createProperty(REP_GLOB, true), false));
+ restrictionProvider.validateRestrictions(testPath, ace);
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testValidateRestrictionsUnsupportedRestriction() throws Exception {
Restriction mand = restrictionProvider.createRestriction(testPath, "mandatory", valueFactory.createValue(true));
- try {
- Tree ace = getAceTree(mand, new RestrictionImpl(PropertyStates.createProperty("unsupported", "value"), false));
- restrictionProvider.validateRestrictions(testPath, ace);
- fail("wrong type with restriction 'rep:glob");
- } catch (AccessControlException e) {
- // success
- }
+ Tree ace = getAceTree(mand, new RestrictionImpl(PropertyStates.createProperty("unsupported", "value"), false));
+ restrictionProvider.validateRestrictions(testPath, ace);
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testValidateRestrictionsMissingMandatory() throws Exception {
Restriction glob = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
- try {
- restrictionProvider.validateRestrictions(testPath, getAceTree(glob));
- fail("missing mandatory restriction");
- } catch (AccessControlException e) {
- // success
- }
+ restrictionProvider.validateRestrictions(testPath, getAceTree(glob));
}
@Test
@@ -363,4 +328,33 @@ public class AbstractRestrictionProvider
restrictionProvider.validateRestrictions(testPath, getAceTree(mand, ntNames));
restrictionProvider.validateRestrictions(testPath, getAceTree(mand, glob, ntNames));
}
+
+ @Test
+ public void testGetRestrictionTree() {
+ Tree aceTree = getAceTree();
+ Tree restrictionTree = restrictionProvider.getRestrictionsTree(aceTree);
+ assertEquals(aceTree.getChild(REP_RESTRICTIONS), restrictionTree);
+ }
+
+ @Test
+ public void testGetRestrictionTreeMissing() {
+ Tree aceTree = when(mock(Tree.class).getChild(REP_RESTRICTIONS)).thenReturn(mock(Tree.class)).getMock();
+ Tree restrictionTree = restrictionProvider.getRestrictionsTree(aceTree);
+ assertEquals(aceTree, restrictionTree);
+ }
+
+ @Test
+ public void testWriteEmptyRestrictions() throws Exception {
+ restrictionProvider.writeRestrictions(null, getAceTree(), Collections.emptySet());
+ }
+
+ @Test
+ public void testWriteRestrictions() throws Exception {
+ Restriction ntNames = restrictionProvider.createRestriction(testPath, REP_NT_NAMES, nameValues);
+ Tree aceTree = getAceTree();
+ restrictionProvider.writeRestrictions(null, aceTree, Collections.singleton(ntNames));
+
+ verify(aceTree, times(1)).getChild(REP_RESTRICTIONS);
+ verify(aceTree.getChild(REP_RESTRICTIONS), times(1)).setProperty(ntNames.getProperty());
+ }
}
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java Fri Feb 8 15:54:14 2019
@@ -29,6 +29,7 @@ import javax.jcr.security.AccessControlE
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
@@ -47,6 +48,10 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class CompositeRestrictionProviderTest implements AccessControlConstants {
@@ -60,38 +65,8 @@ public class CompositeRestrictionProvide
private static final Restriction LONGS_RESTRICTION = new RestrictionImpl(PropertyStates.createProperty(NAME_LONGS, ImmutableList.of(Long.MAX_VALUE), Type.LONGS), false);
private static final Restriction UNKNOWN_RESTRICTION = new RestrictionImpl(PropertyStates.createProperty("unknown", "string"), false);
- private RestrictionProvider rp1 = new AbstractRestrictionProvider(ImmutableMap.<String, RestrictionDefinition>of(
- REP_GLOB, GLOB_RESTRICTION.getDefinition(),
- REP_PREFIXES, NT_PREFIXES_RESTRICTION.getDefinition()
- )) {
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- throw new UnsupportedOperationException();
- }
- };
- private RestrictionProvider rp2 = new AbstractRestrictionProvider(ImmutableMap.of(
- NAME_BOOLEAN, MANDATORY_BOOLEAN_RESTRICTION.getDefinition(),
- NAME_LONGS, LONGS_RESTRICTION.getDefinition()
- )) {
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- throw new UnsupportedOperationException();
- }
- };
+ private RestrictionProvider rp1 = spy(createRestrictionProvider(GLOB_RESTRICTION.getDefinition(), NT_PREFIXES_RESTRICTION.getDefinition()));
+ private RestrictionProvider rp2 = spy(createRestrictionProvider(MANDATORY_BOOLEAN_RESTRICTION.getDefinition(), LONGS_RESTRICTION.getDefinition()));
private Set<String> supported = ImmutableSet.of(
MANDATORY_BOOLEAN_RESTRICTION.getDefinition().getName(),
@@ -100,21 +75,66 @@ public class CompositeRestrictionProvide
REP_GLOB);
private RestrictionProvider provider = CompositeRestrictionProvider.newInstance(rp1, rp2);
- private ValueFactory vf = new ValueFactoryImpl(Mockito.mock(Root.class), NamePathMapper.DEFAULT);
+ private ValueFactory vf = new ValueFactoryImpl(mock(Root.class), NamePathMapper.DEFAULT);
+
+ @NotNull
+ private AbstractRestrictionProvider createRestrictionProvider(@NotNull RestrictionDefinition... supportedDefinitions) {
+ return createRestrictionProvider(null, null, supportedDefinitions);
+ }
+
+ @NotNull
+ private AbstractRestrictionProvider createRestrictionProvider(@Nullable RestrictionPattern pattern, @Nullable Restriction toRead, @NotNull RestrictionDefinition... supportedDefinitions) {
+ ImmutableMap.Builder<String, RestrictionDefinition> builder = ImmutableMap.builder();
+ for (RestrictionDefinition def : supportedDefinitions) {
+ builder.put(def.getName(), def);
+ }
+ return new AbstractRestrictionProvider(builder.build()) {
+ @Override
+ public @NotNull Set<Restriction> readRestrictions(String oakPath, @NotNull Tree aceTree) {
+ if (toRead != null) {
+ return ImmutableSet.of(toRead);
+ } else {
+ return super.readRestrictions(oakPath, aceTree);
+ }
+ }
+
+ @NotNull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
+ return getPattern();
+ }
+
+ @NotNull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
+ return getPattern();
+ }
+
+ private @NotNull RestrictionPattern getPattern() {
+ if (pattern == null) {
+ throw new UnsupportedOperationException();
+ } else {
+ return pattern;
+ }
+ }
+ };
+ }
private Tree getAceTree(Restriction... restrictions) {
- Tree restrictionsTree = Mockito.mock(Tree.class);;
+ Tree restrictionsTree = mock(Tree.class);;
when(restrictionsTree.getName()).thenReturn(REP_RESTRICTIONS);
when(restrictionsTree.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_RESTRICTIONS, Type.NAME));
List<PropertyState> properties = new ArrayList<>();
for (Restriction r : restrictions) {
- when(restrictionsTree.getProperty(r.getDefinition().getName())).thenReturn(r.getProperty());
+ String name = r.getDefinition().getName();
+ when(restrictionsTree.getProperty(name)).thenReturn(r.getProperty());
+ when(restrictionsTree.hasProperty(name)).thenReturn(true);
properties.add(r.getProperty());
}
when(restrictionsTree.getProperties()).thenReturn((Iterable)properties);
when(restrictionsTree.exists()).thenReturn(true);
- Tree ace = Mockito.mock(Tree.class);
+ Tree ace = mock(Tree.class);
when(ace.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_GRANT_ACE, Type.NAME));
when(ace.getChild(REP_RESTRICTIONS)).thenReturn(restrictionsTree);
when(ace.exists()).thenReturn(true);
@@ -138,7 +158,6 @@ public class CompositeRestrictionProvide
RestrictionProvider crp2 = CompositeRestrictionProvider.newInstance(rp1, rp2);
assertEquals(crp.getSupportedRestrictions("/testPath"), crp2.getSupportedRestrictions("/testPath"));
-
}
@Test
@@ -165,14 +184,9 @@ public class CompositeRestrictionProvide
}
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateRestrictionWithInvalidPath() throws Exception {
- try {
- provider.createRestriction(null, REP_GLOB, vf.createValue("*"));
- fail("rep:glob not supported at 'null' path");
- } catch (AccessControlException e) {
- // success
- }
+ provider.createRestriction(null, REP_GLOB, vf.createValue("*"));
}
@Test
@@ -238,6 +252,19 @@ public class CompositeRestrictionProvide
}
}
+ @Test
+ public void testWriteEmptyRestrictions() throws Exception {
+ provider.writeRestrictions("/test", getAceTree(), Collections.emptySet());
+ }
+
+ @Test
+ public void testWriteRestrictions() throws Exception {
+ Tree aceTree = getAceTree();
+ provider.writeRestrictions("/test", aceTree, ImmutableSet.of(LONGS_RESTRICTION, GLOB_RESTRICTION));
+ verify(rp1, times(1)).writeRestrictions("/test", aceTree, Collections.singleton(GLOB_RESTRICTION));
+ verify(rp2, times(1)).writeRestrictions("/test", aceTree, Collections.singleton(LONGS_RESTRICTION));
+ }
+
@Test(expected = AccessControlException.class)
public void testValidateRestrictionsMissingMandatory() throws Exception {
Tree aceTree = getAceTree(GLOB_RESTRICTION);
@@ -255,57 +282,66 @@ public class CompositeRestrictionProvide
Restriction rWithInvalidDefinition = new RestrictionImpl(PropertyStates.createProperty(REP_GLOB, ImmutableList.of("str", "str2"), Type.STRINGS), false);
Tree aceTree = getAceTree(rWithInvalidDefinition, MANDATORY_BOOLEAN_RESTRICTION);
- RestrictionProvider rp = new AbstractRestrictionProvider(ImmutableMap.of(REP_GLOB, GLOB_RESTRICTION.getDefinition())) {
- @NotNull
- @Override
- public Set<Restriction> readRestrictions(String oakPath, @NotNull Tree aceTree) {
- return ImmutableSet.of(rWithInvalidDefinition);
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- throw new UnsupportedOperationException();
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- throw new UnsupportedOperationException();
- }
- };
+ RestrictionProvider rp = createRestrictionProvider(null, rWithInvalidDefinition, GLOB_RESTRICTION.getDefinition());
RestrictionProvider cp = CompositeRestrictionProvider.newInstance(rp, rp2);
cp.validateRestrictions("/test", aceTree);
}
@Test(expected = AccessControlException.class)
public void testValidateRestrictionsUnsupported() throws Exception {
- Tree aceTree = getAceTree(UNKNOWN_RESTRICTION, MANDATORY_BOOLEAN_RESTRICTION);
-
- RestrictionProvider rp = new AbstractRestrictionProvider(ImmutableMap.of(REP_GLOB, GLOB_RESTRICTION.getDefinition())) {
- @NotNull
- @Override
- public Set<Restriction> readRestrictions(String oakPath, @NotNull Tree aceTree) {
- return ImmutableSet.of(UNKNOWN_RESTRICTION);
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- throw new UnsupportedOperationException();
- }
+ Tree aceTree = getAceTree(UNKNOWN_RESTRICTION, NT_PREFIXES_RESTRICTION);
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- throw new UnsupportedOperationException();
- }
- };
+ RestrictionProvider rp = createRestrictionProvider(null, UNKNOWN_RESTRICTION, GLOB_RESTRICTION.getDefinition());
RestrictionProvider cp = CompositeRestrictionProvider.newInstance(rp, rp2);
cp.validateRestrictions("/test", aceTree);
}
@Test
+ public void testValidateRestrictions() throws Exception {
+ Tree aceTree = getAceTree(LONGS_RESTRICTION, MANDATORY_BOOLEAN_RESTRICTION);
+ provider.validateRestrictions("/test", aceTree);
+ }
+
+ @Test
+ public void testValidateRestrictionsTreeNotExisting() throws Exception {
+ Tree aceTree = getAceTree(NT_PREFIXES_RESTRICTION);
+ when(aceTree.getChild(REP_RESTRICTIONS).exists()).thenReturn(false);
+
+ CompositeRestrictionProvider.newInstance(
+ rp1,
+ createRestrictionProvider(LONGS_RESTRICTION.getDefinition())
+ ).validateRestrictions("/test", aceTree);
+ }
+
+ @Test
+ public void testValidateRestrictionsMissingProperty() throws Exception {
+ Tree aceTree = getAceTree();
+ when(aceTree.getChild(REP_RESTRICTIONS).exists()).thenReturn(true);
+
+ CompositeRestrictionProvider.newInstance(
+ rp1,
+ createRestrictionProvider(null, GLOB_RESTRICTION, LONGS_RESTRICTION.getDefinition())
+ ).validateRestrictions("/test", aceTree);
+ }
+
+ @Test
+ public void testValidateRestrictionsOnAceNode() throws Exception {
+ List<PropertyState> properties = new ArrayList<>();
+
+ Tree aceTree = getAceTree();
+ properties.add(aceTree.getProperty(JcrConstants.JCR_PRIMARYTYPE));
+
+ when(aceTree.getChild(REP_RESTRICTIONS).exists()).thenReturn(false);
+
+ when(aceTree.hasProperty(NAME_BOOLEAN)).thenReturn(true);
+ when(aceTree.getProperty(NAME_BOOLEAN)).thenReturn(MANDATORY_BOOLEAN_RESTRICTION.getProperty());
+ properties.add(MANDATORY_BOOLEAN_RESTRICTION.getProperty());
+ when(aceTree.getProperties()).thenReturn((Iterable)properties);
+
+ provider.validateRestrictions("/test", aceTree);
+ }
+
+ @Test
public void testGetRestrictionPatternEmptyComposite() {
assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance().getPattern("/test", ImmutableSet.of(GLOB_RESTRICTION)));
}
@@ -313,47 +349,34 @@ public class CompositeRestrictionProvide
@Test
public void testGetRestrictionPatternSingleEmpty() {
- assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(new AbstractRestrictionProvider(ImmutableMap.of()) {
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- return RestrictionPattern.EMPTY;
- }
-
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- return RestrictionPattern.EMPTY;
- }
- }).getPattern("/test", ImmutableSet.of(GLOB_RESTRICTION)));
+ assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(
+ createRestrictionProvider(RestrictionPattern.EMPTY, null)).
+ getPattern("/test", ImmutableSet.of(GLOB_RESTRICTION)));
}
@Test
public void testGetRestrictionPatternAllEmpty() {
- assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(new AbstractRestrictionProvider(ImmutableMap.of()) {
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- return RestrictionPattern.EMPTY;
- }
+ assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(
+ createRestrictionProvider(RestrictionPattern.EMPTY, null),
+ createRestrictionProvider(RestrictionPattern.EMPTY, null)).
+ getPattern("/test", getAceTree(NT_PREFIXES_RESTRICTION)));
+ }
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- return RestrictionPattern.EMPTY;
- }
- }, new AbstractRestrictionProvider(ImmutableMap.of()) {
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Tree tree) {
- return RestrictionPattern.EMPTY;
- }
+ @Test
+ public void testGetRestrictionPattern() {
+ RestrictionPattern pattern = mock(RestrictionPattern.class);
+ RestrictionProvider cp = CompositeRestrictionProvider.newInstance(
+ createRestrictionProvider(pattern, null, LONGS_RESTRICTION.getDefinition()),
+ createRestrictionProvider(RestrictionPattern.EMPTY, null, GLOB_RESTRICTION.getDefinition()));
+ assertSame(pattern, cp.getPattern("/test", getAceTree(LONGS_RESTRICTION)));
+ assertSame(pattern, cp.getPattern("/test", getAceTree(GLOB_RESTRICTION)));
+ }
- @NotNull
- @Override
- public RestrictionPattern getPattern(@Nullable String oakPath, @NotNull Set<Restriction> restrictions) {
- return RestrictionPattern.EMPTY;
- }
- }).getPattern("/test", getAceTree(NT_PREFIXES_RESTRICTION)));
+ @Test
+ public void testGetCompositeRestrictionPattern() {
+ RestrictionProvider cp = CompositeRestrictionProvider.newInstance(
+ createRestrictionProvider(mock(RestrictionPattern.class), null, NT_PREFIXES_RESTRICTION.getDefinition()),
+ createRestrictionProvider(mock(RestrictionPattern.class), null, MANDATORY_BOOLEAN_RESTRICTION.getDefinition()));
+ assertTrue(cp.getPattern("/test", getAceTree(LONGS_RESTRICTION)) instanceof CompositePattern);
}
}
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionDefinitionImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionDefinitionImplTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionDefinitionImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionDefinitionImplTest.java Fri Feb 8 15:54:14 2019
@@ -25,6 +25,7 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -57,21 +58,14 @@ public class RestrictionDefinitionImplTe
assertTrue(definition.isMandatory());
}
- @Test
- public void testInvalid() {
- try {
- new RestrictionDefinitionImpl(null, Type.BOOLEAN, false);
- fail("Creating RestrictionDefinition with null name should fail.");
- } catch (NullPointerException e) {
- // success
- }
+ @Test(expected = NullPointerException.class)
+ public void testNullName() {
+ new RestrictionDefinitionImpl(null, Type.BOOLEAN, false);
+ }
- try {
- new RestrictionDefinitionImpl(name, Type.UNDEFINED, false);
- fail("Creating RestrictionDefinition with undefined required type should fail.");
- } catch (IllegalArgumentException e) {
- // success
- }
+ @Test(expected = IllegalArgumentException.class)
+ public void testUndefinedType() {
+ new RestrictionDefinitionImpl(name, Type.UNDEFINED, false);
}
@Test
@@ -111,7 +105,7 @@ public class RestrictionDefinitionImplTe
});
for (RestrictionDefinition rd : defs) {
- assertFalse(definition.equals(rd));
+ assertNotEquals(definition, rd);
}
}
}
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionImplTest.java?rev=1853226&r1=1853225&r2=1853226&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/RestrictionImplTest.java Fri Feb 8 15:54:14 2019
@@ -84,14 +84,9 @@ public class RestrictionImplTest {
assertTrue(restriction.getDefinition().isMandatory());
}
- @Test
- public void testInvalid() {
- try {
- new RestrictionImpl(null, false);
- fail("Creating RestrictionDefinition with null name should fail.");
- } catch (NullPointerException e) {
- // success
- }
+ @Test(expected = NullPointerException.class)
+ public void testNullProperty() {
+ new RestrictionImpl(null, false);
}
@Test
@@ -141,7 +136,7 @@ public class RestrictionImplTest {
});
for (Restriction r : rs) {
- assertFalse(restriction.equals(r));
+ assertNotEquals(restriction, r);
}
}