Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
</licenses>

<properties>
<java.version>11</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
<wiremock.version>2.35.0</wiremock.version>
<testcontainers.version>1.18.1</testcontainers.version>
<junit.version>5.9.3</junit.version>
Expand Down Expand Up @@ -97,7 +98,7 @@
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.7</version>
<version>1.3.7</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;

import java.net.http.HttpResponse;
import java.nio.file.Paths;
import java.time.Duration;
import java.util.Collections;
Expand Down Expand Up @@ -58,10 +58,10 @@ public void testJSONBodyTransformer() throws Exception {
String body = "{\"name\":\"John Doe\"}";

// when
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
HttpResponse response = new TestHttpClient().post(url, body);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, John Doe!");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;

import java.net.http.HttpResponse;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.concurrent.TimeUnit;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -59,12 +60,11 @@ public void testJSONBodyTransformer() throws Exception {
String body = "{\"name\":\"John Doe\"}";

// when
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
HttpResponse response = new TestHttpClient().post(url, body);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, John Doe!");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
import org.testcontainers.Testcontainers;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpServer;

import java.net.http.HttpResponse;
import java.nio.file.Paths;
import java.time.Duration;
import java.util.Collections;
Expand Down Expand Up @@ -73,15 +73,15 @@ public void callbackUsingJsonStub() throws Exception {
String applicationCallbackUrl = String.format("http://%s:%d%s", GenericContainer.INTERNAL_HOST_HOSTNAME, applicationServer.getPort(), APPLICATION_PATH);

// when
HttpResponse<String> response = TestHttpClient.newInstance().post(
HttpResponse response = new TestHttpClient().post(
wiremockUrl,
"{\"callbackMethod\": \"PUT\", \"callbackUrl\": \"" + applicationCallbackUrl + "\"}"
);

// then
assertThat(response).as("Wiremock Response").isNotNull().satisfies(it -> {
assertThat(it.statusCode()).as("Wiremock Response Status").isEqualTo(200);
assertThat(it.body()).as("Wiremock Response Body")
assertThat(it.getStatusCode()).as("Wiremock Response Status").isEqualTo(200);
assertThat(it.getBody()).as("Wiremock Response Body")
.contains("Please wait callback")
.contains("PUT")
.contains(applicationCallbackUrl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
import org.junit.jupiter.params.provider.ValueSource;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;

import java.net.http.HttpResponse;

import static org.assertj.core.api.Assertions.assertThat;

@Testcontainers
Expand All @@ -32,10 +31,10 @@ public void helloWorld(String path) throws Exception {
String url = wiremockServer.getUrl(path);

// when
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
HttpResponse response = new TestHttpClient().get(url);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, world!");
}
Expand All @@ -46,10 +45,10 @@ public void helloWorldFromFile() throws Exception {
String url = wiremockServer.getUrl("/hello-from-file");

// when
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
HttpResponse response = new TestHttpClient().get(url);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, world!");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@

import org.junit.Rule;
import org.junit.Test;
import org.wiremock.integrations.testcontainers.testsupport.http.HttpResponse;
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;

import java.net.http.HttpResponse;

import static org.assertj.core.api.Assertions.assertThat;

public class WireMockContainerTest {
Expand All @@ -37,10 +36,10 @@ public void helloWorld() throws Exception {
String url = wiremockServer.getUrl("/hello");

// when
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
HttpResponse response = new TestHttpClient().get(url);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, world!");
}
Expand All @@ -51,10 +50,10 @@ public void helloWorldWithoutLeadingSlashInPath() throws Exception {
String url = wiremockServer.getUrl("hello");

// when
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
HttpResponse response = new TestHttpClient().get(url);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, world!");
}
Expand All @@ -65,10 +64,10 @@ public void helloWorldFromFile() throws Exception {
String url = wiremockServer.getUrl("/hello-from-file");

// when
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
HttpResponse response = new TestHttpClient().get(url);

// then
assertThat(response.body())
assertThat(response.getBody())
.as("Wrong response body")
.contains("Hello, world!");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.wiremock.integrations.testcontainers.testsupport.http;

public class HttpResponse {

String body;
int statusCode;
public HttpResponse(String body, int statusCode) {
this.body = body;
this.statusCode = statusCode;
}

public String getBody() {
return body;
}

public int getStatusCode() {
return statusCode;
}
}
Original file line number Diff line number Diff line change
@@ -1,46 +1,56 @@
package org.wiremock.integrations.testcontainers.testsupport.http;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public final class TestHttpClient {
private final HttpClient client;

private TestHttpClient(HttpClient.Version version) {
client = HttpClient.newBuilder().version(version).build();
public HttpResponse send(HttpURLConnection connection) throws IOException {
InputStream inputStream = connection.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder response = new StringBuilder();

String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();



return new HttpResponse(response.toString(), connection.getResponseCode());
}

public static TestHttpClient newInstance() {
return new TestHttpClient(HttpClient.Version.HTTP_1_1);
}
public HttpResponse get(String uri) throws IOException {
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");

public HttpResponse<String> send(HttpRequest request) throws IOException, InterruptedException {
return client.send(request, HttpResponse.BodyHandlers.ofString());
return send(connection);
}

public HttpResponse<String> get(String uri) throws IOException, InterruptedException {
HttpRequest request = newRequestBuilder()
.uri(URI.create(uri))
.GET()
.build();
return send(request);
}

public HttpResponse<String> post(String uri, String body) throws IOException, InterruptedException {
HttpRequest request = newRequestBuilder()
.uri(URI.create(uri))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
return send(request);
}
public HttpResponse post(String uri, String body) throws IOException {
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
connection.setConnectTimeout(10000);

try (OutputStream outputStream = connection.getOutputStream()) {
byte[] input = body.getBytes(StandardCharsets.UTF_8);
outputStream.write(input, 0, input.length);
}

private static HttpRequest.Builder newRequestBuilder() {
return HttpRequest.newBuilder()
.timeout(Duration.ofSeconds(10));
return send(connection);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.sun.net.httpserver.HttpServer;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
Expand Down Expand Up @@ -48,10 +49,15 @@ private static final class AllRequestsRecorder implements HttpHandler {
public void handle(HttpExchange exchange) throws IOException {
String method = exchange.getRequestMethod();
String path = exchange.getRequestURI().getPath();
String body = exchange.getRequestBody().available() > 0
? new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8)
: null;

String body = null;

InputStream requestBody = exchange.getRequestBody();
if (requestBody.available() > 0) {
byte[] requestBodyBytes = new byte[requestBody.available()];
requestBody.read(requestBodyBytes);
body = new String(requestBodyBytes, StandardCharsets.UTF_8);
}

recordedRequests.add(new RecordedRequest(method, path, body));

exchange.sendResponseHeaders(200, 0);
Expand Down