You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2019/12/20 16:26:12 UTC
[sling-org-apache-sling-servlets-resolver] 02/02: SLING-8936 -
setup for executing requests
This is an automated email from the ASF dual-hosted git repository.
bdelacretaz pushed a commit to branch issue/SLING-8936
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
commit 7b54e566353bae9032f971aadc5fbe4a34edcd71
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Dec 20 17:25:51 2019 +0100
SLING-8936 - setup for executing requests
---
pom.xml | 12 +++++
.../servlets/resolver/it/DefaultServletIT.java | 55 ++++++++++++++++++----
.../resolver/it/ServletResolverTestSupport.java | 3 ++
3 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index 81c06ac..a15c604 100644
--- a/pom.xml
+++ b/pom.xml
@@ -287,6 +287,12 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.ops4j.pax.url</groupId>
+ <artifactId>pax-url-wrap</artifactId>
+ <version>2.6.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.paxexam</artifactId>
<version>3.0.0</version>
@@ -298,5 +304,11 @@
<version>6.0.3</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.servlet-helpers</artifactId>
+ <version>1.3.0</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java b/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
index accf90e..b289dbd 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
@@ -18,32 +18,71 @@
*/
package org.apache.sling.servlets.resolver.it;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.lang.reflect.Method;
import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.servlethelpers.MockSlingHttpServletRequest;
+import org.apache.sling.servlethelpers.MockSlingHttpServletResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
-/** Using the SlingRequestProcessor for testing requests would be
- * better, but this module has a number of specific settings
- * in its pom for the sling.engine module that I prefer not touching
- * now as I'm just adding these tests.
+/**
+ * Using the SlingRequestProcessor for testing requests would be better, but
+ * this module is using an older version of the sling.engine module that does not
+ * have that, along with a number of specific settings for that module, so I prefer
+ * not touching those now as I'm just adding these tests.
*/
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class DefaultServletIT extends ServletResolverTestSupport {
+
@Inject
private BundleContext bundleContext;
+ private String getContent(String path) throws Exception {
+ final ResourceResolver TODO_NEED_ONE = null;
+ final MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(TODO_NEED_ONE);
+ final MockSlingHttpServletResponse response = new MockSlingHttpServletResponse();
+
+ // Get SlingRequestProcessor.processRequest method and execute request
+ // This module depends on an older version of the sling.engine module and I don't want
+ // to change it just for these tests, so using reflection to get the processor, as we're
+ // running with a more recent version of sling.engine in the pax exam environment
+ final String slingRequestProcessorClassName = "org.apache.sling.engine.SlingRequestProcessor";
+ final ServiceReference<?> ref = bundleContext.getServiceReference(slingRequestProcessorClassName);
+ assertNotNull("Expecting service:" + slingRequestProcessorClassName, ref);
+
+ final Object processor = bundleContext.getService(ref);
+ try {
+ // void processRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse resource, ResourceResolver resourceResolver)
+ final Method processMethod = processor.getClass().getMethod(
+ "processRequest",
+ HttpServletRequest.class, HttpServletResponse.class, ResourceResolver.class);
+ assertNotNull("Expecting processRequest method", processMethod);
+ processMethod.invoke(processor, request, response, null);
+ } finally {
+ bundleContext.ungetService(ref);
+ }
+
+ return response.getOutputAsString();
+ }
+
@Test
- public void testDefaultServlet() {
- // TODO for now this just tests the pax exam setup
- assertTrue(bundleContext.getBundles().length > 0);
+ public void testDefaultServlet() throws Exception {
+ final String TODO_SHOULD_NOT_BE_EMPTY = "";
+ assertEquals(TODO_SHOULD_NOT_BE_EMPTY, getContent("/.json"));
}
}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
index 9cd7084..bc4e480 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
@@ -23,6 +23,8 @@ import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
import static org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
public class ServletResolverTestSupport extends TestSupport {
@@ -34,6 +36,7 @@ public class ServletResolverTestSupport extends TestSupport {
baseConfiguration(),
slingQuickstartOakTar(workingDirectory(), httpPort),
testBundle("bundle.filename"),
+ wrappedBundle(mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlet-helpers").versionAsInProject()),
junitBundles()
};
}