You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/06/12 15:09:20 UTC

svn commit: r784106 - in /jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api: HasPermissionTest.java TestAll.java

Author: angela
Date: Fri Jun 12 13:09:19 2009
New Revision: 784106

URL: http://svn.apache.org/viewvc?rev=784106&view=rev
Log:
JCR-2085: test case (TCK) maintenance for JCR 2.0

- trivial tests for Session.hasPermission

Added:
    jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/HasPermissionTest.java
      - copied, changed from r784098, jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/CheckPermissionTest.java
Modified:
    jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java

Copied: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/HasPermissionTest.java (from r784098, jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/CheckPermissionTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/HasPermissionTest.java?p2=jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/HasPermissionTest.java&p1=jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/CheckPermissionTest.java&r1=784098&r2=784106&rev=784106&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/CheckPermissionTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/HasPermissionTest.java Fri Jun 12 13:09:19 2009
@@ -19,78 +19,75 @@
 import org.apache.jackrabbit.test.AbstractJCRTest;
 
 import javax.jcr.Session;
-
-import java.security.AccessControlException;
+import javax.jcr.Node;
 
 /**
- * Tests if {@link Session#checkPermission(String, String)} yields the correct
- * permissions for a read-only session and a 'superuser' session.
- *
- * @test
- * @sources CheckPermissionTest.java
- * @executeClass org.apache.jackrabbit.test.api.CheckPermissionTest
- * @keywords level2
+ * Tests if {@link javax.jcr.Session#hasPermission(String, String)} yields the
+ * correct permissions for a read-only, a read-write and an admin session.
  */
-public class CheckPermissionTest extends AbstractJCRTest {
+public class HasPermissionTest extends AbstractJCRTest {
+
+    private static final String ACTION_ALL = Session.ACTION_READ + "," + Session.ACTION_ADD_NODE + "," + Session.ACTION_REMOVE + "," + Session.ACTION_SET_PROPERTY;
 
     /**
-     * Tests if <code>Session.checkPermission(String, String)</code> works
-     * properly: <ul> <li>Returns quietly if access is permitted.</li>
-     * <li>Throws an {@link java.security.AccessControlException} if access is
-     * denied.</li> </ul>
+     * Tests if <code>Session.hasPermission(String, String)</code> returns
+     * <ul>
+     * <li><code>true</code> for READ.</li>
+     * <li><code>false</code> for all other actions.</li>
+     * </ul>
      */
-    public void testCheckPermission() throws Exception {
-        testRootNode.addNode(nodeName2, testNodeType);
+    public void testReadOnlyPermission() throws Exception {
+        Node n = testRootNode.addNode(nodeName2, testNodeType);
         superuser.save();
 
         Session readOnly = helper.getReadOnlySession();
-        try {
-            permissionCheckReadOnly(readOnly);
-            permissionCheckReadWrite(superuser);
-        } finally {
-            readOnly.logout();
-        }
+        String path = n.getPath();
+
+        assertTrue(readOnly.hasPermission(path, Session.ACTION_READ));
+        assertFalse(readOnly.hasPermission(path + "newNode", Session.ACTION_ADD_NODE));
+        assertFalse(readOnly.hasPermission(path, Session.ACTION_REMOVE));
+        assertFalse(readOnly.hasPermission(path, Session.ACTION_SET_PROPERTY));
+        assertFalse(readOnly.hasPermission(path, ACTION_ALL));
+        assertFalse(readOnly.hasPermission(path, Session.ACTION_REMOVE + "," + Session.ACTION_SET_PROPERTY));
     }
 
     /**
-     * Helper function used in testCheckPermission checks if a read-only session
-     * has the correct permissions
+     * Tests if <code>Session.hasPermission(String, String)</code> returns
+     * <ul>
+     * <li><code>true</code> for all actions.</li>
+     * </ul>
      */
-    private void permissionCheckReadOnly(Session readOnly) throws Exception {
-        String pathPrefix = (testRoot.length() == 1) ? testRoot : testRoot + "/";
-        readOnly.checkPermission(testRoot, "read");
-
-        try {
-            readOnly.checkPermission(pathPrefix + nodeName1, "add_node");
-            fail("add_node permission granted to read-only Session");
-        } catch (AccessControlException success) {
-            // ok
-        }
-
-        try {
-            readOnly.checkPermission(pathPrefix + nodeName1, "set_property");
-            fail("set_property permission granted to read-only Session");
-        } catch (AccessControlException success) {
-            // ok
-        }
-
-        try {
-            readOnly.checkPermission(pathPrefix + nodeName2, "remove");
-            fail("remove permission granted to read-only Session");
-        } catch (AccessControlException success) {
-            // ok
-        }
+    public void testReadWritePermission() throws Exception {
+        Node n = testRootNode.addNode(nodeName2, testNodeType);
+        superuser.save();
+
+        String path = n.getPath();
+        Session rwSession = helper.getReadWriteSession();
+
+        assertTrue(rwSession.hasPermission(path, Session.ACTION_READ));
+        assertTrue(rwSession.hasPermission(path + "newNode", Session.ACTION_ADD_NODE));
+        assertTrue(rwSession.hasPermission(path, Session.ACTION_REMOVE));
+        assertTrue(rwSession.hasPermission(path, Session.ACTION_SET_PROPERTY));
+        assertTrue(rwSession.hasPermission(path, ACTION_ALL));
     }
 
+
     /**
-     * Helper function used in testCheckPermission checks if a read-write
-     * session has the correct permissions
+     * Tests if <code>Session.hasPermission(String, String)</code> returns
+     * <ul>
+     * <li><code>true</code> for all actions.</li>
+     * </ul>
      */
-    private void permissionCheckReadWrite(Session readWrite) throws Exception {
-        String pathPrefix = (testRoot.length() == 1) ? testRoot : testRoot + "/";
-        readWrite.checkPermission(testRoot, "read");
-        readWrite.checkPermission(pathPrefix + nodeName1, "add_node");
-        readWrite.checkPermission(pathPrefix + propertyName1, "set_property");
-        readWrite.checkPermission(pathPrefix + nodeName2, "remove");
+    public void testAdminPermission() throws Exception {
+        Node n = testRootNode.addNode(nodeName2, testNodeType);
+        superuser.save();
+
+        String path = n.getPath();
+
+        assertTrue(superuser.hasPermission(path, Session.ACTION_READ));
+        assertTrue(superuser.hasPermission(path + "newNode", Session.ACTION_ADD_NODE));
+        assertTrue(superuser.hasPermission(path, Session.ACTION_REMOVE));
+        assertTrue(superuser.hasPermission(path, Session.ACTION_SET_PROPERTY));
+        assertTrue(superuser.hasPermission(path, ACTION_ALL));
     }
-}
+}
\ No newline at end of file

Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java?rev=784106&r1=784105&r2=784106&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java Fri Jun 12 13:09:19 2009
@@ -145,6 +145,7 @@
         //// new Session features
         
         suite.addTestSuite(SessionRemoveItemTest.class);
+        suite.addTestSuite(HasPermissionTest.class);
 
         //// new Workspace features