Skip to content

Commit

Permalink
SLING-7508: implemented integration test for endless loop
Browse files Browse the repository at this point in the history
  • Loading branch information
Dirk Rudolph committed Feb 21, 2018
1 parent 24d1588 commit db174f7
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 2 deletions.
13 changes: 11 additions & 2 deletions pom.xml
Expand Up @@ -117,6 +117,7 @@
org.apache.sling.models.it.models,
org.apache.sling.models.it.rtbound,
org.apache.sling.models.it.rtboundpicker,
org.apache.sling.models.it.rtpickerrequest,
org.apache.sling.models.it.delegate.request,
org.apache.sling.models.it.delegate.resource
</Sling-Model-Packages>
Expand Down Expand Up @@ -275,7 +276,8 @@
<sling.additional.bundle.14>jackson-core</sling.additional.bundle.14>
<sling.additional.bundle.15>jackson-databind</sling.additional.bundle.15>
<sling.additional.bundle.16>commons-lang3</sling.additional.bundle.16>
<sling.additional.bundle.17>${project.build.finalName}.jar</sling.additional.bundle.17>
<sling.additional.bundle.17>httpclient-osgi</sling.additional.bundle.17>
<sling.additional.bundle.18>${project.build.finalName}.jar</sling.additional.bundle.18>
</systemPropertyVariables>
</configuration>
</plugin>
Expand Down Expand Up @@ -366,6 +368,13 @@
<version>3.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-osgi</artifactId>
<version>4.5.5</version>
<scope>provided</scope>
</dependency>


<!-- not part of launchpad 7 (see SLING-4710) -->
<dependency>
Expand Down Expand Up @@ -436,7 +445,7 @@
<profile>
<id>debug-remote-process-suspend</id>
<properties>
<jar.executor.vm.options>-Xmx512m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=38080,suspend=n</jar.executor.vm.options>
<jar.executor.vm.options>-Xmx512m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=38080,suspend=y</jar.executor.vm.options>
</properties>
</profile>
</profiles>
Expand Down
@@ -0,0 +1,7 @@
package org.apache.sling.models.it.rtpickerrequest;

public interface Query {

String getParameterFoo();

}
@@ -0,0 +1,23 @@
package org.apache.sling.models.it.rtpickerrequest;

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.Self;

@Model(adaptables = SlingHttpServletRequest.class, adapters = { QueryImpl.class, Query.class })
public class QueryImpl implements Query {

@Self
private SlingHttpServletRequest req;

@Override
public String getParameterFoo() {
RequestParameter param = req.getRequestParameterMap().getValue("foo");
if (param != null) {
return param.getString();
} else {
return null;
}
}
}
@@ -0,0 +1,27 @@
package org.apache.sling.models.it.rtpickerrequest;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;

import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;

@SlingServlet(paths = "/apps/rtpickerrequest")
public class TestServlet extends SlingSafeMethodsServlet {

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response)
throws ServletException, IOException {
Query q = request.adaptTo(Query.class);

if (q == null || q.getParameterFoo() == null) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
} else {
response.sendError(HttpServletResponse.SC_OK);
}
}
}
@@ -0,0 +1,53 @@
package org.apache.sling.models.testing;

import static org.junit.Assert.assertEquals;

import java.io.IOException;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.osgi.services.HttpClientBuilderFactory;
import org.apache.sling.junit.Activator;
import org.apache.sling.junit.rules.TeleporterRule;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;

public class AdaptFromServletResourceRequestIT {

@Rule
public final TeleporterRule teleporter = TeleporterRule.forClass(getClass(), "SM_Teleporter");

private String httpEndpoint;
private HttpClientBuilderFactory httpBuilderFactory;

@Before
public void setUp() throws Exception {
BundleContext bundleContext = Activator.getBundleContext();
ServiceReference ref = bundleContext.getServiceReference("org.osgi.service.http.HttpService");
httpEndpoint = ((String[]) ref.getProperty("osgi.http.endpoint"))[0];
httpBuilderFactory = teleporter.getService(HttpClientBuilderFactory.class);
}

@Test
public void testRequestWithParameter() throws IOException {
requestAndAssertStatus(httpEndpoint + "apps/rtpickerrequest?foo=bar", 200);
}

@Test
public void testRequestWithout() throws IOException {
requestAndAssertStatus(httpEndpoint + "apps/rtpickerrequest", 400);
}

private void requestAndAssertStatus(String url, int status) throws IOException {
HttpGet get = new HttpGet(url);
CloseableHttpClient client = httpBuilderFactory.newBuilder().build();
CloseableHttpResponse response = client.execute(get);
assertEquals(status, response.getStatusLine().getStatusCode());
response.close();
client.close();
}
}

0 comments on commit db174f7

Please sign in to comment.