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/05/20 09:37:17 UTC
svn commit: r658134 [3/4] - in /jackrabbit/trunk:
jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jsr283/security/
jackrabbit-core/src/main/java/org/apache/jackrabbit/commons/iterator/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ ja...
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,376 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.security.TestPrincipal;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <code>AccessControlEntryTest</code>...
+ */
+public class AccessControlEntryTest extends AbstractAccessControlTest {
+
+ private static Logger log = LoggerFactory.getLogger(AccessControlEntryTest.class);
+
+ private String path;
+ private Map addedEntries = new HashMap();
+ private Privilege[] privs;
+ private Principal testPrincipal;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // TODO: test if options is supporte
+ //checkSupportedOption(superuser, Repository.OPTION_ACCESS_CONTROL_ENTRY_SUPPORTED);
+
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ superuser.save();
+ path = n.getPath();
+
+ privs = acMgr.getSupportedPrivileges(path);
+ if (privs.length == 0) {
+ throw new NotExecutableException("No supported privileges at absPath " + path);
+ }
+
+ // TODO: make sure, entries to ADD are not present yet.
+ // TODO: retrieve principal name from tck-Configuration
+ // TODO: get rid of SessionImpl dependency
+ Session s = helper.getReadWriteSession();
+ if (s instanceof SessionImpl) {
+ for (Iterator it = ((SessionImpl) s).getSubject().getPrincipals().iterator(); it.hasNext();) {
+ Principal p = (Principal) it.next();
+ if (! (p instanceof Group)) {
+ testPrincipal = p;
+ }
+ }
+ if (testPrincipal == null) {
+ throw new NotExecutableException("Test principal missing.");
+ }
+ } else {
+ throw new NotExecutableException("SessionImpl expected");
+ }
+ }
+
+ protected void tearDown() throws Exception {
+ try {
+ for (Iterator it = addedEntries.keySet().iterator(); it.hasNext();) {
+ String path = it.next().toString();
+ acMgr.removeAccessControlEntry(path, (AccessControlEntry) addedEntries.get(path));
+ }
+ superuser.save();
+ } catch (Exception e) {
+ log.error("Unexpected error while removing test entries.", e);
+ }
+ super.tearDown();
+ }
+
+ private static AccessControlEntry addEntry(AccessControlManager acMgr,
+ String path, Principal principal,
+ Privilege[] privs) throws NotExecutableException, RepositoryException {
+ try {
+ return acMgr.addAccessControlEntry(path, principal, privs);
+ } catch (UnsupportedRepositoryOperationException e) {
+ throw new NotExecutableException(e.getMessage());
+ }
+ }
+
+ public void testGetAccessControlEntries() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ // call must succeed.
+ AccessControlEntry[] entries = acMgr.getAccessControlEntries(path);
+ for (int i = 0; i < entries.length; i++) {
+ assertNotNull("An ACE must contain a principal", entries[i].getPrincipal());
+ Privilege[] privs = entries[i].getPrivileges();
+ assertTrue("An ACE must contain at least a single privilege", privs != null && privs.length > 0);
+ }
+ }
+
+ public void testGetAccessControlEntriesForNonExistingNode() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ String path = getPathToNonExistingNode();
+ try {
+ acMgr.getAccessControlEntries(path);
+ fail("AccessControlManager.getAccessControlEntries for an invalid absPath must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testGetAccessControlEntriesForProperty() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ String path = getPathToProperty();
+ try {
+ acMgr.getAccessControlEntries(path);
+ fail("AccessControlManager.getAccessControlEntries for a property path must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testGetEffectiveAccessControlEntries() throws NotExecutableException, RepositoryException {
+ checkCanReadAc(path);
+ // call must succeed.
+ AccessControlEntry[] entries = acMgr.getEffectiveAccessControlEntries(path);
+ for (int i = 0; i < entries.length; i++) {
+ assertNotNull("An ACE must contain a principal", entries[i].getPrincipal());
+ Privilege[] privs = entries[i].getPrivileges();
+ assertNotNull("An ACE must contain at least a single privilege", privs);
+ assertTrue("An ACE must contain at least a single privilege", privs.length > 0);
+ }
+ }
+
+ public void testGetEffectiveAccessControlEntriesForNonExistingNode() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ String path = getPathToNonExistingNode();
+ try {
+ acMgr.getEffectiveAccessControlEntries(path);
+ fail("AccessControlManager.getAccessControlEntries for an invalid absPath must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testGetEffectiveAccessControlEntriesForProperty() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ String path = getPathToProperty();
+ try {
+ acMgr.getEffectiveAccessControlEntries(path);
+ fail("AccessControlManager.getAccessControlEntries for a property path must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testAddAccessControlEntry() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ Privilege[] privileges = new Privilege[] {privs[0]};
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privileges);
+ assertEquals("Principal name of the ACE must be equal to the name of the passed Principal", testPrincipal.getName(), entry.getPrincipal().getName());
+ assertEquals("Privileges of the ACE must be equal to the passed ones", Arrays.asList(privileges), Arrays.asList(entry.getPrivileges()));
+ }
+
+ public void testAddAccessControlEntryAggregatePrivilege() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ Privilege[] privileges = null;
+ for (int i = 0; i < privs.length; i++) {
+ if (privs[i].isAggregate()) {
+ privileges = new Privilege[] {privs[i]};
+ break;
+ }
+ }
+ if (privileges == null) {
+ throw new NotExecutableException("No aggregate privilege supported at " + path);
+ }
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privileges);
+ assertEquals("Principal name of the ACE must be equal to the name of the passed Principal", testPrincipal.getName(), entry.getPrincipal().getName());
+ assertEquals("Privileges of the ACE must be equal to the passed ones", Arrays.asList(privileges), Arrays.asList(entry.getPrivileges()));
+ }
+
+ public void testAddAccessControlEntryPresentInEntriesArray() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privs);
+ boolean found = false;
+ AccessControlEntry[] entries = acMgr.getAccessControlEntries(path);
+ for (int i = 0; i < entries.length; i++) {
+ if (entries[i].equals(entry)) {
+ found = true;
+ }
+ }
+ assertTrue("getAccessControlEntries must reflect an added ACE", found);
+ }
+
+ public void testAddAccessControlEntryIsTransient() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privs);
+ superuser.refresh(false);
+ try {
+ acMgr.removeAccessControlEntry(path, entry);
+ fail("Reverting changes made to 'path' must remove the transiently added entry. Its removal must therefore fail.");
+ } catch (AccessControlException e) {
+ // success.
+ }
+ }
+
+ public void testAddAccessControlEntryInvalidPrincipal() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+ try {
+ // TODO: retrieve unknown principal name from config
+ Principal invalidPrincipal = new TestPrincipal("an_unknown_principal");
+ addEntry(acMgr, path, invalidPrincipal, privs);
+ fail("Adding an entry with an unknown principal must throw AccessControlException.");
+ } catch (AccessControlException e) {
+ // success.
+ } catch (UnsupportedRepositoryOperationException e) {
+ throw new NotExecutableException(e.getMessage());
+ } finally {
+ superuser.refresh(false);
+ }
+ }
+
+ public void testRemoveAccessControlEntry() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privs);
+ acMgr.removeAccessControlEntry(path, entry);
+
+ boolean found = false;
+ AccessControlEntry[] entries = acMgr.getAccessControlEntries(path);
+ for (int i = 0; i < entries.length; i++) {
+ if (entries[i].equals(entry)) {
+ found = true;
+ }
+ }
+ assertFalse("After transiently removing an ACE it must not appear upon getAccessControlEntries any more.", found);
+ }
+
+ public void testRemoveAccessControlEntryIsTransient() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privs);
+ superuser.save();
+
+ // remember for teardown.
+ addedEntries.put(path, entry);
+
+ // transient removal
+ acMgr.removeAccessControlEntry(path, entry);
+
+ // make sure 'getAccessControlEntries' does not contain the removed one
+ AccessControlEntry[] entries = acMgr.getAccessControlEntries(path);
+ for (int i = 0; i < entries.length; i++) {
+ AccessControlEntry ace = entries[i];
+ if (ace.equals(entry)) {
+ fail("getAccessControlEntries still returns a removed ACE.");
+ }
+ }
+
+ // revert removal -> entry must be present again.
+ superuser.refresh(false);
+ entries = acMgr.getAccessControlEntries(path);
+ boolean found = false;
+ for (int i = 0; i < entries.length; i++) {
+ AccessControlEntry ace = entries[i];
+ if (ace.equals(entry)) {
+ found = true;
+ }
+ }
+ assertTrue("After reverting any changes the remove ACE should be returned by getAccessControlEntries again", found);
+ }
+
+ public void testRemoveIllegalAccessControlEntry() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+ try {
+ AccessControlEntry entry = new AccessControlEntry() {
+ public Principal getPrincipal() {
+ return testPrincipal;
+ }
+ public Privilege[] getPrivileges() {
+ return privs;
+ }
+ };
+ acMgr.removeAccessControlEntry(path, entry);
+ fail("AccessControlManager.removeAccessControlEntry with an unknown entry must throw AccessControlException.");
+ } catch (AccessControlException e) {
+ // ok
+ }
+ }
+
+ public void testRemoveAccessControlEntriesForProperty() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ String path = getPathToProperty();
+ try {
+ AccessControlEntry entry = new AccessControlEntry() {
+ public Principal getPrincipal() {
+ return testPrincipal;
+ }
+ public Privilege[] getPrivileges() {
+ return privs;
+ }
+ };
+ acMgr.removeAccessControlEntry(path, entry);
+ fail("AccessControlManager.getAccessControlEntries for a property path must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testAddAccessControlEntryTwice() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry entry = addEntry(acMgr, path, testPrincipal, privs);
+ AccessControlEntry entry2 = addEntry(acMgr, path, testPrincipal, privs);
+
+ assertEquals("Adding the same ACE twice must still return a valid ACE.", entry, entry2);
+ }
+
+ public void testAddAccessControlEntryAgain() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+
+ AccessControlEntry[] entries = acMgr.getAccessControlEntries(path);
+ if (entries.length > 0) {
+ AccessControlEntry ace = addEntry(acMgr, path, entries[0].getPrincipal(), entries[0].getPrivileges());
+ assertEquals("Adding an existing entry again -> Principal must be equal.", entries[0].getPrincipal(), ace.getPrincipal());
+ assertEquals("Adding an existing entry again -> Privileges must the same.", Arrays.asList(entries[0].getPrivileges()), Arrays.asList(ace.getPrivileges()));
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testExtendPrivileges() throws NotExecutableException, RepositoryException {
+ checkCanModifyAc(path);
+ if (privs.length == 1) {
+ throw new NotExecutableException();
+ }
+
+ Privilege privilege = privs[0];
+ // add a single privilege first:
+ AccessControlEntry ace = addEntry(acMgr, path, testPrincipal, new Privilege[] {privilege});
+ assertTrue("The resulting entry must contain the privilege added.",
+ Arrays.asList(ace.getPrivileges()).contains(privilege));
+
+ // add a second privilege (but not specifying the privilege added before)
+ // -> the first privilege must not be removed.
+ Privilege privilege2 = privs[1];
+ AccessControlEntry ace2 = addEntry(acMgr, path, testPrincipal, new Privilege[] {privilege2});
+ List pvlgs = Arrays.asList(ace2.getPrivileges());
+ assertTrue("Calling 'addAccessControlEntry' must not removed privileges added before",
+ pvlgs.contains(privilege) && pvlgs.contains(privilege2));
+ }
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlEntryTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,115 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import java.util.NoSuchElementException;
+
+/**
+ * <code>AccessControlPolicyIteratorTest</code>...
+ */
+public class AccessControlPolicyIteratorTest extends AbstractAccessControlTest {
+
+ private static Logger log = LoggerFactory.getLogger(AccessControlPolicyIteratorTest.class);
+
+ private String path;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // policy-option is cover the by the 'OPTION_SIMPLE_ACCESS_CONTROL_SUPPORTED' -> see super-class
+
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ superuser.save();
+ path = n.getPath();
+ }
+
+ public void testGetSize() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ // get size must succeed. its value however is indefined.
+ long size = it.getSize();
+ assertTrue("Size must be -1 or any value >= 0", size == -1 || size >= 0);
+ }
+
+ public void testGetInitialPosition() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ // the initial position of the policy iterator must be 0.
+ assertTrue("Initial position of AccessControlPolicyIterator must be 0.", it.getPosition() == 0);
+ }
+
+ public void testGetPosition() throws NotExecutableException, RepositoryException {
+ checkCanReadAc(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+
+ long position = 0;
+ while (it.hasNext()) {
+ assertEquals("Position must be adjusted during iteration.", position, it.getPosition());
+ it.nextAccessControlPolicy();
+ assertEquals("Position must be adjusted after calling next.", ++position, it.getPosition());
+ }
+ }
+
+ public void testSkip() throws NotExecutableException, RepositoryException {
+ checkCanReadAc(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+
+ long size = it.getSize();
+ if (size > -1) {
+ it.skip(size);
+ assertFalse("After skipping all elements 'hasNext()' must return false", it.hasNext());
+
+ try {
+ it.nextAccessControlPolicy();
+ fail("After skipping all 'nextAccessControlPolicy()' must fail.");
+ } catch (NoSuchElementException e) {
+ // success
+ }
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ // TODO: uncomment as soon as RangeIterator is adjusted.
+ /*
+ public void testgetNumberRemaining() throws NotExecutableException, RepositoryException {
+ checkCanReadAc(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+
+ long remaining = it.getNumberRemaining();
+ assertTrue("Number of remaining entries must be >= -1", remaining >= -1);
+
+ while (it.hasNext()) {
+ it.nextAccessControlPolicy();
+ long rem = it.getNumberRemaining();
+ if (remaining != -1) {
+ assertTrue("Number of remaining entries must decrease or be -1", rem == -1 || rem < remaining);
+ }
+ remaining = rem;
+ }
+ }
+ */
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyIteratorTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,415 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <code>AccessControlPolicyTest</code>...
+ */
+public class AccessControlPolicyTest extends AbstractAccessControlTest {
+
+ private static Logger log = LoggerFactory.getLogger(AccessControlPolicyTest.class);
+
+ private String path;
+ private List addedPolicies = new ArrayList();
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // policy-option is cover the by the 'OPTION_SIMPLE_ACCESS_CONTROL_SUPPORTED' -> see super-class
+
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ superuser.save();
+ path = n.getPath();
+ }
+
+ protected void tearDown() throws Exception {
+ try {
+ for (Iterator it = addedPolicies.iterator(); it.hasNext();) {
+ String path = it.next().toString();
+ acMgr.removePolicy(path);
+ }
+ superuser.save();
+ } catch (Exception e) {
+ log.error("Unexpected error while removing test policies.", e);
+ }
+ super.tearDown();
+ }
+
+ private AccessControlPolicy buildInvalidPolicy(String path) throws RepositoryException, AccessDeniedException {
+ List applicable = new ArrayList();
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ while (it.hasNext()) {
+ applicable.add(it.nextAccessControlPolicy().getName());
+ }
+
+ String name = "invalidPolicy";
+ int index = 0;
+ while (applicable.contains(name)) {
+ name = "invalidPolicy" + index;
+ index++;
+ }
+ final String policyName = name;
+ return new AccessControlPolicy() {
+
+ public String getName() throws RepositoryException {
+ return policyName;
+ }
+ public String getDescription() throws RepositoryException {
+ return null;
+ }
+ };
+ }
+
+ public void testGetEffectivePolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ // call must succeed without exception
+ AccessControlPolicy policy = acMgr.getEffectivePolicy(path);
+ if (policy != null) {
+ assertTrue("The name of an AccessControlPolicy must not be null.", policy.getName() != null);
+ } else {
+ // no policy present on that node. // TODO: check if possible.
+ }
+ }
+
+ public void testGetEffectivePolicyForNonExistingNode() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ String path = getPathToNonExistingNode();
+ try {
+ acMgr.getEffectivePolicy(path);
+ fail("AccessControlManager.getEffectivePolicy for an invalid absPath must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testGetEffectivePolicyForProperty() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ String path = getPathToProperty();
+ try {
+ acMgr.getEffectivePolicy(path);
+ fail("AccessControlManager.getEffectivePolicy for property must throw PathNotFoundException.");
+ } catch (PathNotFoundException e) {
+ // ok
+ }
+ }
+
+ public void testGetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ // call must succeed without exception
+ AccessControlPolicy policy = acMgr.getPolicy(path);
+ if (policy != null) {
+ assertTrue("The name of an AccessControlPolicy must not be null.", policy.getName() != null);
+ } else {
+ // no policy present on that node.
+ }
+ }
+
+ public void testGetApplicablePolicies() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ // call must succeed without exception
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ assertNotNull("The iterator of applicable policies must not be null", it);
+ }
+
+ public void testApplicablePoliciesAreDistinct() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ // call must succeed without exception
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ Set names = new HashSet();
+
+ while (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ if (!names.add(policy.getName())) {
+ fail("The names of the policies present should be unique among the choices presented for a specific node. Name " + policy.getName() + " occured multiple times.");
+ }
+ }
+ }
+
+ public void testSetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testSetIllegalPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+ try {
+ acMgr.setPolicy(path, buildInvalidPolicy(path));
+ fail("SetPolicy with an unknown policy should throw AccessControlException.");
+ } catch (AccessControlException e) {
+ // success.
+ }
+ }
+
+ public void testGetPolicyAfterSet() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ checkCanModifyAc(path);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+
+ AccessControlPolicy p = acMgr.getPolicy(path);
+ assertEquals("GetPolicy must return the policy that has been set before.", policy, p);
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testSetPolicyIsTransient() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+
+ AccessControlPolicy current = acMgr.getPolicy(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ superuser.refresh(false);
+
+ String mgs = "Reverting 'setPolicy' must change back the return value of getPolicy.";
+ if (current == null) {
+ assertEquals(mgs, acMgr.getPolicy(path), current);
+ } else {
+ assertTrue(mgs, acMgr.getPolicy(path).equals(current));
+ }
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testGetPolicyAfterSave() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ checkCanModifyAc(path);
+
+ AccessControlPolicy policy;
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ superuser.save();
+
+ // remember for tearDown
+ addedPolicies.add(path);
+ } else {
+ throw new NotExecutableException();
+ }
+
+ Session s2 = null;
+ try {
+ s2 = helper.getSuperuserSession();
+ AccessControlPolicy p = getAccessControlManager(s2).getPolicy(path);
+ assertEquals("Policy must be visible to another superuser session.", policy, p);
+ } finally {
+ if (s2 != null) {
+ s2.logout();
+ }
+ }
+ }
+
+
+ public void testNodeIsModifiedAfterSecondSetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+ // make sure an policy has been explicitely set.
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ superuser.save();
+ // remember for tearDown
+ addedPolicies.add(path);
+ } else {
+ throw new NotExecutableException();
+ }
+
+ // call 'setPolicy' a second time -> Node must be modified.
+ it = acMgr.getApplicablePolicies(path);
+ try {
+ if (it.hasNext()) {
+ Item item = superuser.getItem(path);
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+
+ assertTrue("After setting a policy the node must be marked modified.", item.isModified());
+ } else {
+ throw new NotExecutableException();
+ }
+ } finally {
+ // revert changes
+ superuser.refresh(false);
+ }
+ }
+
+ public void testNodeIsModifiedAfterSetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ Item item = superuser.getItem(path);
+
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+
+ assertTrue("After setting a policy the node must be marked modified.", item.isModified());
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testRemovePolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanModifyAc(path);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ AccessControlPolicy removed = acMgr.removePolicy(path);
+ assertEquals("RemovePolicy must return the policy that has been set before.", policy, removed);
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ public void testRemovePolicyIsTransient() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ checkCanModifyAc(path);
+
+ AccessControlPolicy current = acMgr.getPolicy(path);
+ if (acMgr.getPolicy(path) == null) {
+ // no policy to remove ->> apply one
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ superuser.save();
+
+ // remember for teardown
+ addedPolicies.add(path);
+
+ current = policy;
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ // test transient behaviour of the removal
+ acMgr.removePolicy(path);
+ AccessControlPolicy p = acMgr.getPolicy(path);
+ assertTrue("After transient remove AccessControlManager.getPolicy must return null.", p == null);
+
+ // revert changes
+ superuser.refresh(false);
+ p = acMgr.getPolicy(path);
+ assertEquals("Reverting a Policy removal must restore the original state.", p, current);
+ }
+
+ public void testNodeIsModifiedAfterRemovePolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ checkCanReadAc(path);
+ checkCanModifyAc(path);
+
+ Item item = superuser.getItem(path);
+ if (acMgr.getPolicy(path) == null) {
+ // no policy to remove ->> apply one
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ superuser.save();
+
+ // remember for teardown
+ addedPolicies.add(path);
+ } else {
+ throw new NotExecutableException();
+ }
+ }
+
+ // test transient behaviour of the removal
+ try {acMgr.removePolicy(path);
+ assertTrue("After removing a policy the node must be marked modified.", item.isModified());
+ } finally {
+ item.refresh(false);
+ }
+ }
+
+ public void testNullPolicyOnNewNode() throws NotExecutableException, RepositoryException, AccessDeniedException {
+ Node n;
+ try {
+ n = ((Node) superuser.getItem(path)).addNode(nodeName2, testNodeType);
+ } catch (RepositoryException e) {
+ throw new NotExecutableException();
+ }
+
+ assertNull("A new Node must not have an access control policy set.", acMgr.getPolicy(n.getPath()));
+ }
+
+ public void testSetPolicyOnNewNode() throws NotExecutableException, RepositoryException, AccessDeniedException {
+ Node n;
+ try {
+ n = ((Node) superuser.getItem(path)).addNode(nodeName2, testNodeType);
+ } catch (RepositoryException e) {
+ throw new NotExecutableException();
+ }
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(n.getPath());
+ while (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(n.getPath(), policy);
+
+ AccessControlPolicy p = acMgr.getPolicy(n.getPath());
+ assertNotNull("After calling setPolicy the manager must return a non-null policy for the new Node.", p);
+ assertEquals("The name of applicable policy must be equal to the name of the set policy", policy.getName(), p.getName());
+ }
+ }
+
+ public void testRemoveTransientlyAddedPolicy() throws RepositoryException, AccessDeniedException {
+ AccessControlPolicy ex = acMgr.getPolicy(path);
+
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ while (it.hasNext()) {
+ AccessControlPolicy policy = it.nextAccessControlPolicy();
+ acMgr.setPolicy(path, policy);
+ acMgr.removePolicy(path);
+
+ String msg = "transiently added AND removing a policy must revert " +
+ "the changes made. " +
+ "ACMgr.getPolicy must then return the original value.";
+ if (ex == null) {
+ assertNull(msg, acMgr.getPolicy(path));
+ } else {
+ assertEquals(msg, ex.getName(), acMgr.getPolicy(path).getName());
+ }
+ }
+ }
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/AccessControlPolicyTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,89 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.test.NotExecutableException;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <code>RSessionAccessControlDiscoveryTest</code>: A read-only session must
+ * be able to call 'hasPrivilege' and 'getPrivileges' and 'getSupportedPrivileges'
+ * without access denied exception
+ */
+public class RSessionAccessControlDiscoveryTest extends AbstractAccessControlTest {
+
+ private Session readOnlySession;
+ private AccessControlManager testAcMgr;
+ private String testPath;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ readOnlySession = helper.getReadOnlySession();
+ testAcMgr = getAccessControlManager(readOnlySession);
+ testPath = testRootNode.getPath();
+ }
+
+ protected void tearDown() throws Exception {
+ if (readOnlySession != null) {
+ readOnlySession.logout();
+ }
+ super.tearDown();
+ }
+
+ private Privilege getPrivilege(String name) throws RepositoryException, NotExecutableException {
+ Privilege[] privileges = acMgr.getSupportedPrivileges(testPath);
+ for (int i = 0; i < privileges.length; i++) {
+ if (name.equals(privileges[i].getName())) {
+ return privileges[i];
+ }
+ }
+ throw new NotExecutableException();
+ }
+
+ public void testGetSupportedPrivileges() throws RepositoryException {
+ Privilege[] privileges = testAcMgr.getSupportedPrivileges(testPath);
+ assertNotNull("getSupportedPrivileges must return a non-null value even for read-only session.", privileges);
+ assertTrue("getSupportedPrivileges must return a non-empty array even for read-only session.", privileges.length > 0);
+ }
+
+ public void testGetPrivileges() throws RepositoryException {
+ Privilege[] privs = testAcMgr.getPrivileges(testPath);
+ List names = new ArrayList(privs.length);
+ for (int i = 0; i < privs.length; i++) {
+ names.add(privs[i].getName());
+ }
+ assertTrue("A read-only session must have READ access to the test node.",
+ names.contains(Privilege.READ));
+ }
+
+ public void testHasPrivileges() throws RepositoryException, NotExecutableException {
+ Privilege priv = getPrivilege(Privilege.READ);
+ assertTrue("Read-only session must have READ privilege on test node.",
+ testAcMgr.hasPrivileges(testPath, new Privilege[] {priv}));
+ }
+
+ public void testNotHasPrivileges() throws RepositoryException, NotExecutableException {
+ Privilege all = getPrivilege(Privilege.ALL);
+ assertFalse("Read-only session must not have ALL privilege",
+ testAcMgr.hasPrivileges(testPath, new Privilege[] {all}));
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlDiscoveryTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,88 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.core.security.TestPrincipal;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+/**
+ * <code>AccessControlEntryTest</code>...
+ */
+public class RSessionAccessControlEntryTest extends AbstractAccessControlTest {
+
+ private static Logger log = LoggerFactory.getLogger(RSessionAccessControlEntryTest.class);
+
+ private String path;
+ private Session readOnlySession;
+ private AccessControlManager testAcMgr;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // TODO: test if options is supporte
+ //checkSupportedOption(superuser, Repository.OPTION_ACCESS_CONTROL_ENTRY_SUPPORTED);
+
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ superuser.save();
+ path = n.getPath();
+
+ readOnlySession = helper.getReadOnlySession();
+ testAcMgr = getAccessControlManager(readOnlySession);
+ }
+
+ protected void tearDown() throws Exception {
+ if (readOnlySession != null) {
+ readOnlySession.logout();
+ }
+ super.tearDown();
+ }
+
+ public void testGetAccessControlEntries() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.getAccessControlEntries(path);
+ fail("read only session may not read AC content.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+
+ public void testGetEffectiveAccessControlEntries() throws NotExecutableException, RepositoryException {
+ try {
+ testAcMgr.getEffectiveAccessControlEntries(path);
+ fail("read only session may not read AC content.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+
+ public void testAddAccessControlEntry() throws NotExecutableException, RepositoryException {
+ Privilege[] privs = testAcMgr.getSupportedPrivileges(path);
+ try {
+ testAcMgr.addAccessControlEntry(path, new TestPrincipal("principal"), privs);
+ fail("read only session may not add an AC entry.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlEntryTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java Tue May 20 00:37:15 2008
@@ -0,0 +1,129 @@
+/*
+ * 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.api.jsr283.security;
+
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+/**
+ * <code>AccessControlPolicyTest</code>...
+ */
+public class RSessionAccessControlPolicyTest extends AbstractAccessControlTest {
+
+ private static Logger log = LoggerFactory.getLogger(RSessionAccessControlPolicyTest.class);
+
+ private String path;
+ private Session readOnlySession;
+ private AccessControlManager testAcMgr;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // policy-option is cover the by the 'OPTION_SIMPLE_ACCESS_CONTROL_SUPPORTED' -> see super-class
+
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ superuser.save();
+ path = n.getPath();
+
+ readOnlySession = helper.getReadOnlySession();
+ testAcMgr = getAccessControlManager(readOnlySession);
+ }
+
+ protected void tearDown() throws Exception {
+ if (readOnlySession != null) {
+ readOnlySession.logout();
+ }
+ super.tearDown();
+ }
+
+ public void testGetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.getPolicy(path);
+ fail("read only session may not read AC content.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+
+ public void testGetEffectivePolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.getEffectivePolicy(path);
+ fail("read only session may not read AC content.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+
+ public void testGetApplicablePolicies() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.getApplicablePolicies(path);
+ fail("read only session may not read AC content.");
+ } catch (AccessDeniedException e) {
+ // success
+ }
+ }
+
+ public void testSetPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ // retrieve valid policy using superuser session:
+ AccessControlPolicyIterator it = acMgr.getApplicablePolicies(path);
+ if (!it.hasNext()) {
+ throw new NotExecutableException();
+ }
+
+ try {
+ testAcMgr.setPolicy(path, it.nextAccessControlPolicy());
+ fail("read only session may not modify AC content.");
+ } catch (AccessControlException e) {
+ // fine as well (policy validity was check first).
+ } catch (AccessDeniedException e) {
+ // success.
+ }
+ }
+
+ public void testSetInvalidPolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.setPolicy(path, new AccessControlPolicy() {
+ public String getName() throws RepositoryException {
+ return getClass().getName();
+ }
+ public String getDescription() throws RepositoryException {
+ return "";
+ }
+ });
+ fail("Invalid policy may not be set by a READ-only session.");
+ } catch (AccessControlException e) {
+ // success.
+ } catch (AccessDeniedException e) {
+ // fine as well (privileges were apparently checked first)
+ }
+ }
+
+ public void testRemovePolicy() throws RepositoryException, AccessDeniedException, NotExecutableException {
+ try {
+ testAcMgr.removePolicy(path);
+ fail("read only session may not remove a policy.");
+ } catch (AccessDeniedException e) {
+ // success.
+ }
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/RSessionAccessControlPolicyTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java?rev=658134&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java Tue May 20 00:37:15 2008
@@ -0,0 +1,53 @@
+/*
+ * 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.api.jsr283.security;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * <code>TestAll</code>...
+ */
+/**
+ * Test suite
+ */
+public class TestAll extends TestCase {
+
+ /**
+ * Returns a <code>Test</code> suite that executes all tests inside this
+ * package.
+ *
+ * @return a <code>Test</code> suite that executes all tests inside this
+ * package.
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite("jsr 283 security tests");
+
+ suite.addTestSuite(AccessControlDiscoveryTest.class);
+ suite.addTestSuite(AccessControlPolicyTest.class);
+ suite.addTestSuite(AccessControlPolicyIteratorTest.class);
+ suite.addTestSuite(AccessControlEntryTest.class);
+
+ // tests with read only session:
+ suite.addTestSuite(RSessionAccessControlDiscoveryTest.class);
+ suite.addTestSuite(RSessionAccessControlEntryTest.class);
+ suite.addTestSuite(RSessionAccessControlPolicyTest.class);
+
+ return suite;
+ }
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/jsr283/security/TestAll.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java Tue May 20 00:37:15 2008
@@ -18,27 +18,27 @@
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.security.TestPrincipal;
import org.apache.jackrabbit.core.security.SecurityConstants;
+import org.apache.jackrabbit.core.security.TestPrincipal;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
-import org.apache.jackrabbit.uuid.UUID;
import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.uuid.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.jcr.Credentials;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.Credentials;
import javax.jcr.SimpleCredentials;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.security.auth.Subject;
-import java.security.Principal;
+import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
+import java.security.Principal;
import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
-import java.io.UnsupportedEncodingException;
/**
* <code>AbstractUserTest</code>...
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java Tue May 20 00:37:15 2008
@@ -21,9 +21,9 @@
import org.slf4j.LoggerFactory;
import javax.jcr.RepositoryException;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.ArrayList;
/**
* <code>GroupTest</code>...
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/UserTest.java Tue May 20 00:37:15 2008
@@ -20,11 +20,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jcr.RepositoryException;
import javax.jcr.Credentials;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.Session;
import javax.jcr.LoginException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
/**
* <code>UserTest</code>...
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=658134&r1=658133&r2=658134&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 Tue May 20 00:37:15 2008
@@ -21,14 +21,12 @@
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;
@@ -37,12 +35,9 @@
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>...
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=658134&r1=658133&r2=658134&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 Tue May 20 00:37:15 2008
@@ -17,16 +17,16 @@
package org.apache.jackrabbit.core.security.authorization;
import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.jsr283.security.AbstractAccessControlTest;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlManager;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.security.TestPrincipal;
-import org.apache.jackrabbit.core.security.jsr283.security.AbstractAccessControlTest;
-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.NotExecutableException;
import org.apache.jackrabbit.test.api.observation.EventResult;
import org.apache.jackrabbit.util.Text;
@@ -39,9 +39,9 @@
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 javax.jcr.observation.Event;
+import javax.jcr.observation.ObservationManager;
import java.security.Principal;
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyEntryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyEntryTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyEntryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyEntryTest.java Tue May 20 00:37:15 2008
@@ -16,8 +16,8 @@
*/
package org.apache.jackrabbit.core.security.authorization;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlException;
-import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlException;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import org.apache.jackrabbit.test.JUnitTest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyTemplateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyTemplateTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyTemplateTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractPolicyTemplateTest.java Tue May 20 00:37:15 2008
@@ -16,9 +16,9 @@
*/
package org.apache.jackrabbit.core.security.authorization;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlException;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import org.apache.jackrabbit.test.JUnitTest;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlException;
-import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PolicyTemplateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PolicyTemplateTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PolicyTemplateTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PolicyTemplateTest.java Tue May 20 00:37:15 2008
@@ -17,13 +17,13 @@
package org.apache.jackrabbit.core.security.authorization;
import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.jsr283.security.AbstractAccessControlTest;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlException;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicy;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicyIterator;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.core.security.jsr283.security.AbstractAccessControlTest;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlException;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlPolicy;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlPolicyIterator;
-import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
import org.apache.jackrabbit.test.NotExecutableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistryTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistryTest.java Tue May 20 00:37:15 2008
@@ -17,8 +17,8 @@
package org.apache.jackrabbit.core.security.authorization;
import junit.framework.TestCase;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlException;
-import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlException;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import java.util.ArrayList;
import java.util.Arrays;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLImplTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLImplTest.java Tue May 20 00:37:15 2008
@@ -16,10 +16,10 @@
*/
package org.apache.jackrabbit.core.security.authorization.acl;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlException;
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlException;
import org.apache.jackrabbit.test.JUnitTest;
import org.apache.jackrabbit.uuid.UUID;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java Tue May 20 00:37:15 2008
@@ -17,9 +17,9 @@
package org.apache.jackrabbit.core.security.authorization.acl;
import org.apache.jackrabbit.core.security.authorization.AbstractPolicyTemplateTest;
+import org.apache.jackrabbit.core.security.authorization.PolicyEntry;
import org.apache.jackrabbit.core.security.authorization.PolicyTemplate;
import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
-import org.apache.jackrabbit.core.security.authorization.PolicyEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EvaluationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EvaluationTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EvaluationTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EvaluationTest.java Tue May 20 00:37:15 2008
@@ -16,15 +16,15 @@
*/
package org.apache.jackrabbit.core.security.authorization.acl;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlEntry;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlManager;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicy;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicyIterator;
+import org.apache.jackrabbit.api.jsr283.security.Privilege;
import org.apache.jackrabbit.core.security.authorization.AbstractEvaluationTest;
import org.apache.jackrabbit.core.security.authorization.PolicyEntry;
import org.apache.jackrabbit.core.security.authorization.PolicyTemplate;
import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlEntry;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlManager;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlPolicy;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlPolicyIterator;
-import org.apache.jackrabbit.core.security.jsr283.security.Privilege;
import org.apache.jackrabbit.test.NotExecutableException;
import javax.jcr.AccessDeniedException;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/EvaluationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/EvaluationTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/EvaluationTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/EvaluationTest.java Tue May 20 00:37:15 2008
@@ -16,12 +16,12 @@
*/
package org.apache.jackrabbit.core.security.authorization.combined;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlManager;
+import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicy;
import org.apache.jackrabbit.core.security.JackrabbitAccessControlManager;
import org.apache.jackrabbit.core.security.authorization.AbstractEvaluationTest;
import org.apache.jackrabbit.core.security.authorization.PolicyEntry;
import org.apache.jackrabbit.core.security.authorization.PolicyTemplate;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlManager;
-import org.apache.jackrabbit.core.security.jsr283.security.AccessControlPolicy;
import org.apache.jackrabbit.test.NotExecutableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/PolicyEntryImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/PolicyEntryImplTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/PolicyEntryImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/PolicyEntryImplTest.java Tue May 20 00:37:15 2008
@@ -23,10 +23,10 @@
import org.slf4j.LoggerFactory;
import javax.jcr.RepositoryException;
+import java.security.Principal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.security.Principal;
/**
* <code>PolicyEntryImplTest</code>...
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java Tue May 20 00:37:15 2008
@@ -17,9 +17,9 @@
package org.apache.jackrabbit.core.security.principal;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
+import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.core.security.user.UserManagerImpl;
import org.apache.jackrabbit.test.NotExecutableException;
import org.slf4j.Logger;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java Tue May 20 00:37:15 2008
@@ -17,14 +17,14 @@
package org.apache.jackrabbit.core.security.user;
import org.apache.jackrabbit.api.security.user.AbstractUserTest;
+import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.core.NodeImpl;
import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.value.StringValue;
-import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,8 +33,8 @@
import javax.jcr.Value;
import javax.jcr.nodetype.ConstraintViolationException;
import java.util.ArrayList;
-import java.util.List;
import java.util.Iterator;
+import java.util.List;
/**
* <code>AuthorizableImplTest</code>...
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java Tue May 20 00:37:15 2008
@@ -16,10 +16,10 @@
*/
package org.apache.jackrabbit.core.security.user;
+import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.test.NotExecutableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java Tue May 20 00:37:15 2008
@@ -16,10 +16,10 @@
*/
package org.apache.jackrabbit.core.security.user;
+import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.test.NotExecutableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.jackrabbit.test.NotExecutableException;
-import org.apache.jackrabbit.core.SessionImpl;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java Tue May 20 00:37:15 2008
@@ -16,20 +16,20 @@
*/
package org.apache.jackrabbit.core.security.user;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
-import org.apache.jackrabbit.spi.commons.name.NameConstants;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.api.JackrabbitSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import javax.jcr.RepositoryException;
-import javax.jcr.NodeIterator;
import javax.jcr.Node;
-import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import java.util.Iterator;
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java?rev=658134&r1=658133&r2=658134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImplTest.java Tue May 20 00:37:15 2008
@@ -16,10 +16,10 @@
*/
package org.apache.jackrabbit.core.security.user;
+import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.core.security.authentication.CryptedSimpleCredentials;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.value.StringValue;
@@ -30,9 +30,9 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
-import java.security.Principal;
-import java.security.NoSuchAlgorithmException;
import java.io.UnsupportedEncodingException;
+import java.security.NoSuchAlgorithmException;
+import java.security.Principal;
/**
* <code>UserImplTest</code>...