From 973953f9e89bc7ebd8d7e36cef359b2d180c94c1 Mon Sep 17 00:00:00 2001 From: kapishmalik Date: Sun, 23 Apr 2023 20:56:29 +0530 Subject: [PATCH 1/4] add JUnit5 example and documentation --- README.md | 26 ++++++++ .../WireMockContainerJUnit5Test.java | 59 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java diff --git a/README.md b/README.md index 4c0e551..99a71b4 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,32 @@ public class WireMockContainerExtensionTest { } ``` +```java +@Testcontainers +public class WireMockContainerExtensionJUnit5Test { + + @Container + public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") + .withMapping("json-body-transformer", WireMockContainerExtensionTest.class, "json-body-transformer.json") + .withExtension("JSON Body Transformer", Collections.singleton("com.ninecookies.wiremock.extensions.JsonBodyTransformer"), + Collections.singleton(Paths.get("target", "test-wiremock-extension", "9cookies-wiremock-extensions.jar").toFile())); + + @Test + public void testJSONBodyTransformer() throws Exception { + final HttpClient client = HttpClient.newBuilder().build(); + final HttpRequest request = HttpRequest.newBuilder() + .uri(wiremockServer.getRequestURI("json-body-transformer")) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); + + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()).as("Wrong response body") + .contains("Hello, John Doe!"); + } +} +``` ## Contributing All contributions are welcome! diff --git a/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java new file mode 100644 index 0000000..02f0cac --- /dev/null +++ b/src/test/java/org/wiremock/integrations/testcontainers/WireMockContainerJUnit5Test.java @@ -0,0 +1,59 @@ +package org.wiremock.integrations.testcontainers; + +import static org.assertj.core.api.Assertions.assertThat; + +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.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +@Testcontainers +public class WireMockContainerJUnit5Test { + + @Container + public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") + .withMapping("hello", WireMockContainerTest.class, "hello-world.json") + .withMapping("hello-resource", WireMockContainerTest.class, "hello-world-resource.json") + .withFileFromResource("hello-world-resource-response.xml", WireMockContainerTest.class, + "hello-world-resource-response.xml"); + + @Test + public void helloWorld() throws Exception { + final HttpClient client = HttpClient.newBuilder().build(); + final HttpRequest request = HttpRequest.newBuilder() + .uri(wiremockServer.getRequestURI("hello")) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .GET().build(); + + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()) + .as("Wrong response body") + .contains("Hello, world!"); + } + + @Test + public void helloWorldFromFile() throws Exception { + final HttpClient client = HttpClient.newBuilder() + .version(HttpClient.Version.HTTP_1_1) + .build(); + + HttpRequest request = HttpRequest.newBuilder() + .uri(wiremockServer.getRequestURI("hello-from-file")) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .GET() + .build(); + + HttpResponse response = + client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()) + .as("Wrong response body") + .contains("Hello, world!"); + } +} From d97e2cb0fc0316dcc10f236008d82db32d6e870e Mon Sep 17 00:00:00 2001 From: kapishmalik Date: Sun, 23 Apr 2023 21:11:05 +0530 Subject: [PATCH 2/4] review comment changes --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 99a71b4..476aa94 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ Mapping definition: Test sample: +##### Sample code in JUnit 4 ```java public class WireMockContainerExtensionTest { @Rule @@ -165,6 +166,7 @@ public class WireMockContainerExtensionTest { } ``` +##### Sample code in JUnit 5 ```java @Testcontainers public class WireMockContainerExtensionJUnit5Test { From 8824b08e1c3fe1058be97201e0339a3d22428a2c Mon Sep 17 00:00:00 2001 From: kapishmalik Date: Sun, 23 Apr 2023 21:13:57 +0530 Subject: [PATCH 3/4] small change --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 476aa94..6d823f0 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ Mapping definition: Test sample: -##### Sample code in JUnit 4 +##### Sample code using JUnit 4 ```java public class WireMockContainerExtensionTest { @Rule @@ -166,7 +166,7 @@ public class WireMockContainerExtensionTest { } ``` -##### Sample code in JUnit 5 +##### Sample code using JUnit 5 ```java @Testcontainers public class WireMockContainerExtensionJUnit5Test { From 4d7f69e100ae65457e43112f9cfc75b99ce6161a Mon Sep 17 00:00:00 2001 From: kapishmalik Date: Mon, 24 Apr 2023 00:26:23 +0530 Subject: [PATCH 4/4] review comment changes --- README.md | 98 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 6d823f0..8f6d1bf 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,49 @@ A common example is using Wiremock 3.x with Java 1.8. P.S: Javadoc is coming soon! +#### Sample Code using JUnit 5 + +```java +import static org.assertj.core.api.Assertions.assertThat; + +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.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +@Testcontainers +public class WireMockContainerJUnit5Test { + + @Container + public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") + .withMapping("hello", WireMockContainerTest.class, "hello-world.json") + .withMapping("hello-resource", WireMockContainerTest.class, "hello-world-resource.json") + .withFileFromResource("hello-world-resource-response.xml", WireMockContainerTest.class, + "hello-world-resource-response.xml"); + + @Test + public void helloWorld() throws Exception { + final HttpClient client = HttpClient.newBuilder().build(); + final HttpRequest request = HttpRequest.newBuilder() + .uri(wiremockServer.getRequestURI("hello")) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .GET().build(); + + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()) + .as("Wrong response body") + .contains("Hello, world!"); + } +} +``` + +#### Sample Code using JUnit 4 + ```java import org.wiremock.integrations.testcontainers.WireMockContainer; import org.junit.Rule; @@ -140,38 +183,40 @@ Mapping definition: Test sample: -##### Sample code using JUnit 4 -```java -public class WireMockContainerExtensionTest { - @Rule - public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") - .withMapping("json-body-transformer", WireMockContainerExtensionTest.class, "json-body-transformer.json") - .withExtension("JSON Body Transformer", Collections.singleton("com.ninecookies.wiremock.extensions.JsonBodyTransformer"), - Collections.singleton(Paths.get("target", "test-wiremock-extension", "9cookies-wiremock-extensions.jar").toFile())); - - @Test - public void testJSONBodyTransformer() throws Exception { - final HttpClient client = HttpClient.newBuilder().build(); - final HttpRequest request = HttpRequest.newBuilder() - .uri(wiremockServer.getRequestURI("json-body-transformer")) - .timeout(Duration.ofSeconds(10)) - .header("Content-Type", "application/json") - .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); +##### Sample code using JUnit 5 - HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); +```java +@Testcontainers +public class WireMockContainerExtensionJUnit5Test { - assertThat(response.body()).as("Wrong response body") - .contains("Hello, John Doe!"); - } + @Container + public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") + .withMapping("json-body-transformer", WireMockContainerExtensionTest.class, "json-body-transformer.json") + .withExtension("JSON Body Transformer", Collections.singleton("com.ninecookies.wiremock.extensions.JsonBodyTransformer"), + Collections.singleton(Paths.get("target", "test-wiremock-extension", "9cookies-wiremock-extensions.jar").toFile())); + + @Test + public void testJSONBodyTransformer() throws Exception { + final HttpClient client = HttpClient.newBuilder().build(); + final HttpRequest request = HttpRequest.newBuilder() + .uri(wiremockServer.getRequestURI("json-body-transformer")) + .timeout(Duration.ofSeconds(10)) + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString("{\"name\":\"John Doe\"}")).build(); + + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + assertThat(response.body()).as("Wrong response body") + .contains("Hello, John Doe!"); + } } ``` -##### Sample code using JUnit 5 +##### Sample code using JUnit 4 + ```java -@Testcontainers -public class WireMockContainerExtensionJUnit5Test { - - @Container +public class WireMockContainerExtensionTest { + @Rule public WireMockContainer wiremockServer = new WireMockContainer("2.35.0") .withMapping("json-body-transformer", WireMockContainerExtensionTest.class, "json-body-transformer.json") .withExtension("JSON Body Transformer", Collections.singleton("com.ninecookies.wiremock.extensions.JsonBodyTransformer"), @@ -193,6 +238,7 @@ public class WireMockContainerExtensionJUnit5Test { } } ``` + ## Contributing All contributions are welcome!