diff --git a/docs/modules/mockserver.md b/docs/modules/mockserver.md index c739278acff..fc4402ae9e8 100644 --- a/docs/modules/mockserver.md +++ b/docs/modules/mockserver.md @@ -7,13 +7,13 @@ Mock Server can be used to mock HTTP services by matching requests against user- The following example shows how to start Mockserver. -[Creating a MockServer container](../../modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerRuleTest.java) inside_block:creatingProxy +[Creating a MockServer container](../../modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java) inside_block:creatingProxy And how to set a simple expectation using the Java MockServerClient. -[Setting a simple expectation](../../modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerRuleTest.java) inside_block:testSimpleExpectation +[Setting a simple expectation](../../modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java) inside_block:testSimpleExpectation ## Adding this module to your project dependencies diff --git a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java index 00937214445..f69c5e86a6d 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java @@ -4,7 +4,11 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.DockerImageName; +/** + * @deprecated use {@link org.testcontainers.mockserver.MockServerContainer} instead. + */ @Slf4j +@Deprecated public class MockServerContainer extends GenericContainer { private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); diff --git a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java new file mode 100644 index 00000000000..cbfcbc9fd66 --- /dev/null +++ b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java @@ -0,0 +1,49 @@ +package org.testcontainers.mockserver; + +import lombok.extern.slf4j.Slf4j; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.DockerImageName; + +@Slf4j +public class MockServerContainer extends GenericContainer { + + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); + + private static final String DEFAULT_TAG = "mockserver-5.5.4"; + + @Deprecated + public static final String VERSION = DEFAULT_TAG; + + public static final int PORT = 1080; + + /** + * @deprecated use {@link #MockServerContainer(DockerImageName)} instead + */ + @Deprecated + public MockServerContainer(String version) { + this(DEFAULT_IMAGE_NAME.withTag("mockserver-" + version)); + } + + public MockServerContainer(DockerImageName dockerImageName) { + super(dockerImageName); + dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME, DockerImageName.parse("mockserver/mockserver")); + + waitingFor(Wait.forLogMessage(".*started on port: " + PORT + ".*", 1)); + + withCommand("-serverPort " + PORT); + addExposedPorts(PORT); + } + + public String getEndpoint() { + return String.format("http://%s:%d", getHost(), getMappedPort(PORT)); + } + + public String getSecureEndpoint() { + return String.format("https://%s:%d", getHost(), getMappedPort(PORT)); + } + + public Integer getServerPort() { + return getMappedPort(PORT); + } +} diff --git a/modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerRuleTest.java b/modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerRuleTest.java deleted file mode 100644 index c01cad49479..00000000000 --- a/modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerRuleTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.testcontainers.containers; - -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.mockserver.client.MockServerClient; -import org.testcontainers.utility.DockerImageName; - -import static io.restassured.RestAssured.given; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockserver.model.HttpRequest.request; -import static org.mockserver.model.HttpResponse.response; - -class MockServerContainerRuleTest { - - // creatingProxy { - private static final DockerImageName MOCKSERVER_IMAGE = DockerImageName - .parse("mockserver/mockserver") - .withTag("mockserver-" + MockServerClient.class.getPackage().getImplementationVersion()); - - private static MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE); - - // } - - @BeforeAll - static void setup() { - mockServer.start(); - } - - @AfterAll - static void tearDown() { - mockServer.stop(); - } - - @Test - void shouldReturnExpectation() { - // testSimpleExpectation { - try ( - MockServerClient mockServerClient = new MockServerClient(mockServer.getHost(), mockServer.getServerPort()) - ) { - mockServerClient - .when(request().withPath("/person").withQueryStringParameter("name", "peter")) - .respond(response().withBody("Peter the person!")); - - // ...a GET request to '/person?name=peter' returns "Peter the person!" - - assertThat( - given().baseUri(mockServer.getEndpoint()).get("/person?name=peter").then().extract().body().asString() - ) - .as("Expectation returns expected response body") - .contains("Peter the person"); - } - // } - } -} diff --git a/modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerTest.java b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java similarity index 92% rename from modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerTest.java rename to modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java index b1fca9ce514..53325234b8b 100644 --- a/modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerTest.java +++ b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java @@ -1,4 +1,4 @@ -package org.testcontainers.containers; +package org.testcontainers.mockserver; import io.restassured.config.RestAssuredConfig; import io.restassured.config.SSLConfig; @@ -22,8 +22,11 @@ class MockServerContainerTest { .withTag("mockserver-" + MockServerClient.class.getPackage().getImplementationVersion()); @Test - void shouldCallActualMockserverVersion() throws Exception { - try (MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE)) { + void shouldCallActualMockserverVersion() { + try ( // creatingProxy { + MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE) + // } + ) { mockServer.start(); String expectedBody = "Hello World!"; @@ -41,7 +44,7 @@ void shouldCallActualMockserverVersion() throws Exception { } @Test - void shouldCallMockserverUsingTlsProtocol() throws Exception { + void shouldCallMockserverUsingTlsProtocol() { try (MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE)) { mockServer.start(); @@ -63,7 +66,7 @@ void shouldCallMockserverUsingTlsProtocol() throws Exception { } @Test - void shouldCallMockserverUsingMutualTlsProtocol() throws Exception { + void shouldCallMockserverUsingMutualTlsProtocol() { try ( MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE) .withEnv("MOCKSERVER_TLS_MUTUAL_AUTHENTICATION_REQUIRED", "true")