This is an automated email from the ASF dual-hosted git repository.
enorman pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-jcr-mock.git
The following commit(s) were added to refs/heads/master by this push:
new 47ecbd9 SLING-11828 Allow setting an AccessControlManager on the
MockSession (#17)
47ecbd9 is described below
commit 47ecbd9ba0b6b7bc9c034afe4bf4fa4ce6dfa07f
Author: Eric Norman <[email protected]>
AuthorDate: Fri Apr 14 09:47:31 2023 -0700
SLING-11828 Allow setting an AccessControlManager on the MockSession (#17)
---
.../java/org/apache/sling/testing/mock/jcr/MockJcr.java | 10 ++++++++++
.../org/apache/sling/testing/mock/jcr/MockSession.java | 14 +++++++++++++-
.../org/apache/sling/testing/mock/jcr/MockSessionTest.java | 13 +++++++++++++
3 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
b/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
index c16bb28..1fc5f28 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
@@ -30,6 +30,7 @@ import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.query.QueryManager;
+import javax.jcr.security.AccessControlManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
@@ -253,4 +254,13 @@ public final class MockJcr {
}
}
+ /**
+ * Use the supplied AccessControlManager for the session
+ *
+ * @param session the session to modify
+ * @param acm the access control manager to use for the session
+ */
+ public static void setAccessControlManager(@NotNull Session session,
@Nullable AccessControlManager acm) {
+ ((MockSession)session).setAccessControlManager(acm);
+ }
}
diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
index e06345c..d944a3e 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
@@ -63,6 +63,7 @@ class MockSession implements Session {
private final String userId;
private boolean isLive;
private boolean hasKnownChanges;
+ private AccessControlManager accessControlManager = null;
public MockSession(MockRepository repository, Map<String, ItemData> items,
String userId, String workspaceName) throws RepositoryException {
@@ -479,7 +480,11 @@ class MockSession implements Session {
@Override
public AccessControlManager getAccessControlManager() throws
RepositoryException {
- throw new UnsupportedOperationException();
+ if (accessControlManager == null) {
+ // not set, so fallback to thrown exception
+ throw new UnsupportedOperationException();
+ }
+ return accessControlManager;
}
@Override
@@ -497,4 +502,11 @@ class MockSession implements Session {
throw new UnsupportedOperationException();
}
+ /**
+ * To allow a test to provide mock implementation of the
AccessControlManager
+ * @param acm the access control manager to use for the session
+ */
+ public void setAccessControlManager(AccessControlManager acm) {
+ this.accessControlManager = acm;
+ }
}
diff --git
a/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
b/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
index 13a76f9..0cea4a1 100644
--- a/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
@@ -34,9 +34,11 @@ import javax.jcr.PathNotFoundException;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.security.AccessControlManager;
import org.apache.jackrabbit.JcrConstants;
import org.junit.Test;
+import org.mockito.Mockito;
import com.google.common.collect.ImmutableSet;
@@ -409,4 +411,15 @@ public class MockSessionTest {
assertTrue(session.propertyExists("/node1/child2/grandchild1/prop1"));
}
+ @Test
+ public void testSetAccessControlManager() throws RepositoryException {
+ Session s = MockJcr.newSession();
+ assertThrows(UnsupportedOperationException.class, () ->
s.getAccessControlManager());
+
+ AccessControlManager mockAccessControlManager =
Mockito.mock(AccessControlManager.class);
+ MockJcr.setAccessControlManager(s, mockAccessControlManager);
+
+ assertEquals(mockAccessControlManager, s.getAccessControlManager());
+ }
+
}