Author: angela
Date: Thu May  2 13:10:43 2019
New Revision: 1858538

URL: http://svn.apache.org/viewvc?rev=1858538&view=rev
Log:
OAK-8262 : CompiledPermissionImpl returns wrong type of TreePermission for 
child of permission store 

Added:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java
   (with props)
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java?rev=1858538&r1=1858537&r2=1858538&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
 Thu May  2 13:10:43 2019
@@ -211,7 +211,7 @@ final class CompiledPermissionImpl imple
                      return new TreePermissionImpl(tree, type, 
parentPermission);
                 }
             case INTERNAL:
-                return EMPTY;
+                return InternalTreePermission.INSTANCE;
             default:
                 return new TreePermissionImpl(tree, type, parentPermission);
         }
@@ -229,7 +229,7 @@ final class CompiledPermissionImpl imple
         TreeType type = typeProvider.getType(versionableTree);
         switch (type) {
             case HIDDEN : return ALL;
-            case INTERNAL : return EMPTY;
+            case INTERNAL : return InternalTreePermission.INSTANCE;
             // case VERSION is never expected here
             default:
                 return new TreePermissionImpl(versionableTree, type, 
buildParentPermission(versionableTree));
@@ -460,6 +460,8 @@ final class CompiledPermissionImpl imple
             return ((TreePermissionImpl) parentPermission).type;
         } else if (parentPermission == TreePermission.EMPTY) {
             return TreeType.DEFAULT;
+        } else if (parentPermission == InternalTreePermission.INSTANCE) {
+            return TreeType.INTERNAL;
         } else if (parentPermission instanceof VersionTreePermission) {
             return TreeType.VERSION;
         } else if (parentPermission instanceof RepoPolicyTreePermission) {

Added: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java?rev=1858538&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java
 Thu May  2 13:10:43 2019
@@ -0,0 +1,68 @@
+/*
+ * 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.security.authorization.permission;
+
+import org.apache.jackrabbit.oak.api.PropertyState;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+final class InternalTreePermission implements TreePermission {
+
+    private static final Logger log = 
LoggerFactory.getLogger(InternalTreePermission.class);
+
+    static final TreePermission INSTANCE = new InternalTreePermission();
+
+    private InternalTreePermission() {}
+
+    @Override
+    public @NotNull TreePermission getChildPermission(@NotNull String 
childName, @NotNull NodeState childState) {
+        return INSTANCE;
+    }
+
+    @Override
+    public boolean canRead() {
+        return EMPTY.canRead();
+    }
+
+    @Override
+    public boolean canRead(@NotNull PropertyState property) {
+        return EMPTY.canRead(property);
+    }
+
+    @Override
+    public boolean canReadAll() {
+        return EMPTY.canReadAll();
+    }
+
+    @Override
+    public boolean canReadProperties() {
+        return EMPTY.canReadProperties();
+    }
+
+    @Override
+    public boolean isGranted(long permissions) {
+        return EMPTY.isGranted(permissions);
+    }
+
+    @Override
+    public boolean isGranted(long permissions, @NotNull PropertyState 
property) {
+        return EMPTY.isGranted(permissions, property);
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermission.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java?rev=1858538&r1=1858537&r2=1858538&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImplTest.java
 Thu May  2 13:10:43 2019
@@ -298,13 +298,9 @@ public class CompiledPermissionImplTest
 
         CompiledPermissionImpl cp = 
createForTestSession(ConfigurationParameters.EMPTY);
 
-        // FIXME: wrong TreePermission for child of internal path -> not EMPTY
-//        String[] internalPaths = new String[] {
-//                PERMISSIONS_STORE_PATH,
-//                PathUtils.concat(PERMISSIONS_STORE_PATH, 
testSession.getWorkspaceName())
-//        };
-        String[] internalPaths = new String[]{
-                PERMISSIONS_STORE_PATH
+        String[] internalPaths = new String[] {
+                PERMISSIONS_STORE_PATH,
+                PathUtils.concat(PERMISSIONS_STORE_PATH, 
testSession.getWorkspaceName())
         };
         for (String internalPath : internalPaths) {
             Tree internalTree = createReadonlyTree(internalPath);
@@ -317,7 +313,7 @@ public class CompiledPermissionImplTest
             assertTrue(cp.getPrivileges(internalTree).isEmpty());
 
             TreePermission tp = createTreePermission(cp, internalPath);
-            assertSame(TreePermission.EMPTY, tp);
+            assertSame(InternalTreePermission.INSTANCE, tp);
         }
     }
 

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java?rev=1858538&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java
 Thu May  2 13:10:43 2019
@@ -0,0 +1,67 @@
+/*
+ * 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.security.authorization.permission;
+
+import org.apache.jackrabbit.oak.api.PropertyState;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Mockito.mock;
+
+public class InternalTreePermissonTest {
+
+    @Test
+    public void testGetChildPermission() {
+        assertSame(InternalTreePermission.INSTANCE, 
InternalTreePermission.INSTANCE.getChildPermission("name", 
mock(NodeState.class)));
+    }
+
+    @Test
+    public void testCanRead() {
+        assertEquals(TreePermission.EMPTY.canRead(), 
InternalTreePermission.INSTANCE.canRead());
+    }
+
+    @Test
+    public void testCanReadProperty() {
+        PropertyState prop = mock(PropertyState.class);
+        assertEquals(TreePermission.EMPTY.canRead(prop), 
InternalTreePermission.INSTANCE.canRead(prop));
+    }
+
+    @Test
+    public void testCanReadAll() {
+        assertEquals(TreePermission.EMPTY.canReadAll(), 
InternalTreePermission.INSTANCE.canReadAll());
+    }
+
+    @Test
+    public void testCanReadProperties() {
+        assertEquals(TreePermission.EMPTY.canReadProperties(), 
InternalTreePermission.INSTANCE.canReadProperties());
+    }
+
+    @Test
+    public void testIsGranted() {
+        assertEquals(TreePermission.EMPTY.isGranted(Permissions.READ_NODE), 
InternalTreePermission.INSTANCE.isGranted(Permissions.READ_NODE));
+    }
+
+    @Test
+    public void testIsGrantedProperty() {
+        PropertyState prop = mock(PropertyState.class);
+        assertEquals(TreePermission.EMPTY.isGranted(Permissions.READ_PROPERTY, 
prop), InternalTreePermission.INSTANCE.isGranted(Permissions.READ_PROPERTY, 
prop));
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/InternalTreePermissonTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreTest.java?rev=1858538&r1=1858537&r2=1858538&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreTest.java
 Thu May  2 13:10:43 2019
@@ -99,7 +99,7 @@ public class PermissionStoreTest extends
         PermissionProvider pp = createPermissionProvider();
 
         Tree t = root.getTree(PermissionConstants.PERMISSIONS_STORE_PATH);
-        assertSame(TreePermission.EMPTY, pp.getTreePermission(t, 
TreePermission.EMPTY));
+        assertSame(InternalTreePermission.INSTANCE, pp.getTreePermission(t, 
TreePermission.EMPTY));
     }
 
     @Test


Reply via email to