From 93007e9f5640a52cff2ae521d29d5a5fe376c06b Mon Sep 17 00:00:00 2001 From: Nikita Karpuk Date: Sat, 6 May 2023 16:33:35 +0200 Subject: [PATCH] #33 Align methods of WireMockContainer and WireMockServer --- README.md | 9 ++++---- pom.xml | 5 +++++ .../testcontainers/WireMockContainer.java | 15 ++++++------- .../WireMockContainerExtensionTest.java | 3 ++- ...ockContainerExtensionsCombinationTest.java | 3 ++- .../WireMockContainerJUnit5Test.java | 16 ++++++++++---- .../testcontainers/WireMockContainerTest.java | 21 +++++++++++++++++-- 7 files changed, 53 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index bf8d2ad..3633bc6 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ public class WireMockContainerJUnit5Test { public void helloWorld() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello")) + .uri(URI.create(wiremockServer.getUrl("/hello"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET().build(); @@ -82,6 +82,7 @@ import org.wiremock.integrations.testcontainers.WireMockContainer; import org.junit.Rule; import org.junit.Test; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @@ -97,7 +98,7 @@ public class WireMockContainerTest { public void helloWorld() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello")) + .uri(URI.create(wiremockServer.getUrl("/hello"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET().build(); @@ -199,7 +200,7 @@ public class WireMockContainerExtensionJUnit5Test { public void testJSONBodyTransformer() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("json-body-transformer")) + .uri(URI.create(wiremockServer.getUrl("/json-body-transformer"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); @@ -226,7 +227,7 @@ public class WireMockContainerExtensionTest { public void testJSONBodyTransformer() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("json-body-transformer")) + .uri(URI.create(wiremockServer.getUrl("/json-body-transformer"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); diff --git a/pom.xml b/pom.xml index 196cd1b..7a816bb 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,11 @@ junit-jupiter-engine test + + org.junit.jupiter + junit-jupiter-params + test + org.junit.vintage junit-vintage-engine diff --git a/src/main/java/org/wiremock/integrations/testcontainers/WireMockContainer.java b/src/main/java/org/wiremock/integrations/testcontainers/WireMockContainer.java index b0cd31f..3821f45 100644 --- a/src/main/java/org/wiremock/integrations/testcontainers/WireMockContainer.java +++ b/src/main/java/org/wiremock/integrations/testcontainers/WireMockContainer.java @@ -17,8 +17,6 @@ import java.io.File; import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -184,15 +182,18 @@ public WireMockContainer withExtension(String id, String className) { return withExtension(id, Collections.singleton(className), Collections.emptyList()); } - public String getEndpoint() { - return String.format("http://%s:%d", getHost(), getMappedPort(PORT)); + public String getBaseUrl() { + return String.format("http://%s:%d", getHost(), getPort()); } - public URI getRequestURI(String relativePath) throws URISyntaxException { - return new URI(getEndpoint() + "/" + relativePath); + public String getUrl(String path) { + if (!path.startsWith("/")) { + path = "/" + path; + } + return String.format("%s%s", getBaseUrl(), path); } - public Integer getServerPort() { + public Integer getPort() { return getMappedPort(PORT); } diff --git a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java index 5aac27b..f930901 100644 --- a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java +++ b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionTest.java @@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory; import org.testcontainers.containers.output.Slf4jLogConsumer; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @@ -56,7 +57,7 @@ public void before() { public void testJSONBodyTransformer() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("json-body-transformer")) + .uri(URI.create(wiremockServer.getUrl("/json-body-transformer"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); diff --git a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java index 79314ad..f3d5637 100644 --- a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java +++ b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerExtensionsCombinationTest.java @@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory; import org.testcontainers.containers.output.Slf4jLogConsumer; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @@ -58,7 +59,7 @@ public void before() { public void testJSONBodyTransformer() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("json-body-transformer")) + .uri(URI.create(wiremockServer.getUrl("/json-body-transformer"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); diff --git a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java index 02f0cac..5fa8654 100644 --- a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java +++ b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java @@ -2,11 +2,14 @@ import static org.assertj.core.api.Assertions.assertThat; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -20,11 +23,16 @@ public class WireMockContainerJUnit5Test { .withFileFromResource("hello-world-resource-response.xml", WireMockContainerTest.class, "hello-world-resource-response.xml"); - @Test - public void helloWorld() throws Exception { + + @ParameterizedTest + @ValueSource(strings = { + "hello", + "/hello" + }) + public void helloWorld(String path) throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello")) + .uri(URI.create(wiremockServer.getUrl(path))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET().build(); @@ -43,7 +51,7 @@ public void helloWorldFromFile() throws Exception { .build(); HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello-from-file")) + .uri(URI.create(wiremockServer.getUrl("/hello-from-file"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET() diff --git a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java index 45f4356..2448fef 100644 --- a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java +++ b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerTest.java @@ -18,6 +18,7 @@ import org.junit.Rule; import org.junit.Test; +import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @@ -37,7 +38,23 @@ public class WireMockContainerTest { public void helloWorld() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello")) + .uri(URI.create(wiremockServer.getUrl("/hello"))) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .GET().build(); + + final HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()) + .as("Wrong response body") + .contains("Hello, world!"); + } + + @Test + public void helloWorldWithoutLeadingSlashInPath() throws Exception { + final HttpClient client = HttpClient.newBuilder().build(); + final HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(wiremockServer.getUrl("hello"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET().build(); @@ -53,7 +70,7 @@ public void helloWorld() throws Exception { public void helloWorldFromFile() throws Exception { final HttpClient client = HttpClient.newBuilder().build(); final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("hello-from-file")) + .uri(URI.create(wiremockServer.getUrl("/hello-from-file"))) .timeout(Duration.ofSeconds(10)) .header("Content-Type", "application/json") .GET().build();