This is an automated email from the ASF dual-hosted git repository. joerghoh pushed a commit to branch feature/SLING-10303-improve-testcoverage in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-get.git
commit 1e75243962756d5c4c02b7d0cadd04ab10f31468 Author: Joerg Hoh <[email protected]> AuthorDate: Tue Apr 13 15:25:54 2021 +0200 SLING-10303 update to parent pom 41, add testcases --- pom.xml | 42 ++++++++++++-- .../get/impl/helpers/StreamRendererTest.java | 65 +++++++++++++++++++++- src/test/resources/samplefile.txt | 1 + 3 files changed, 101 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 6fc05e9..ccdb2db 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.apache.sling</groupId> <artifactId>sling-bundle-parent</artifactId> - <version>39</version> + <version>41</version> <relativePath /> </parent> @@ -158,15 +158,45 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.testing.sling-mock</artifactId> - <version>2.2.10</version> - <scope>test</scope> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId> + <version>3.0.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-api</artifactId> + <version>2.18.6</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-jcr-commons</artifactId> + <version>2.21.5</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.jcr.api</artifactId> + <version>2.4.0</version> + <scope>test</scope> </dependency> <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.8.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId> + <scope>test</scope> + <version>2.1.10-1.16.0</version> + </dependency> + <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.servlet-helpers</artifactId> - <version>1.1.6</version> + <version>1.4.2</version> <scope>test</scope> </dependency> </dependencies> diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java index 5a98d63..7ed2b5d 100644 --- a/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java +++ b/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java @@ -19,6 +19,7 @@ package org.apache.sling.servlets.get.impl.helpers; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; @@ -26,16 +27,52 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Random; + +import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; -import junitx.util.PrivateAccessor; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; + import org.apache.sling.api.SlingHttpServletResponse; +import org.apache.sling.api.request.RequestDispatcherOptions; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceMetadata; +import org.apache.sling.servlethelpers.MockRequestDispatcherFactory; +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.junit.SlingContext; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.mockito.Mockito; +import junitx.util.PrivateAccessor; + public class StreamRendererTest { + @Rule + public SlingContext context = new SlingContext(ResourceResolverType.JCR_OAK); + + RequestDispatcher requestDispatcher; + + + @Before + public void setup() { + Resource r = context.create().resource("/abc.txt","prop","value"); + context.build().file("file.txt", this.getClass().getResourceAsStream("/samplefile.txt")); + requestDispatcher = Mockito.mock(RequestDispatcher.class); + context.request().setRequestDispatcherFactory(new MockRequestDispatcherFactory() { + @Override + public RequestDispatcher getRequestDispatcher(String path, RequestDispatcherOptions options) { + return requestDispatcher; + } + + @Override + public RequestDispatcher getRequestDispatcher(Resource resource, RequestDispatcherOptions options) { + return requestDispatcher; + } + }); + } + @Test public void testCopyRange() throws IOException { runTests(1234); @@ -141,4 +178,30 @@ public class StreamRendererTest { new Class[] { Resource.class, SlingHttpServletResponse.class }, new Object[] { resource, response }); Mockito.verify(response, Mockito.times(1)).setContentType("application/octet-stream"); } + + + @Test + public void test_render_file() throws IOException { + + StreamRenderer renderer = new StreamRenderer(true,null,null); + context.request().setResource(context.resourceResolver().getResource("/file.txt")); + renderer.render(context.request(), context.response()); + assertTrue(context.response().getOutputAsString().equals("random content")); + assertEquals(HttpServletResponse.SC_OK, context.response().getStatus()); + + } + + @Test + public void test_render_file_directoryListing() throws IOException, ServletException { + ServletContext sc = Mockito.mock(ServletContext.class); + StreamRenderer renderer = new StreamRenderer(true,new String[] {"/"},sc); + Resource root = context.resourceResolver().getResource("/"); + context.request().setResource(root); + renderer.render(context.request(), context.response()); + assertEquals(HttpServletResponse.SC_OK, context.response().getStatus()); + Mockito.verify(requestDispatcher).include(Mockito.any(), Mockito.any()); + + } + + } diff --git a/src/test/resources/samplefile.txt b/src/test/resources/samplefile.txt new file mode 100644 index 0000000..aae1031 --- /dev/null +++ b/src/test/resources/samplefile.txt @@ -0,0 +1 @@ +random content \ No newline at end of file
