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 md...@apache.org on 2013/04/11 18:23:12 UTC

svn commit: r1466944 - /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java

Author: mduerig
Date: Thu Apr 11 16:23:11 2013
New Revision: 1466944

URL: http://svn.apache.org/r1466944
Log:
OAK-709: Consider moving permission evaluation to the node state level
test: shadow invisible property should result on access violation on commit. Currently ignored. See TODO in PermissionValidator.childNodeChanged().

Modified:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java?rev=1466944&r1=1466943&r2=1466944&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/ShadowInvisibleContentTest.java Thu Apr 11 16:23:11 2013
@@ -20,6 +20,8 @@ package org.apache.jackrabbit.oak.securi
  
 import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
 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 java.security.Principal;
@@ -41,6 +43,7 @@ import org.apache.jackrabbit.oak.api.Tre
 import org.apache.jackrabbit.oak.security.privilege.PrivilegeConstants;
 import org.apache.jackrabbit.oak.util.NodeUtil;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class ShadowInvisibleContentTest extends AbstractSecurityTest {
@@ -61,7 +64,7 @@ public class ShadowInvisibleContentTest 
         NodeUtil b = a.addChild("b", NT_UNSTRUCTURED);
         b.setString("y", "yValue");
         NodeUtil c = b.addChild("c", NT_UNSTRUCTURED);
-        c.setString("propName3", "strValue");
+        c.setString("z", "zValue");
     }
      
     private void setupPermission(Principal principal, String path, boolean isAllow, String privilegeName)
@@ -87,7 +90,13 @@ public class ShadowInvisibleContentTest 
 
         Root root = getLatestRoot();
         Tree a = root.getTree("/a");
+
+        // /b not visible to this session
+        assertFalse(a.hasChild("b"));
+
+        // shadow /b with transient node of the same name
         Tree b = a.addChild("b");
+        assertTrue(a.hasChild("b"));
         assertFalse(b.hasChild("c"));
 
         try {
@@ -97,4 +106,27 @@ public class ShadowInvisibleContentTest 
         }
     }
 
+    @Test
+    @Ignore  // TODO incomplete implementation of PermissionValidator.childNodeChanged()
+    public void testShadowInvisibleProperty() throws CommitFailedException, RepositoryException, LoginException {
+        setupPermission(userPrincipal, "/a", true, PrivilegeConstants.JCR_ALL);
+        setupPermission(userPrincipal, "/a", false, PrivilegeConstants.REP_READ_PROPERTIES);
+
+        Root root = getLatestRoot();
+        Tree a = root.getTree("/a");
+
+        // /a/x not visible to this session
+        assertNull(a.getProperty("x"));
+
+        // shadow /a/x with transient property of the same name
+        a.setProperty("x", "xValue1");
+        assertNotNull(a.getProperty("x"));
+
+        try {
+            root.commit();
+        } catch (CommitFailedException e) {
+            assertTrue(e.isAccessViolation());
+        }
+    }
+
 }