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 2017/05/15 10:29:54 UTC
svn commit: r1795162 - in
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak:
security/authorization/restriction/ spi/security/authorization/restriction/
Author: angela
Date: Mon May 15 10:29:54 2017
New Revision: 1795162
URL: http://svn.apache.org/viewvc?rev=1795162&view=rev
Log:
OAK-6038 : Drop dependency of spi.security.* tests from AbstractSecurityTest
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/AbstractRestrictionProviderTest.java
- copied, changed from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/CompositeRestrictionProviderTest.java
- copied, changed from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/TestProvider.java
- copied, changed from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/TestProvider.java
Removed:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/TestProvider.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/AbstractRestrictionProviderTest.java (from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/AbstractRestrictionProviderTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/AbstractRestrictionProviderTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java&r1=1794697&r2=1795162&rev=1795162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/AbstractRestrictionProviderTest.java Mon May 15 10:29:54 2017
@@ -14,9 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.spi.security.authorization.restriction;
+package org.apache.jackrabbit.oak.security.authorization.restriction;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.jcr.PropertyType;
@@ -34,18 +33,24 @@ import org.apache.jackrabbit.oak.api.Typ
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.accesscontrol.AccessControlConstants;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.AbstractRestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinitionImpl;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionImpl;
import org.apache.jackrabbit.oak.util.NodeUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+/**
+ * Additional tests for {@link AbstractRestrictionProvider} that require a full
+ * oak repository.
+ */
public class AbstractRestrictionProviderTest extends AbstractSecurityTest implements AccessControlConstants {
private String unsupportedPath = null;
@@ -97,187 +102,6 @@ public class AbstractRestrictionProvider
return ace;
}
-
- @Test
- public void testGetSupportedRestrictions() throws Exception {
- Set<RestrictionDefinition> defs = restrictionProvider.getSupportedRestrictions(testPath);
- assertNotNull(defs);
- assertEquals(supported.size(), defs.size());
- for (RestrictionDefinition def : supported.values()) {
- assertTrue(defs.contains(def));
- }
- }
-
- @Test
- public void testGetSupportedRestrictionsForUnsupportedPath() throws Exception {
- Set<RestrictionDefinition> defs = restrictionProvider.getSupportedRestrictions(unsupportedPath);
- assertNotNull(defs);
- assertTrue(defs.isEmpty());
- }
-
- @Test
- 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
- }
- }
-
- @Test
- 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
- }
- }
-
- @Test
- 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
- }
- }
-
- @Test
- public void testCreateForUnsupportedMultiValues() throws Exception {
- try {
- restrictionProvider.createRestriction(testPath, REP_GLOB,
- valueFactory.createValue("*"),
- valueFactory.createValue("/a/*"));
- fail();
- } catch (AccessControlException e) {
- // success
- }
- }
-
- @Test
- public void testCreateRestriction() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
- assertNotNull(r);
- assertEquals(REP_GLOB, r.getDefinition().getName());
- assertEquals(globValue.getString(), r.getProperty().getValue(Type.STRING));
- }
-
- @Test
- public void testCreateRestrictionFromArray() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_GLOB, new Value[] {globValue});
- assertNotNull(r);
- assertEquals(REP_GLOB, r.getDefinition().getName());
- assertEquals(globValue.getString(), r.getProperty().getValue(Type.STRING));
- assertFalse(r.getProperty().isArray());
- }
-
- @Test
- public void testCreateMvRestriction() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_NT_NAMES,
- valueFactory.createValue("nt:folder", PropertyType.NAME),
- valueFactory.createValue("nt:file", PropertyType.NAME));
- assertNotNull(r);
- assertEquals(REP_NT_NAMES, r.getDefinition().getName());
- assertEquals(Type.NAMES, r.getDefinition().getRequiredType());
-
- PropertyState ps = r.getProperty();
- assertTrue(ps.isArray());
- assertEquals(Type.NAMES, ps.getType());
-
- List<Value> vs = ValueFactoryImpl.createValues(ps, namePathMapper);
- assertArrayEquals(nameValues, vs.toArray(new Value[vs.size()]));
- }
-
- @Test
- public void testCreateMvRestriction2() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_NT_NAMES, nameValues);
- assertNotNull(r);
- assertEquals(REP_NT_NAMES, r.getDefinition().getName());
- assertEquals(Type.NAMES, r.getDefinition().getRequiredType());
-
- PropertyState ps = r.getProperty();
- assertTrue(ps.isArray());
- assertEquals(Type.NAMES, ps.getType());
-
- List<Value> vs = ValueFactoryImpl.createValues(ps, namePathMapper);
- assertArrayEquals(nameValues, vs.toArray(new Value[vs.size()]));
- }
-
- @Test
- public void testCreateMvRestriction3() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_NT_NAMES, nameValue);
- assertNotNull(r);
- assertEquals(REP_NT_NAMES, r.getDefinition().getName());
- assertEquals(Type.NAMES, r.getDefinition().getRequiredType());
-
- assertTrue(r.getProperty().isArray());
- assertEquals(Type.NAMES, r.getProperty().getType());
-
- List<Value> vs = ValueFactoryImpl.createValues(r.getProperty(), namePathMapper);
- assertArrayEquals(new Value[] {nameValue}, vs.toArray(new Value[vs.size()]));
- }
-
- @Test
- public void testCreateEmptyMvRestriction() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_NT_NAMES);
- assertNotNull(r);
- assertEquals(REP_NT_NAMES, r.getDefinition().getName());
- assertEquals(Type.NAMES, r.getDefinition().getRequiredType());
-
- assertTrue(r.getProperty().isArray());
- assertEquals(Type.NAMES, r.getProperty().getType());
-
- List<Value> vs = ValueFactoryImpl.createValues(r.getProperty(), namePathMapper);
- assertNotNull(vs);
- assertEquals(0, vs.size());
- }
-
- @Test
- public void testCreateEmptyMvRestriction2() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_NT_NAMES, new Value[0]);
- assertNotNull(r);
- assertEquals(REP_NT_NAMES, r.getDefinition().getName());
- assertEquals(Type.NAMES, r.getDefinition().getRequiredType());
-
- assertTrue(r.getProperty().isArray());
- assertEquals(Type.NAMES, r.getProperty().getType());
-
- List<Value> vs = ValueFactoryImpl.createValues(r.getProperty(), namePathMapper);
- assertNotNull(vs);
- assertEquals(0, vs.size());
- }
-
- @Test
- public void testReadRestrictionsForUnsupportedPath() throws Exception {
- Set<Restriction> restrictions = restrictionProvider.readRestrictions(unsupportedPath, getAceTree());
- assertTrue(restrictions.isEmpty());
- }
-
@Test
public void testReadRestrictions() throws Exception {
Restriction r = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/CompositeRestrictionProviderTest.java (from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/CompositeRestrictionProviderTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/CompositeRestrictionProviderTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java&r1=1794697&r2=1795162&rev=1795162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/CompositeRestrictionProviderTest.java Mon May 15 10:29:54 2017
@@ -14,13 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.spi.security.authorization.restriction;
+package org.apache.jackrabbit.oak.security.authorization.restriction;
-import java.util.Collections;
-import java.util.Map;
import java.util.Set;
import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.security.AccessControlException;
@@ -31,6 +28,13 @@ import org.apache.jackrabbit.oak.Abstrac
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.CompositePattern;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.CompositeRestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinitionImpl;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionImpl;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
import org.apache.jackrabbit.oak.util.NodeUtil;
import org.junit.After;
import org.junit.Before;
@@ -38,10 +42,13 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+/**
+ * Additional tests for {@link CompositeRestrictionProvider} that require a full
+ * oak repository.
+ */
public class CompositeRestrictionProviderTest extends AbstractSecurityTest implements AccessControlConstants {
private RestrictionProvider rp1 = new TestProvider(ImmutableMap.<String, RestrictionDefinition>of(
@@ -81,114 +88,6 @@ public class CompositeRestrictionProvide
}
}
- @Test
- public void testEmpty() {
- assertSame(RestrictionProvider.EMPTY, CompositeRestrictionProvider.newInstance(Collections.<RestrictionProvider>emptySet()));
- }
-
- @Test
- public void testSingle() {
- RestrictionProvider rp = new TestProvider(Collections.<String, RestrictionDefinition>emptyMap());
- assertSame(rp, CompositeRestrictionProvider.newInstance(Collections.singleton(rp)));
- }
-
- @Test
- public void testNewInstance() {
- RestrictionProvider crp = CompositeRestrictionProvider.newInstance(ImmutableSet.of(rp1, rp2));
- RestrictionProvider crp2 = CompositeRestrictionProvider.newInstance(rp1, rp2);
-
- assertEquals(crp.getSupportedRestrictions("/testPath"), crp2.getSupportedRestrictions("/testPath"));
-
- }
-
- @Test
- public void testGetSupportedRestrictions() {
- String[] paths = new String[] {null, "/testPath"};
- for (String path : paths) {
- Set<RestrictionDefinition> defs = provider.getSupportedRestrictions(path);
- int expectedSize = rp1.getSupportedRestrictions(path).size() + rp2.getSupportedRestrictions(path).size();
- assertEquals(expectedSize, defs.size());
- assertTrue(defs.containsAll(rp1.getSupportedRestrictions(path)));
- assertTrue(defs.containsAll(rp2.getSupportedRestrictions(path)));
- }
- }
-
- @Test
- public void testCreateRestriction() throws Exception {
- Map<String, Value> valid = ImmutableMap.of(
- "boolean", vf.createValue(true),
- "longs", vf.createValue(10),
- REP_GLOB, vf.createValue("*")
- );
- for (String name : valid.keySet()) {
- provider.createRestriction("/testPath", name, valid.get(name));
- }
- }
-
- @Test
- 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
- }
- }
-
- @Test
- public void testCreateInvalidRestriction() throws Exception {
- Map<String, Value> invalid = ImmutableMap.of(
- "boolean", vf.createValue("wrong_type"),
- REP_GLOB, vf.createValue(true)
- );
- for (String name : invalid.keySet()) {
- try {
- provider.createRestriction("/testPath", name, invalid.get(name));
- fail("invalid restriction " + name);
- } catch (AccessControlException e) {
- // success
- }
- }
- }
-
- @Test
- public void testMvCreateRestriction() throws RepositoryException {
- Map<String, Value[]> valid = ImmutableMap.of(
- "longs", new Value[] {vf.createValue(100)},
- REP_NT_NAMES, new Value[] {vf.createValue("nt:base", PropertyType.NAME), vf.createValue("nt:unstructured", PropertyType.NAME)}
- );
- for (String name : valid.keySet()) {
- provider.createRestriction("/testPath", name, valid.get(name));
- }
- }
-
- @Test
- public void testCreateMvRestrictionWithInvalidPath() throws Exception {
- try {
- provider.createRestriction(null, REP_NT_NAMES, new Value[] {vf.createValue("nt:base", PropertyType.NAME)});
- fail("rep:glob not supported at 'null' path");
- } catch (AccessControlException e) {
- // success
- }
- }
-
- @Test
- public void testCreateInvalidMvRestriction() throws Exception {
- Map<String, Value[]> invalid = ImmutableMap.of(
- "boolean", new Value[] {vf.createValue(true), vf.createValue(false)},
- "longs", new Value[] {vf.createValue("wrong_type")},
- REP_NT_NAMES, new Value[] {vf.createValue(true)}
- );
- for (String name : invalid.keySet()) {
- try {
- provider.createRestriction("/testPath", name, invalid.get(name));
- fail("invalid restriction " + name);
- } catch (AccessControlException e) {
- // success
- }
- }
- }
-
@Test
public void testReadRestrictions() throws Exception {
NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/TestProvider.java (from r1794697, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/TestProvider.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/TestProvider.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/TestProvider.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/TestProvider.java&r1=1794697&r2=1795162&rev=1795162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/TestProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/restriction/TestProvider.java Mon May 15 10:29:54 2017
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.spi.security.authorization.restriction;
+package org.apache.jackrabbit.oak.security.authorization.restriction;
import java.util.HashSet;
import java.util.Map;
@@ -25,6 +25,12 @@ import javax.annotation.Nullable;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.AbstractRestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinitionImpl;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionImpl;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern;
/**
* RestrictionProvider for tests.
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java?rev=1795162&r1=1795161&r2=1795162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/AbstractRestrictionProviderTest.java Mon May 15 10:29:54 2017
@@ -16,28 +16,30 @@
*/
package org.apache.jackrabbit.oak.spi.security.authorization.restriction;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.jcr.PropertyType;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.security.AccessControlException;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
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.accesscontrol.AccessControlConstants;
-import org.apache.jackrabbit.oak.util.NodeUtil;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -45,8 +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.when;
-public class AbstractRestrictionProviderTest extends AbstractSecurityTest implements AccessControlConstants {
+public class AbstractRestrictionProviderTest implements AccessControlConstants {
private String unsupportedPath = null;
private String testPath = "/testRoot";
@@ -55,16 +58,14 @@ public class AbstractRestrictionProvider
private Value[] nameValues;
private Value nameValue;
+ private final NamePathMapper namePathMapper = NamePathMapper.DEFAULT;
private ValueFactory valueFactory;
private Map<String, ? extends RestrictionDefinition> supported;
private AbstractRestrictionProvider restrictionProvider;
@Before
- @Override
public void before() throws Exception {
- super.before();
-
- valueFactory = new ValueFactoryImpl(root, namePathMapper);
+ valueFactory = new ValueFactoryImpl(Mockito.mock(Root.class), namePathMapper);
globValue = valueFactory.createValue("*");
nameValue = valueFactory.createValue("nt:file", PropertyType.NAME);
nameValues = new Value[] {
@@ -76,28 +77,41 @@ public class AbstractRestrictionProvider
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);
- restrictionProvider = new TestProvider(supported);
- }
-
- @After
- @Override
- public void after() throws Exception {
- try {
- root.refresh();
- } finally {
- super.after();
- }
+ restrictionProvider = new AbstractRestrictionProvider(supported) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ throw new UnsupportedOperationException();
+ }
+ };
}
private Tree getAceTree(Restriction... restrictions) throws Exception {
- NodeUtil rootNode = new NodeUtil(root.getTree("/"));
- NodeUtil tmp = rootNode.addChild("testRoot", JcrConstants.NT_UNSTRUCTURED);
- Tree ace = tmp.addChild("rep:policy", NT_REP_ACL).addChild("ace0", NT_REP_GRANT_ACE).getTree();
- restrictionProvider.writeRestrictions(tmp.getTree().getPath(), ace, ImmutableSet.copyOf(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));
+ List<PropertyState> properties = new ArrayList();
+ for (Restriction r : restrictions) {
+ when(restrictionsTree.getProperty(r.getDefinition().getName())).thenReturn(r.getProperty());
+ properties.add(r.getProperty());
+ }
+ when(restrictionsTree.getProperties()).thenReturn((Iterable)properties);
+ when(restrictionsTree.exists()).thenReturn(true);
+
+ Tree ace = Mockito.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);
+
return ace;
}
-
@Test
public void testGetSupportedRestrictions() throws Exception {
Set<RestrictionDefinition> defs = restrictionProvider.getSupportedRestrictions(testPath);
@@ -289,30 +303,6 @@ public class AbstractRestrictionProvider
}
@Test
- public void testWriteRestrictions() throws Exception {
- Restriction r = restrictionProvider.createRestriction(testPath, REP_GLOB, globValue);
- Tree aceTree = getAceTree();
-
- restrictionProvider.writeRestrictions(testPath, aceTree, ImmutableSet.<Restriction>of(r));
-
- assertTrue(aceTree.hasChild(REP_RESTRICTIONS));
- Tree restr = aceTree.getChild(REP_RESTRICTIONS);
- assertEquals(r.getProperty(), restr.getProperty(REP_GLOB));
- }
-
- @Test
- public void testWriteInvalidRestrictions() throws Exception {
- PropertyState ps = PropertyStates.createProperty(REP_GLOB, valueFactory.createValue(false));
- Tree aceTree = getAceTree();
-
- restrictionProvider.writeRestrictions(testPath, aceTree, ImmutableSet.<Restriction>of(new RestrictionImpl(ps, false)));
-
- assertTrue(aceTree.hasChild(REP_RESTRICTIONS));
- Tree restr = aceTree.getChild(REP_RESTRICTIONS);
- assertEquals(ps, restr.getProperty(REP_GLOB));
- }
-
- @Test
public void testValidateRestrictionsUnsupportedPath() throws Exception {
// empty restrictions => must succeed
restrictionProvider.validateRestrictions(null, getAceTree());
@@ -332,8 +322,7 @@ public class AbstractRestrictionProvider
public void testValidateRestrictionsWrongType() throws Exception {
Restriction mand = restrictionProvider.createRestriction(testPath, "mandatory", valueFactory.createValue(true));
try {
- Tree ace = getAceTree(mand);
- new NodeUtil(ace).getChild(REP_RESTRICTIONS).setBoolean(REP_GLOB, true);
+ Tree ace = getAceTree(mand, new RestrictionImpl(PropertyStates.createProperty(REP_GLOB, true), false));
restrictionProvider.validateRestrictions(testPath, ace);
fail("wrong type with restriction 'rep:glob");
@@ -346,9 +335,7 @@ public class AbstractRestrictionProvider
public void testValidateRestrictionsUnsupportedRestriction() throws Exception {
Restriction mand = restrictionProvider.createRestriction(testPath, "mandatory", valueFactory.createValue(true));
try {
- Tree ace = getAceTree(mand);
- new NodeUtil(ace).getChild(REP_RESTRICTIONS).setString("Unsupported", "value");
-
+ 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) {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java?rev=1795162&r1=1795161&r2=1795162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/CompositeRestrictionProviderTest.java Mon May 15 10:29:54 2017
@@ -16,69 +16,110 @@
*/
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;
-import javax.jcr.PropertyType;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.security.AccessControlException;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
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.accesscontrol.AccessControlConstants;
-import org.apache.jackrabbit.oak.util.NodeUtil;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
-public class CompositeRestrictionProviderTest extends AbstractSecurityTest implements AccessControlConstants {
+public class CompositeRestrictionProviderTest implements AccessControlConstants {
- private RestrictionProvider rp1 = new TestProvider(ImmutableMap.<String, RestrictionDefinition>of(
- REP_GLOB, new RestrictionDefinitionImpl(REP_GLOB, Type.STRING, false),
- REP_NT_NAMES, new RestrictionDefinitionImpl(REP_NT_NAMES, Type.NAMES, false),
- REP_PREFIXES, new RestrictionDefinitionImpl(REP_PREFIXES, Type.STRINGS, false)
- ));
- private RestrictionProvider rp2 = new TestProvider(ImmutableMap.of(
- "boolean", new RestrictionDefinitionImpl("boolean", Type.BOOLEAN, true),
- "longs", new RestrictionDefinitionImpl("longs", Type.LONGS, false)
- ));
-
- private RestrictionProvider rp3 = new TestProvider(ImmutableMap.of(
- "string", new RestrictionDefinitionImpl("string", Type.STRING, false)),
- true
- );
+ private static final String NAME_LONGS = "longs";
+ private static final String NAME_BOOLEAN = "boolean";
- private Set<String> supported = ImmutableSet.of("boolean", "longs", REP_NT_NAMES, REP_GLOB);
+ private static final Restriction GLOB_RESTRICTION = new RestrictionImpl(PropertyStates.createProperty(REP_GLOB, "*"), false);
+ private static final Restriction NT_PREFIXES_RESTRICTION = new RestrictionImpl(PropertyStates.createProperty(REP_PREFIXES, ImmutableList.of(), Type.STRINGS), false);
+ private static final Restriction MANDATORY_BOOLEAN_RESTRICTION = new RestrictionImpl(PropertyStates.createProperty(NAME_BOOLEAN, true, Type.BOOLEAN), true);
+ 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()
+ )) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ private RestrictionProvider rp2 = new AbstractRestrictionProvider(ImmutableMap.of(
+ NAME_BOOLEAN, MANDATORY_BOOLEAN_RESTRICTION.getDefinition(),
+ NAME_LONGS, LONGS_RESTRICTION.getDefinition()
+ )) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ throw new UnsupportedOperationException();
+ }
+ };
+
+ private Set<String> supported = ImmutableSet.of(
+ MANDATORY_BOOLEAN_RESTRICTION.getDefinition().getName(),
+ LONGS_RESTRICTION.getDefinition().getName(),
+ REP_PREFIXES,
+ REP_GLOB);
private RestrictionProvider provider = CompositeRestrictionProvider.newInstance(rp1, rp2);
- private ValueFactory vf;
+ private ValueFactory vf = new ValueFactoryImpl(Mockito.mock(Root.class), NamePathMapper.DEFAULT);
- @Override
- @Before
- public void before() throws Exception {
- super.before();
- vf = getValueFactory();
- }
-
- @Override
- @After
- public void after() throws Exception {
- try {
- root.refresh();
- } finally {
- super.after();
+ private Tree getAceTree(Restriction... restrictions) throws Exception {
+ 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));
+ List<PropertyState> properties = new ArrayList();
+ for (Restriction r : restrictions) {
+ when(restrictionsTree.getProperty(r.getDefinition().getName())).thenReturn(r.getProperty());
+ properties.add(r.getProperty());
}
+ when(restrictionsTree.getProperties()).thenReturn((Iterable)properties);
+ when(restrictionsTree.exists()).thenReturn(true);
+
+ Tree ace = Mockito.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);
+
+ return ace;
}
@Test
@@ -88,8 +129,7 @@ public class CompositeRestrictionProvide
@Test
public void testSingle() {
- RestrictionProvider rp = new TestProvider(Collections.<String, RestrictionDefinition>emptyMap());
- assertSame(rp, CompositeRestrictionProvider.newInstance(Collections.singleton(rp)));
+ assertSame(rp1, CompositeRestrictionProvider.newInstance(Collections.singleton(rp1)));
}
@Test
@@ -116,8 +156,8 @@ public class CompositeRestrictionProvide
@Test
public void testCreateRestriction() throws Exception {
Map<String, Value> valid = ImmutableMap.of(
- "boolean", vf.createValue(true),
- "longs", vf.createValue(10),
+ NAME_BOOLEAN, vf.createValue(true),
+ NAME_LONGS, vf.createValue(10),
REP_GLOB, vf.createValue("*")
);
for (String name : valid.keySet()) {
@@ -138,7 +178,7 @@ public class CompositeRestrictionProvide
@Test
public void testCreateInvalidRestriction() throws Exception {
Map<String, Value> invalid = ImmutableMap.of(
- "boolean", vf.createValue("wrong_type"),
+ NAME_BOOLEAN, vf.createValue("wrong_type"),
REP_GLOB, vf.createValue(true)
);
for (String name : invalid.keySet()) {
@@ -154,30 +194,25 @@ public class CompositeRestrictionProvide
@Test
public void testMvCreateRestriction() throws RepositoryException {
Map<String, Value[]> valid = ImmutableMap.of(
- "longs", new Value[] {vf.createValue(100)},
- REP_NT_NAMES, new Value[] {vf.createValue("nt:base", PropertyType.NAME), vf.createValue("nt:unstructured", PropertyType.NAME)}
+ NAME_LONGS, new Value[] {vf.createValue(100)},
+ REP_PREFIXES, new Value[] {vf.createValue("prefix"), vf.createValue("prefix2")}
);
for (String name : valid.keySet()) {
provider.createRestriction("/testPath", name, valid.get(name));
}
}
- @Test
+ @Test(expected = AccessControlException.class)
public void testCreateMvRestrictionWithInvalidPath() throws Exception {
- try {
- provider.createRestriction(null, REP_NT_NAMES, new Value[] {vf.createValue("nt:base", PropertyType.NAME)});
- fail("rep:glob not supported at 'null' path");
- } catch (AccessControlException e) {
- // success
- }
+ provider.createRestriction(null, REP_PREFIXES, new Value[] {vf.createValue("jcr")});
}
@Test
public void testCreateInvalidMvRestriction() throws Exception {
Map<String, Value[]> invalid = ImmutableMap.of(
- "boolean", new Value[] {vf.createValue(true), vf.createValue(false)},
- "longs", new Value[] {vf.createValue("wrong_type")},
- REP_NT_NAMES, new Value[] {vf.createValue(true)}
+ NAME_BOOLEAN, new Value[] {vf.createValue(true), vf.createValue(false)},
+ NAME_LONGS, new Value[] {vf.createValue("wrong_type")},
+ REP_PREFIXES, new Value[] {vf.createValue(true)}
);
for (String name : invalid.keySet()) {
try {
@@ -191,16 +226,10 @@ public class CompositeRestrictionProvide
@Test
public void testReadRestrictions() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- aceNode.setBoolean("boolean", true);
- aceNode.setValues("longs", new Value[] {vf.createValue(10), vf.createValue(290)});
- aceNode.setString(REP_GLOB, "*");
- aceNode.setNames(REP_NT_NAMES); // empty array
- aceNode.setString("invalid", "val");
- aceNode.setStrings("invalid2", "val1", "val2", "val3");
+ Tree aceTree = getAceTree(NT_PREFIXES_RESTRICTION, MANDATORY_BOOLEAN_RESTRICTION, UNKNOWN_RESTRICTION);
- Set<Restriction> restrictions = provider.readRestrictions("/test", aceNode.getTree());
- assertEquals(4, restrictions.size());
+ Set<Restriction> restrictions = provider.readRestrictions("/test", aceTree);
+ assertEquals(2, restrictions.size());
for (Restriction r : restrictions) {
String name = r.getDefinition().getName();
if (!supported.contains(name)) {
@@ -209,123 +238,122 @@ public class CompositeRestrictionProvide
}
}
- @Test
- public void testWriteRestrictions() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- Set<Restriction> restrictions = ImmutableSet.of(
- provider.createRestriction("/test","boolean", vf.createValue(true)),
- provider.createRestriction("/test", "longs"),
- provider.createRestriction("/test", REP_GLOB, vf.createValue("*")),
- provider.createRestriction("/test", REP_NT_NAMES, vf.createValue("nt:base", PropertyType.NAME), vf.createValue("nt:version", PropertyType.NAME)));
- provider.writeRestrictions("/test", aceNode.getTree(), restrictions);
- }
-
- @Test
- public void testWriteUnsupportedRestrictions() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- Restriction invalid = new RestrictionImpl(PropertyStates.createProperty("invalid", vf.createValue(true)), false);
- try {
- provider.writeRestrictions("/test", aceNode.getTree(), ImmutableSet.<Restriction>of(invalid));
- fail("AccessControlException expected");
- } catch (AccessControlException e) {
- // success
- }
- }
+ @Test(expected = AccessControlException.class)
+ public void testValidateRestrictionsMissingMandatory() throws Exception {
+ Tree aceTree = getAceTree(GLOB_RESTRICTION);
+ provider.validateRestrictions("/test", aceTree);
+ }
+
+ @Test(expected = AccessControlException.class)
+ public void testValidateRestrictionsWrongType() throws Exception {
+ Tree aceTree = getAceTree(new RestrictionImpl(PropertyStates.createProperty(MANDATORY_BOOLEAN_RESTRICTION.getDefinition().getName(), "string"), true));
+ provider.validateRestrictions("/test", aceTree);
+ }
+
+ @Test(expected = AccessControlException.class)
+ public void testValidateRestrictionsInvalidDefinition() throws Exception {
+ 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())) {
+ @Nonnull
+ @Override
+ public Set<Restriction> readRestrictions(String oakPath, @Nonnull Tree aceTree) {
+ return ImmutableSet.of(rWithInvalidDefinition);
+ }
- @Test
- public void testValidateRestrictions() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- NodeUtil rNode = aceNode.addChild(REP_RESTRICTIONS, NT_REP_RESTRICTIONS);
- rNode.setBoolean("boolean", true);
- rNode.setValues("longs", new Value[] {vf.createValue(10), vf.createValue(290)});
- rNode.setString(REP_GLOB, "*");
- rNode.setNames(REP_NT_NAMES); // empty array
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ throw new UnsupportedOperationException();
+ }
- provider.validateRestrictions("/test", aceNode.getTree());
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ RestrictionProvider cp = CompositeRestrictionProvider.newInstance(rp, rp2);
+ cp.validateRestrictions("/test", aceTree);
+ }
- // remove mandatory restriction
- rNode.removeProperty("boolean");
- try {
- provider.validateRestrictions("/test", aceNode.getTree());
- fail("validation should detect missing mandatory restrictions");
- } catch (AccessControlException e) {
- // success
- }
+ @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())) {
+ @Nonnull
+ @Override
+ public Set<Restriction> readRestrictions(String oakPath, @Nonnull Tree aceTree) {
+ return ImmutableSet.of(UNKNOWN_RESTRICTION);
+ }
- // set with wrong type
- rNode.setName("boolean", "nt:base");
- try {
- provider.validateRestrictions("/test", aceNode.getTree());
- fail("validation should detect wrong restriction type");
- } catch (AccessControlException e) {
- // success
- } finally {
- rNode.setBoolean("boolean", true);
- }
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ throw new UnsupportedOperationException();
+ }
- rNode.setStrings(REP_GLOB, "*", "/jcr:content");
- try {
- provider.validateRestrictions("/test", aceNode.getTree());
- fail("validation should detect wrong restriction type (multi vs single valued)");
- } catch (AccessControlException e) {
- // success
- }
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ RestrictionProvider cp = CompositeRestrictionProvider.newInstance(rp, rp2);
+ cp.validateRestrictions("/test", aceTree);
}
@Test
- public void testValidateRestrictionsAtEntryNode() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- aceNode.setBoolean("boolean", true);
- aceNode.setValues("longs", new Value[] {vf.createValue(10), vf.createValue(290)});
- aceNode.setString(REP_GLOB, "*");
- aceNode.setNames(REP_NT_NAMES); // empty array
-
- provider.validateRestrictions("/test", aceNode.getTree());
+ public void testGetRestrictionPatternEmptyComposite() throws Exception {
+ assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance().getPattern("/test", ImmutableSet.of(GLOB_RESTRICTION)));
}
- @Test
- public void testValidateInvalidRestrictionDef() throws Exception {
- RestrictionProvider rp = CompositeRestrictionProvider.newInstance(rp1, rp3);
-
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- NodeUtil rNode = aceNode.addChild(REP_RESTRICTIONS, NT_REP_RESTRICTIONS);
- rNode.setValues(REP_GLOB, new Value[]{vf.createValue(10), vf.createValue(290)});
-
- try {
- rp.validateRestrictions("/test", aceNode.getTree());
- fail("Validation must detect invalid restriction definition");
- } catch (AccessControlException e) {
- // success
- }
- }
@Test
- public void testValidateUnsupportedRestriction() throws Exception {
- RestrictionProvider rp = CompositeRestrictionProvider.newInstance(rp1, rp3);
-
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- NodeUtil rNode = aceNode.addChild(REP_RESTRICTIONS, NT_REP_RESTRICTIONS);
- rNode.setString("unsupported", "value");
+ public void testGetRestrictionPatternSingleEmpty() throws Exception {
+ assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(new AbstractRestrictionProvider(ImmutableMap.of()) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ return RestrictionPattern.EMPTY;
+ }
- try {
- rp.validateRestrictions("/test", aceNode.getTree());
- fail("Validation must detect unsupported restriction");
- } catch (AccessControlException e) {
- // success
- }
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ return RestrictionPattern.EMPTY;
+ }
+ }).getPattern("/test", ImmutableSet.of(GLOB_RESTRICTION)));
}
@Test
- public void testGetRestrictionPattern() throws Exception {
- NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE);
- NodeUtil rNode = aceNode.addChild(REP_RESTRICTIONS, NT_REP_RESTRICTIONS);
- rNode.setString(REP_GLOB, "*");
-
- assertFalse(provider.getPattern("/test", aceNode.getTree()) instanceof CompositePattern);
+ public void testGetRestrictionPatternAllEmpty() throws Exception {
+ assertSame(RestrictionPattern.EMPTY, CompositeRestrictionProvider.newInstance(new AbstractRestrictionProvider(ImmutableMap.of()) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ return RestrictionPattern.EMPTY;
+ }
- rNode.setBoolean("boolean", true);
- rNode.setValues("longs", new Value[]{vf.createValue(10), vf.createValue(290)});
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ return RestrictionPattern.EMPTY;
+ }
+ }, new AbstractRestrictionProvider(ImmutableMap.of()) {
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Tree tree) {
+ return RestrictionPattern.EMPTY;
+ }
- assertTrue(provider.getPattern("/test", rNode.getTree()) instanceof CompositePattern);
+ @Nonnull
+ @Override
+ public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull Set<Restriction> restrictions) {
+ return RestrictionPattern.EMPTY;
+ }
+ }).getPattern("/test", getAceTree(NT_PREFIXES_RESTRICTION)));
}
}
\ No newline at end of file