You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/09/28 22:37:21 UTC

svn commit: r1705765 - in /sling/trunk/testing/mocks/sling-mock/src: main/java/org/apache/sling/testing/mock/sling/context/ test/java/org/apache/sling/testing/mock/sling/resource/

Author: sseifert
Date: Mon Sep 28 20:37:21 2015
New Revision: 1705765

URL: http://svn.apache.org/viewvc?rev=1705765&view=rev
Log:
SLING-5067 rewrite unit tests to use new "uniqueRoot" feature

Modified:
    sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
    sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
    sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java

Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java?rev=1705765&r1=1705764&r2=1705765&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java Mon Sep 28 20:37:21 2015
@@ -33,8 +33,8 @@ import com.google.common.collect.Immutab
 
 /**
  * Manages unique root paths in JCR repository.
- * This is important for resource resolver types like JCR_JACKRABBIT and JCR_OAK 
- * where the repository is not cleand for each test run. This class provides
+ * This is important for resource resolver types like JCR_JACKRABBIT  
+ * where the repository is not cleaned for each test run. This class provides
  * unique root paths for each run, and cleans them up when done.
  */
 public class UniqueRoot {

Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java?rev=1705765&r1=1705764&r2=1705765&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java Mon Sep 28 20:37:21 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.testing.mock.sling.resource;
 
+import static org.apache.sling.jcr.resource.JcrResourceConstants.NT_SLING_ORDERED_FOLDER;
 import static org.apache.sling.jcr.resource.JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -41,13 +42,13 @@ import org.apache.commons.lang3.time.Dat
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.testing.mock.sling.MockSling;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -59,6 +60,9 @@ import com.google.common.collect.Immutab
  */
 public abstract class AbstractJcrResourceResolverTest {
 
+    @Rule
+    public SlingContext context = new SlingContext(getResourceResolverType());
+    
     private static final String STRING_VALUE = "value1";
     private static final String[] STRING_ARRAY_VALUE = new String[] { "value1", "value2" };
     private static final int INTEGER_VALUE = 25;
@@ -68,21 +72,14 @@ public abstract class AbstractJcrResourc
     private static final Calendar CALENDAR_VALUE = Calendar.getInstance();
     private static final byte[] BINARY_VALUE = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
 
-    private ResourceResolver resourceResolver;
     private Session session;
     protected Node testRoot;
-    private static volatile long rootNodeCounter;
 
     protected abstract ResourceResolverType getResourceResolverType();
 
-    protected ResourceResolver newResourceResolver() {
-        return MockSling.newResourceResolver(getResourceResolverType());
-    }
-
     @Before
     public final void setUp() throws RepositoryException {
-        resourceResolver = newResourceResolver();
-        session = resourceResolver.adaptTo(Session.class);
+        session = context.resourceResolver().adaptTo(Session.class);
 
         // prepare some test data using JCR API
         Node rootNode = getTestRootNode();
@@ -106,28 +103,21 @@ public abstract class AbstractJcrResourc
     @After
     public final void tearDown() {
         testRoot = null;
-        resourceResolver.close();
     }
 
     /**
      * Return a test root node, created on demand, with a unique path
      */
     private Node getTestRootNode() throws RepositoryException {
-        if (testRoot == null) {
-            final Node root = session.getRootNode();
-            if (getResourceResolverType() == ResourceResolverType.JCR_JACKRABBIT) {
-                final Node classRoot = root.addNode(getClass().getSimpleName());
-                testRoot = classRoot.addNode(System.currentTimeMillis() + "_" + (rootNodeCounter++));
-            } else {
-                testRoot = root.addNode("test", JcrConstants.NT_UNSTRUCTURED);
-            }
+        if (this.testRoot == null) {
+            this.testRoot = context.resourceResolver().getResource(context.uniqueRoot().content()).adaptTo(Node.class);
         }
         return testRoot;
     }
 
     @Test
     public void testGetResourcesAndValues() throws IOException, RepositoryException {
-        Resource resource1 = resourceResolver.getResource(getTestRootNode().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootNode().getPath() + "/node1");
         assertNotNull(resource1);
         assertEquals("node1", resource1.getName());
 
@@ -160,9 +150,9 @@ public abstract class AbstractJcrResourc
 
     @Test
     public void testCreateNodeWithPrimaryType() throws RepositoryException, PersistenceException {
-        Resource parent = resourceResolver.getResource(getTestRootNode().getPath());
+        Resource parent = context.resourceResolver().getResource(getTestRootNode().getPath());
 
-        Resource child = resourceResolver.create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder()
+        Resource child = context.resourceResolver().create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder()
                 .put(SLING_RESOURCE_TYPE_PROPERTY, JcrConstants.NT_UNSTRUCTURED).build());
         assertNotNull(child);
         assertEquals(JcrConstants.NT_UNSTRUCTURED, child.getResourceType());
@@ -171,12 +161,12 @@ public abstract class AbstractJcrResourc
     
     @Test
     public void testCreateNodeWithResourceType() throws RepositoryException, PersistenceException {
-        Resource parent = resourceResolver.getResource(getTestRootNode().getPath());
+        Resource parent = context.resourceResolver().getResource(getTestRootNode().getPath());
 
-        Resource child = ResourceUtil.getOrCreateResource(resourceResolver, parent.getPath() + "/intermediate/child",
+        Resource child = ResourceUtil.getOrCreateResource(context.resourceResolver(), parent.getPath() + "/intermediate/child",
                 "sling/resource/type", JcrConstants.NT_UNSTRUCTURED, true);
         assertNotNull(child);
-        assertEquals(JcrConstants.NT_UNSTRUCTURED, parent.getResourceType());
+        assertEquals(NT_SLING_ORDERED_FOLDER, parent.getResourceType());
         assertEquals("sling/resource/type", child.getResourceType());
     }
 
@@ -188,11 +178,11 @@ public abstract class AbstractJcrResourc
             return;
         }
         
-        Resource testRootResource = resourceResolver.getResource(getTestRootNode().getPath());
-        resourceResolver.delete(testRootResource);
+        Resource testRootResource = context.resourceResolver().getResource(getTestRootNode().getPath());
+        context.resourceResolver().delete(testRootResource);
         assertTrue(session.hasPendingChanges());
         
-        resourceResolver.commit();
+        context.resourceResolver().commit();
         assertFalse(session.hasPendingChanges());
     }
 

Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java?rev=1705765&r1=1705764&r2=1705765&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java Mon Sep 28 20:37:21 2015
@@ -38,14 +38,13 @@ import org.apache.commons.lang3.StringUt
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.testing.mock.sling.MockSling;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.builder.ContentBuilder;
-import org.junit.After;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -57,6 +56,9 @@ import com.google.common.collect.Lists;
  * used to create the test data.
  */
 public abstract class AbstractSlingCrudResourceResolverTest {
+    
+    @Rule
+    public SlingContext context = new SlingContext(getResourceResolverType());
 
     private static final String STRING_VALUE = "value1";
     private static final String[] STRING_ARRAY_VALUE = new String[] { "value1", "value2" };
@@ -67,19 +69,11 @@ public abstract class AbstractSlingCrudR
     private static final Calendar CALENDAR_VALUE = Calendar.getInstance();
     private static final byte[] BINARY_VALUE = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
 
-    protected ResourceResolver resourceResolver;
     protected Resource testRoot;
-    private static volatile long rootNodeCounter;
-
     protected abstract ResourceResolverType getResourceResolverType();
 
-    protected ResourceResolver newResourceResolver() {
-        return MockSling.newResourceResolver(getResourceResolverType());
-    }
-
     @Before
     public final void setUp() throws IOException {
-        this.resourceResolver = newResourceResolver();
 
         // prepare some test data using Sling CRUD API
         Resource rootNode = getTestRootResource();
@@ -94,20 +88,14 @@ public abstract class AbstractSlingCrudR
         props.put("dateProp", DATE_VALUE);
         props.put("calendarProp", CALENDAR_VALUE);
         props.put("binaryProp", new ByteArrayInputStream(BINARY_VALUE));
-        Resource node1 = this.resourceResolver.create(rootNode, "node1", props);
+        Resource node1 = context.resourceResolver().create(rootNode, "node1", props);
 
-        resourceResolver.create(node1, "node11", ImmutableMap.<String, Object>builder()
+        context.resourceResolver().create(node1, "node11", ImmutableMap.<String, Object>builder()
                 .put("stringProp11", STRING_VALUE)
                 .build());
-        this.resourceResolver.create(node1, "node12", ValueMap.EMPTY);
+        context.resourceResolver().create(node1, "node12", ValueMap.EMPTY);
 
-        this.resourceResolver.commit();
-    }
-
-    @After
-    public final void tearDown() {
-        this.testRoot = null;
-        this.resourceResolver.close();
+        context.resourceResolver().commit();
     }
 
     /**
@@ -116,23 +104,14 @@ public abstract class AbstractSlingCrudR
      */
     protected Resource getTestRootResource() throws PersistenceException {
         if (this.testRoot == null) {
-            Map<String, Object> props = new HashMap<String, Object>();
-            props.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED);
-            final Resource root = this.resourceResolver.getResource("/");
-            if (getResourceResolverType() == ResourceResolverType.JCR_MOCK
-                    || getResourceResolverType() == ResourceResolverType.RESOURCERESOLVER_MOCK) {
-                this.testRoot = this.resourceResolver.create(root, "test", props);
-            } else {
-                this.testRoot = this.resourceResolver.create(root, getClass().getSimpleName() + "_"
-                        + System.currentTimeMillis() + "_" + (rootNodeCounter++), props);
-            }
+            this.testRoot = context.resourceResolver().getResource(context.uniqueRoot().content());
         }
         return this.testRoot;
     }
 
     @Test
     public void testSimpleProperties() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         assertNotNull(resource1);
         assertEquals("node1", resource1.getName());
 
@@ -146,7 +125,7 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testSimpleProperties_DeepPathAccess() throws IOException {
-        Resource resource1 = resourceResolver.getResource(testRoot.getPath());
+        Resource resource1 = context.resourceResolver().getResource(testRoot.getPath());
         assertNotNull(resource1);
         assertEquals(testRoot.getName(), resource1.getName());
 
@@ -161,7 +140,7 @@ public abstract class AbstractSlingCrudR
     
     @Test
     public void testDateProperty() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         // TODO: enable this test when JCR resource implementation supports
         // writing Date objects (SLING-3846)
@@ -174,7 +153,7 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testDatePropertyToCalendar() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         // TODO: enable this test when JCR resource implementation supports
         // writing Date objects (SLING-3846)
@@ -189,14 +168,14 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testCalendarProperty() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         assertEquals(CALENDAR_VALUE.getTime(), props.get("calendarProp", Calendar.class).getTime());
     }
 
     @Test
     public void testCalendarPropertyToDate() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         Date dateValue = props.get("calendarProp", Date.class);
         assertNotNull(dateValue);
@@ -205,7 +184,7 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testListChildren() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
 
         List<Resource> children = ImmutableList.copyOf(resource1.listChildren());
         assertEquals(2, children.size());
@@ -215,15 +194,15 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testListChildren_RootNode() throws IOException {
-        Resource resource1 = resourceResolver.getResource("/");
+        Resource resource1 = context.resourceResolver().getResource("/");
 
         List<Resource> children = Lists.newArrayList(resource1.listChildren());
         assertFalse(children.isEmpty());
-        assertTrue(containsResource(children, getTestRootResource()));
+        assertTrue(containsResource(children, getTestRootResource().getParent()));
 
         children = Lists.newArrayList(resource1.getChildren());
         assertFalse(children.isEmpty());
-        assertTrue(containsResource(children, getTestRootResource()));
+        assertTrue(containsResource(children, getTestRootResource().getParent()));
     }
     
     private boolean containsResource(List<Resource> children, Resource resource) {
@@ -237,7 +216,7 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testBinaryData() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
 
         Resource binaryPropResource = resource1.getChild("binaryProp");
         InputStream is = binaryPropResource.adaptTo(InputStream.class);
@@ -255,29 +234,29 @@ public abstract class AbstractSlingCrudR
 
     @Test
     public void testPrimaryTypeResourceType() throws PersistenceException {
-        Resource resource = this.resourceResolver.getResource(getTestRootResource().getPath());
+        Resource resource = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         assertEquals(JcrConstants.NT_UNSTRUCTURED, resource.getResourceType());
     }
 
     @Test
     public void testGetRootResourceByNullPath() {
-        Resource rootResource = this.resourceResolver.resolve((String)null);
+        Resource rootResource = context.resourceResolver().resolve((String)null);
         assertNotNull(rootResource);
         assertEquals("/", rootResource.getPath());
     }
 
     @Test
     public void testSearchPath() {
-        ContentBuilder builder = new ContentBuilder(this.resourceResolver);
+        ContentBuilder builder = new ContentBuilder(context.resourceResolver());
         builder.resource("/libs/any/path");
 
-        Resource resource = this.resourceResolver.getResource("any/path");
+        Resource resource = context.resourceResolver().getResource("any/path");
         assertNotNull(resource);
         assertEquals("/libs/any/path", resource.getPath());
 
         builder.resource("/apps/any/path");
 
-        resource = this.resourceResolver.getResource("any/path");
+        resource = context.resourceResolver().getResource("any/path");
         assertNotNull(resource);
         assertEquals("/apps/any/path", resource.getPath());
     }
@@ -290,11 +269,11 @@ public abstract class AbstractSlingCrudR
             return;
         }
         
-        resourceResolver.delete(getTestRootResource());
-        assertTrue(resourceResolver.hasChanges());
+        context.resourceResolver().delete(getTestRootResource());
+        assertTrue(context.resourceResolver().hasChanges());
         
-        resourceResolver.commit();
-        assertFalse(resourceResolver.hasChanges());
+        context.resourceResolver().commit();
+        assertFalse(context.resourceResolver().hasChanges());
     }
 
 }