Search in sources :

Example 41 with TreePermission

use of org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission in project jackrabbit-oak by apache.

the class VersionTest method testCugAtRoot.

@Test
public void testCugAtRoot() throws Exception {
    Tree versionable = root.getTree(UNSUPPORTED_PATH);
    String vhPath = checkNotNull(versionManager.getVersionHistory(versionable)).getPath();
    try {
        createCug(root, PathUtils.ROOT_PATH, EveryonePrincipal.NAME);
        root.commit();
        CugPermissionProvider pp = createCugPermissionProvider(ImmutableSet.of("/"));
        Tree t = root.getTree("/");
        TreePermission tp = pp.getTreePermission(t, TreePermission.EMPTY);
        assertTrue(tp instanceof CugTreePermission);
        for (String segm : PathUtils.elements(vhPath)) {
            t = t.getChild(segm);
            tp = pp.getTreePermission(t, tp);
            assertTrue(tp instanceof CugTreePermission);
        }
    } finally {
        root.getTree("/").removeProperty(JCR_MIXINTYPES);
        Tree cug = root.getTree("/rep:cugPolicy");
        if (cug.exists()) {
            cug.remove();
        }
        root.commit();
    }
}
Also used : Tree(org.apache.jackrabbit.oak.api.Tree) TreePermission(org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission) Test(org.junit.Test)

Example 42 with TreePermission

use of org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission in project jackrabbit-oak by apache.

the class CompositeProviderNoScopeTest method testTreePermissionSize.

@Test
public void testTreePermissionSize() throws Exception {
    Field tpField = CompositeTreePermission.class.getDeclaredField("treePermissions");
    tpField.setAccessible(true);
    Tree rootTree = readOnlyRoot.getTree(ROOT_PATH);
    NodeState ns = ((ImmutableTree) rootTree).getNodeState();
    TreePermission tp = cppTestUser.getTreePermission(rootTree, TreePermission.EMPTY);
    assertEquals(2, ((TreePermission[]) tpField.get(tp)).length);
    List<String> childNames = ImmutableList.of("test", "a", "b", "c", "nonexisting");
    for (String cName : childNames) {
        ns = ns.getChildNode(cName);
        tp = tp.getChildPermission(cName, ns);
        assertCompositeTreePermission(false, tp);
    }
}
Also used : Field(java.lang.reflect.Field) NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) Tree(org.apache.jackrabbit.oak.api.Tree) ImmutableTree(org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree) ImmutableTree(org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree) TreePermission(org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission) Test(org.junit.Test)

Example 43 with TreePermission

use of org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission in project jackrabbit-oak by apache.

the class CompositeProviderFullScopeTest method testTreePermissionIsGrantedProperty.

@Test
public void testTreePermissionIsGrantedProperty() throws Exception {
    TreePermission parentPermission = TreePermission.EMPTY;
    for (String path : TP_PATHS) {
        TreePermission tp = cppTestUser.getTreePermission(readOnlyRoot.getTree(path), parentPermission);
        Long toTest = (defPermissions.containsKey(path)) ? defPermissions.get(path) : defPermissions.get(PathUtils.getAncestorPath(path, 1));
        if (toTest != null) {
            boolean granted = (toTest == Permissions.READ_NODE);
            assertEquals(path, granted, tp.isGranted(toTest, PROPERTY_STATE));
        }
        assertFalse(tp.isGranted(Permissions.READ_PROPERTY, PROPERTY_STATE));
        parentPermission = tp;
    }
}
Also used : TreePermission(org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission) Test(org.junit.Test)

Example 44 with TreePermission

use of org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission in project jackrabbit-oak by apache.

the class CompositeProviderNoScopeTest method testTreePermissionIsGranted.

@Test
public void testTreePermissionIsGranted() throws Exception {
    TreePermission parentPermission = TreePermission.EMPTY;
    for (String path : TP_PATHS) {
        TreePermission tp = cppTestUser.getTreePermission(readOnlyRoot.getTree(path), parentPermission);
        Long toTest = (defPermissions.containsKey(path)) ? defPermissions.get(path) : defPermissions.get(PathUtils.getAncestorPath(path, 1));
        if (toTest != null) {
            assertTrue(tp.isGranted(toTest));
        }
        parentPermission = tp;
    }
}
Also used : TreePermission(org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission) Test(org.junit.Test)

Example 45 with TreePermission

use of org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission in project jackrabbit-oak by apache.

the class CompositeProviderFullScopeTest method testTreePermissionCanRead.

@Test
public void testTreePermissionCanRead() throws Exception {
    Map<String, Boolean> readMap = ImmutableMap.<String, Boolean>builder().put(ROOT_PATH, false).put(TEST_PATH, true).put(TEST_A_PATH, true).put(TEST_A_B_PATH, true).put(TEST_A_B_C_PATH, false).put(TEST_A_B_C_PATH + "/nonexisting", false).build();
    TreePermission parentPermission = TreePermission.EMPTY;
    for (String nodePath : readMap.keySet()) {
        Tree tree = readOnlyRoot.getTree(nodePath);
        TreePermission tp = cppTestUser.getTreePermission(tree, parentPermission);
        boolean expectedResult = readMap.get(nodePath);
        assertEquals(nodePath, expectedResult, tp.canRead());
        parentPermission = tp;
    }
}
Also used : Tree(org.apache.jackrabbit.oak.api.Tree) TreePermission(org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission) Test(org.junit.Test)

Aggregations

TreePermission (org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission)109 Test (org.junit.Test)94 Tree (org.apache.jackrabbit.oak.api.Tree)53 AbstractSecurityTest (org.apache.jackrabbit.oak.AbstractSecurityTest)41 ImmutableTree (org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree)22 PermissionProvider (org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider)11 NodeState (org.apache.jackrabbit.oak.spi.state.NodeState)10 AggregatedPermissionProvider (org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider)8 PropertyState (org.apache.jackrabbit.oak.api.PropertyState)6 Nonnull (javax.annotation.Nonnull)4 AccessControlManager (javax.jcr.security.AccessControlManager)4 Root (org.apache.jackrabbit.oak.api.Root)4 JackrabbitAccessControlList (org.apache.jackrabbit.api.security.JackrabbitAccessControlList)3 TreeType (org.apache.jackrabbit.oak.plugins.tree.TreeType)3 NodeUtil (org.apache.jackrabbit.oak.util.NodeUtil)3 Field (java.lang.reflect.Field)2 AuthorizationConfiguration (org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 CheckForNull (javax.annotation.CheckForNull)1