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]>.

Reply via email to