Skip to content

Commit

Permalink
Merge pull request #46 from julian-michelmann/feature/java8-compatibi…
Browse files Browse the repository at this point in the history
…lity

Java 1.8 compatibility
  • Loading branch information
oleg-nenashev committed May 27, 2023
2 parents 9ab3fdf + 5bc8671 commit 183caaa
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 63 deletions.
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

0 comments on commit 183caaa

Please sign in to comment.