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