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 2008/04/24 10:01:58 UTC
svn commit: r651182 - in
/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security:
AccessManagerTest.java authorization/AbstractEvaluationTest.java
jsr283/security/AbstractAccessControlTest.java
Author: angela
Date: Thu Apr 24 01:01:54 2008
New Revision: 651182
URL: http://svn.apache.org/viewvc?rev=651182&view=rev
Log:
tests
Modified:
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEvaluationTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/jsr283/security/AbstractAccessControlTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java?rev=651182&r1=651181&r2=651182&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java Thu Apr 24 01:01:54 2008
@@ -21,12 +21,14 @@
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.PropertyId;
import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.PropertyImpl;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.uuid.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,9 +37,12 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.Property;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
+import java.util.List;
/**
* <code>AccessManagerTest</code>...
@@ -105,7 +110,8 @@
acMgr.checkPermission(id, AccessManager.READ | AccessManager.WRITE | AccessManager.REMOVE + 1);
}
- /*
+/*
+// TODO: uncomment as soon as SimpleAccessManager is replaced
public void testCheckPermissionWithUnknowId() throws RepositoryException, NotExecutableException {
Session s = helper.getReadOnlySession();
AccessManager acMgr = getAccessManager(s);
@@ -118,7 +124,7 @@
// ok
}
}
- */
+*/
public void testIsGranted() throws RepositoryException, NotExecutableException {
Session s = helper.getReadOnlySession();
@@ -150,7 +156,31 @@
assertTrue(acMgr.isGranted(id, AccessManager.READ));
assertTrue(acMgr.isGranted(id, AccessManager.WRITE));
- assertTrue(acMgr.isGranted(id, AccessManager.WRITE | AccessManager.REMOVE)); }
+ assertTrue(acMgr.isGranted(id, AccessManager.WRITE | AccessManager.REMOVE));
+ }
+
+/*
+// TODO: uncomment as soon as SimpleAccessManager is replaced
+ public void testIsGrantedForRemovedItem() throws RepositoryException, NotExecutableException {
+ AccessManager acMgr = getAccessManager(superuser);
+ Property p = testRootNode.setProperty(propertyName1, "anyvalue");
+ ItemId id;
+ if (p instanceof PropertyImpl) {
+ id = ((PropertyImpl)p).getId();
+ } else {
+ throw new NotExecutableException();
+ }
+
+ assertTrue(acMgr.isGranted(id, AccessManager.READ));
+ p.remove();
+ try {
+ acMgr.isGranted(id, AccessManager.READ);
+ fail("AccessManager.isGranted should throw ItemNotFoundException if id of a removed item is passed.");
+ } catch (ItemNotFoundException e) {
+ // ok
+ }
+ }
+*/
public void testCanAccess() throws RepositoryException, NotExecutableException {
Session s = helper.getReadOnlySession();
@@ -182,7 +212,8 @@
assertFalse(getAccessManager(s).canAccess(notAccessibleName));
}
- /*
+/*
+// TODO: uncomment as soon as SimpleAccessManager is replaced
public void testCanAccessNotExistingWorkspace() throws RepositoryException, NotExecutableException {
Session s = helper.getReadOnlySession();
List all = Arrays.asList(s.getWorkspace().getAccessibleWorkspaceNames());
@@ -194,7 +225,7 @@
}
assertFalse(getAccessManager(s).canAccess(testName));
}
- */
+*/
public void testIsGrantedWithRelativePath() throws NotExecutableException {
AccessManager acMgr = getAccessManager(superuser);
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEvaluationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEvaluationTest.java?rev=651182&r1=651181&r2=651182&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEvaluationTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractEvaluationTest.java Thu Apr 24 01:01:54 2008
@@ -26,9 +26,9 @@
import org.apache.jackrabbit.core.security.jsr283.security.AccessControlManager;
import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.JUnitTest;
+import org.apache.jackrabbit.test.api.observation.EventResult;
import org.apache.jackrabbit.util.Text;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.jcr.AccessDeniedException;
import javax.jcr.Credentials;
@@ -39,6 +39,8 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
+import javax.jcr.observation.ObservationManager;
+import javax.jcr.observation.Event;
import javax.jcr.nodetype.ConstraintViolationException;
import java.security.Principal;
@@ -47,7 +49,7 @@
*/
public abstract class AbstractEvaluationTest extends AbstractAccessControlTest {
- private static Logger log = LoggerFactory.getLogger(AbstractEvaluationTest.class);
+ protected static final long DEFAULT_WAIT_TIMEOUT = 5000;
protected Credentials creds;
protected User testUser;
@@ -61,6 +63,10 @@
protected String childchildPPath;
protected String siblingPath;
+ // TODO: test AC for moved node
+ // TODO: test AC for moved AC-controlled node
+ // TODO: test if combination of group and user permissions are properly evaluated
+
protected void setUp() throws Exception {
super.setUp();
@@ -341,7 +347,6 @@
}
}
-
public void testWithDrawRead() throws RepositoryException, NotExecutableException {
/*
precondition:
@@ -354,8 +359,7 @@
// withdraw the READ privilege
withdrawPrivileges(path, PrivilegeRegistry.READ, getRestrictions(path));
- //assertFalse(testSession.itemExists(path));
-
+ // test if login as testuser -> item at path must not exist.
Session s = null;
try {
s = helper.getRepository().login(creds);
@@ -367,6 +371,42 @@
}
}
+ public void testEventGeneration() throws RepositoryException, NotExecutableException {
+ /*
+ precondition:
+ testuser must have READ-only permission on test-node and below
+ */
+ checkReadOnly(path);
+
+ // withdraw the READ privilege
+ withdrawPrivileges(path, PrivilegeRegistry.READ, getRestrictions(path));
+
+ // testUser registers a eventlistener for 'path
+ ObservationManager obsMgr = testSession.getWorkspace().getObservationManager();
+ EventResult listener = new EventResult(((JUnitTest) this).log);
+ try {
+ obsMgr.addEventListener(listener, Event.NODE_REMOVED, path, true, new String[0], new String[0], true);
+
+ // superuser removes the node with childNPath in order to provoke
+ // events being generated
+ superuser.getItem(childNPath).remove();
+ superuser.save();
+
+ obsMgr.removeEventListener(listener);
+ // since the testUser does not have read-permission on the removed
+ // node, no corresponding event must be generated.
+ Event[] evts = listener.getEvents(DEFAULT_WAIT_TIMEOUT);
+ for (int i = 0; i < evts.length; i++) {
+ if (evts[i].getType() == Event.NODE_REMOVED &&
+ evts[i].getPath().equals(childNPath)) {
+ fail("TestUser does not have READ permission below " + path + " -> events below must not show up.");
+ }
+ }
+ } finally {
+ obsMgr.removeEventListener(listener);
+ }
+ }
+
public void testInheritance() throws RepositoryException, NotExecutableException {
/* precondition:
testuser must have READ-only permission on test-node and below
@@ -504,8 +544,4 @@
}
return policyNode;
}
-
- // TODO: test AC for moved node
- // TODO: test AC for moved AC-controlled node
- // TODO: test if combination of group and user permissions are properly evaluated
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/jsr283/security/AbstractAccessControlTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/jsr283/security/AbstractAccessControlTest.java?rev=651182&r1=651181&r2=651182&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/jsr283/security/AbstractAccessControlTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/jsr283/security/AbstractAccessControlTest.java Thu Apr 24 01:01:54 2008
@@ -19,20 +19,15 @@
import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.Repository;
/**
* <code>AbstractAccessControlTest</code>...
*/
public abstract class AbstractAccessControlTest extends AbstractJCRTest {
-
- private static Logger log = LoggerFactory.getLogger(AbstractAccessControlTest.class);
protected AccessControlManager acMgr;