This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.jcr-mock-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-jcr-mock.git
commit 43a8db7a4697ca75f80a7efa0bf2fa28b5bdd22b Author: Stefan Seifert <[email protected]> AuthorDate: Tue Oct 28 10:17:59 2014 +0000 SLING-4108 JCR/Sling/ResourceResolver Mock: Support providing authentication info git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/jcr-mock@1634835 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/sling/testing/mock/jcr/MockJcr.java | 25 +++++++++++++++++++++- .../sling/testing/mock/jcr/MockRepository.java | 16 ++++++++++---- .../apache/sling/testing/mock/jcr/MockSession.java | 9 +++++--- .../sling/testing/mock/jcr/MockWorkspace.java | 6 ++++-- .../sling/testing/mock/jcr/package-info.java | 1 - .../sling/testing/mock/jcr/MockSessionTest.java | 9 +++++++- 6 files changed, 54 insertions(+), 12 deletions(-) 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 11c3c1d..530a51f 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 @@ -21,6 +21,9 @@ package org.apache.sling.testing.mock.jcr; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.SimpleCredentials; + +import org.apache.commons.lang3.StringUtils; /** * Factory for mock JCR objects. @@ -32,6 +35,11 @@ public final class MockJcr { */ public static final String DEFAULT_WORKSPACE = "mockedWorkspace"; + /** + * Default user id + */ + public static final String DEFAULT_USER_ID = "admin"; + private MockJcr() { // static methods only } @@ -52,8 +60,23 @@ public final class MockJcr { * @return JCR session */ public static Session newSession() { + return newSession(null, null); + } + + /** + * Create a new mocked in-memory JCR session. It contains only the root + * node. All data of the session is thrown away if it gets garbage + * collected. + * @param userId User id for the mock environment. + * @param workspaceName Workspace name for the mock environment. + * @return JCR session + */ + public static Session newSession(String userId, String workspaceName) { try { - return newRepository().login(); + return newRepository().login( + new SimpleCredentials(StringUtils.defaultString(userId, DEFAULT_USER_ID), new char[0]), + StringUtils.defaultString(workspaceName, DEFAULT_WORKSPACE) + ); } catch (RepositoryException ex) { throw new RuntimeException("Creating mocked JCR session failed.", ex); } diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java index 84e342b..4fb21ae 100644 --- a/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java +++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java @@ -24,9 +24,11 @@ import java.util.Map; import javax.jcr.Credentials; import javax.jcr.Repository; import javax.jcr.Session; +import javax.jcr.SimpleCredentials; import javax.jcr.Value; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; /** * Mock {@link Repository} implementation. The data is stored inside the mocked @@ -44,22 +46,28 @@ class MockRepository implements Repository { @Override public Session login() { - return new MockSession(this, items); + return login(null, null); } @Override public Session login(final String workspaceName) { - return login(); + return login(null, workspaceName); } @Override public Session login(final Credentials credentials) { - return login(); + return login(credentials, null); } @Override public Session login(final Credentials credentials, final String workspaceName) { - return login(); + String userId = null; + if (credentials instanceof SimpleCredentials) { + userId = ((SimpleCredentials)credentials).getUserID(); + } + return new MockSession(this, items, + StringUtils.defaultString(userId, MockJcr.DEFAULT_USER_ID), + StringUtils.defaultString(workspaceName, MockJcr.DEFAULT_WORKSPACE)); } @Override 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 37f5876..8ec7408 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 @@ -54,11 +54,14 @@ class MockSession implements Session { private final Repository repository; private final Workspace workspace; private final Map<String, ItemData> items; + private final String userId; - public MockSession(Repository repository, Map<String,ItemData> items) { + public MockSession(Repository repository, Map<String,ItemData> items, + String userId, String workspaceName) { this.repository = repository; - this.workspace = new MockWorkspace(this); + this.workspace = new MockWorkspace(this, workspaceName); this.items = items; + this.userId = userId; } @Override @@ -208,7 +211,7 @@ class MockSession implements Session { @Override public String getUserID() { - return "mockedUserId"; + return this.userId; } @Override diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockWorkspace.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockWorkspace.java index 6996103..329a760 100644 --- a/src/main/java/org/apache/sling/testing/mock/jcr/MockWorkspace.java +++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockWorkspace.java @@ -38,6 +38,7 @@ import org.xml.sax.ContentHandler; class MockWorkspace implements Workspace { private final Session session; + private final String workspaceName; private final NamespaceRegistry namespaceRegistry = new MockNamespaceRegistry(); private final ObservationManager observationManager = new MockObservationManager(); private final NodeTypeManager nodeTypeManager = new MockNodeTypeManager(); @@ -45,8 +46,9 @@ class MockWorkspace implements Workspace { /** * @param session JCR session */ - public MockWorkspace(final Session session) { + public MockWorkspace(Session session, String workspaceName) { this.session = session; + this.workspaceName = workspaceName; } @Override @@ -56,7 +58,7 @@ class MockWorkspace implements Workspace { @Override public String getName() { - return MockJcr.DEFAULT_WORKSPACE; + return this.workspaceName; } @Override diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/package-info.java b/src/main/java/org/apache/sling/testing/mock/jcr/package-info.java index 8477a03..ef61470 100644 --- a/src/main/java/org/apache/sling/testing/mock/jcr/package-info.java +++ b/src/main/java/org/apache/sling/testing/mock/jcr/package-info.java @@ -21,4 +21,3 @@ */ @aQute.bnd.annotation.Version("1.0") package org.apache.sling.testing.mock.jcr; - 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 5f9d895..c137894 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 @@ -202,7 +202,14 @@ public class MockSessionTest { @Test public void testUserId() { - assertEquals("mockedUserId", this.session.getUserID()); + assertEquals(MockJcr.DEFAULT_USER_ID, this.session.getUserID()); + } + + @Test + public void testWithCustomUserWorkspace() { + Session mySession = MockJcr.newSession("myUser", "myWorkspace"); + assertEquals("myUser", mySession.getUserID()); + assertEquals("myWorkspace", mySession.getWorkspace().getName()); } @Test -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
