Skip to content

Commit 59a6a94

Browse files
committed
Tests improvement - Extract Http request preparation logic into separate class
1 parent ebb9b7a commit 59a6a94

File tree

5 files changed

+87
-70
lines changed

5 files changed

+87
-70
lines changed

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323
import org.testcontainers.containers.output.Slf4jLogConsumer;
24+
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2425

25-
import java.net.URI;
26-
import java.net.http.HttpClient;
27-
import java.net.http.HttpRequest;
2826
import java.net.http.HttpResponse;
2927
import java.nio.file.Paths;
3028
import java.time.Duration;
@@ -55,15 +53,14 @@ public void before() {
5553

5654
@Test
5755
public void testJSONBodyTransformer() throws Exception {
58-
final HttpClient client = HttpClient.newBuilder().build();
59-
final HttpRequest request = HttpRequest.newBuilder()
60-
.uri(URI.create(wiremockServer.getUrl("/json-body-transformer")))
61-
.timeout(Duration.ofSeconds(10))
62-
.header("Content-Type", "application/json")
63-
.POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build();
56+
// given
57+
String url = wiremockServer.getUrl("/json-body-transformer");
58+
String body = "{\"name\":\"John Doe\"}";
6459

65-
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
60+
// when
61+
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
6662

63+
// then
6764
assertThat(response.body())
6865
.as("Wrong response body")
6966
.contains("Hello, John Doe!");

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,10 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323
import org.testcontainers.containers.output.Slf4jLogConsumer;
24+
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2425

25-
import java.net.URI;
26-
import java.net.http.HttpClient;
27-
import java.net.http.HttpRequest;
2826
import java.net.http.HttpResponse;
2927
import java.nio.file.Paths;
30-
import java.time.Duration;
3128
import java.util.Collections;
3229

3330
import static org.assertj.core.api.Assertions.assertThat;
@@ -57,15 +54,14 @@ public void before() {
5754

5855
@Test
5956
public void testJSONBodyTransformer() throws Exception {
60-
final HttpClient client = HttpClient.newBuilder().build();
61-
final HttpRequest request = HttpRequest.newBuilder()
62-
.uri(URI.create(wiremockServer.getUrl("/json-body-transformer")))
63-
.timeout(Duration.ofSeconds(10))
64-
.header("Content-Type", "application/json")
65-
.POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build();
57+
// given
58+
String url = wiremockServer.getUrl("/json-body-transformer");
59+
String body = "{\"name\":\"John Doe\"}";
6660

67-
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
61+
// when
62+
HttpResponse<String> response = TestHttpClient.newInstance().post(url, body);
6863

64+
// then
6965
assertThat(response.body())
7066
.as("Wrong response body")
7167
.contains("Hello, John Doe!");

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22

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

5-
import java.net.URI;
6-
import java.net.http.HttpClient;
7-
import java.net.http.HttpRequest;
85
import java.net.http.HttpResponse;
9-
import java.time.Duration;
106
import org.junit.jupiter.api.Test;
117
import org.junit.jupiter.params.ParameterizedTest;
128
import org.junit.jupiter.params.provider.ValueSource;
139
import org.testcontainers.junit.jupiter.Container;
1410
import org.testcontainers.junit.jupiter.Testcontainers;
11+
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
1512

1613
@Testcontainers
1714
public class WireMockContainerJUnit5Test {
@@ -30,36 +27,27 @@ public class WireMockContainerJUnit5Test {
3027
"/hello"
3128
})
3229
public void helloWorld(String path) throws Exception {
33-
final HttpClient client = HttpClient.newBuilder().build();
34-
final HttpRequest request = HttpRequest.newBuilder()
35-
.uri(URI.create(wiremockServer.getUrl(path)))
36-
.timeout(Duration.ofSeconds(10))
37-
.header("Content-Type", "application/json")
38-
.GET().build();
30+
// given
31+
String url = wiremockServer.getUrl(path);
3932

40-
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
33+
// when
34+
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
4135

36+
// then
4237
assertThat(response.body())
4338
.as("Wrong response body")
4439
.contains("Hello, world!");
4540
}
4641

4742
@Test
4843
public void helloWorldFromFile() throws Exception {
49-
final HttpClient client = HttpClient.newBuilder()
50-
.version(HttpClient.Version.HTTP_1_1)
51-
.build();
44+
// given
45+
String url = wiremockServer.getUrl("/hello-from-file");
5246

53-
HttpRequest request = HttpRequest.newBuilder()
54-
.uri(URI.create(wiremockServer.getUrl("/hello-from-file")))
55-
.timeout(Duration.ofSeconds(10))
56-
.header("Content-Type", "application/json")
57-
.GET()
58-
.build();
59-
60-
HttpResponse<String> response =
61-
client.send(request, HttpResponse.BodyHandlers.ofString());
47+
// when
48+
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
6249

50+
// then
6351
assertThat(response.body())
6452
.as("Wrong response body")
6553
.contains("Hello, world!");

src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,9 @@
1717

1818
import org.junit.Rule;
1919
import org.junit.Test;
20+
import org.wiremock.integrations.testcontainers.testsupport.http.TestHttpClient;
2021

21-
import java.net.URI;
22-
import java.net.http.HttpClient;
23-
import java.net.http.HttpRequest;
2422
import java.net.http.HttpResponse;
25-
import java.time.Duration;
2623

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

@@ -36,48 +33,41 @@ public class WireMockContainerTest {
3633

3734
@Test
3835
public void helloWorld() throws Exception {
39-
final HttpClient client = HttpClient.newBuilder().build();
40-
final HttpRequest request = HttpRequest.newBuilder()
41-
.uri(URI.create(wiremockServer.getUrl("/hello")))
42-
.timeout(Duration.ofSeconds(10))
43-
.header("Content-Type", "application/json")
44-
.GET().build();
36+
// given
37+
String url = wiremockServer.getUrl("/hello");
4538

46-
final HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
39+
// when
40+
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
4741

42+
// then
4843
assertThat(response.body())
4944
.as("Wrong response body")
5045
.contains("Hello, world!");
5146
}
5247

5348
@Test
5449
public void helloWorldWithoutLeadingSlashInPath() throws Exception {
55-
final HttpClient client = HttpClient.newBuilder().build();
56-
final HttpRequest request = HttpRequest.newBuilder()
57-
.uri(URI.create(wiremockServer.getUrl("hello")))
58-
.timeout(Duration.ofSeconds(10))
59-
.header("Content-Type", "application/json")
60-
.GET().build();
50+
// given
51+
String url = wiremockServer.getUrl("hello");
6152

62-
final HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
53+
// when
54+
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
6355

56+
// then
6457
assertThat(response.body())
6558
.as("Wrong response body")
6659
.contains("Hello, world!");
6760
}
6861

6962
@Test
7063
public void helloWorldFromFile() throws Exception {
71-
final HttpClient client = HttpClient.newBuilder().build();
72-
final HttpRequest request = HttpRequest.newBuilder()
73-
.uri(URI.create(wiremockServer.getUrl("/hello-from-file")))
74-
.timeout(Duration.ofSeconds(10))
75-
.header("Content-Type", "application/json")
76-
.GET().build();
64+
// given
65+
String url = wiremockServer.getUrl("/hello-from-file");
7766

78-
final HttpResponse<String> response =
79-
client.send(request, HttpResponse.BodyHandlers.ofString());
67+
// when
68+
HttpResponse<String> response = TestHttpClient.newInstance().get(url);
8069

70+
// then
8171
assertThat(response.body())
8272
.as("Wrong response body")
8373
.contains("Hello, world!");
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.wiremock.integrations.testcontainers.testsupport.http;
2+
3+
import java.io.IOException;
4+
import java.net.URI;
5+
import java.net.http.HttpClient;
6+
import java.net.http.HttpRequest;
7+
import java.net.http.HttpResponse;
8+
import java.time.Duration;
9+
10+
public final class TestHttpClient {
11+
private final HttpClient client;
12+
13+
private TestHttpClient(HttpClient.Version version) {
14+
client = HttpClient.newBuilder().version(version).build();
15+
}
16+
17+
public static TestHttpClient newInstance() {
18+
return new TestHttpClient(HttpClient.Version.HTTP_1_1);
19+
}
20+
21+
public HttpResponse<String> send(HttpRequest request) throws IOException, InterruptedException {
22+
return client.send(request, HttpResponse.BodyHandlers.ofString());
23+
}
24+
25+
public HttpResponse<String> get(String uri) throws IOException, InterruptedException {
26+
HttpRequest request = newRequestBuilder()
27+
.uri(URI.create(uri))
28+
.GET()
29+
.build();
30+
return send(request);
31+
}
32+
33+
public HttpResponse<String> post(String uri, String body) throws IOException, InterruptedException {
34+
HttpRequest request = newRequestBuilder()
35+
.uri(URI.create(uri))
36+
.header("Content-Type", "application/json")
37+
.POST(HttpRequest.BodyPublishers.ofString(body))
38+
.build();
39+
return send(request);
40+
}
41+
42+
private static HttpRequest.Builder newRequestBuilder() {
43+
return HttpRequest.newBuilder()
44+
.timeout(Duration.ofSeconds(10));
45+
}
46+
}

0 commit comments

Comments
 (0)