diff --git a/docs/modules/mockserver.md b/docs/modules/mockserver.md index e6a0ee91ece..8375f005c5f 100644 --- a/docs/modules/mockserver.md +++ b/docs/modules/mockserver.md @@ -1,5 +1,14 @@ # Mockserver Module +!!! note "Deprecated — use the MockServer-maintained module for new projects" + This bundled module is deprecated. For new projects, prefer the MockServer-maintained + module [`org.mock-server:mockserver-testcontainers`](https://www.mock-server.com/mock_server/mockserver_testcontainers.html) + (class `org.mockserver.testcontainers.MockServerContainer`). It tracks current MockServer + releases, derives its image tag from the client library so the container and client stay in + lockstep, and adds configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, + log level, arbitrary properties) plus direct `MockServerClient` wiring. This page documents the + legacy bundled module. + Mock Server can be used to mock HTTP services by matching requests against user-defined expectations. ## Usage example diff --git a/modules/mockserver/build.gradle b/modules/mockserver/build.gradle index 2ff2e9f34c6..25a5ebda1db 100644 --- a/modules/mockserver/build.gradle +++ b/modules/mockserver/build.gradle @@ -3,6 +3,8 @@ description = "Testcontainers :: MockServer" dependencies { api project(':testcontainers') - testImplementation 'org.mock-server:mockserver-client-java:5.15.0' + // Single source of truth for the MockServer version: the test derives its container image + // tag from this client jar's implementation version, so bumping here updates both in lockstep. + testImplementation 'org.mock-server:mockserver-client-java:7.1.0' testImplementation 'io.rest-assured:rest-assured:5.5.7' } 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 47d2399d934..77a475389fb 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java @@ -5,12 +5,22 @@ import org.testcontainers.utility.DockerImageName; /** - * @deprecated use {@link org.testcontainers.mockserver.MockServerContainer} instead. + * @deprecated Use the MockServer-maintained module instead: + * {@code org.mock-server:mockserver-testcontainers} + * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer + * releases, derives its image tag from the client library so the two stay in lockstep, and adds + * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary + * properties) plus direct {@code MockServerClient} wiring. + * + * @see MockServer Testcontainers module */ @Slf4j @Deprecated public class MockServerContainer extends GenericContainer { + // Intentionally frozen at this legacy image/tag: this superseded redirect stub keeps its original + // jamesdbloom/mockserver default for backwards compatibility. New code should use the + // MockServer-maintained module referenced in the deprecation notice above. private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); private static final String DEFAULT_TAG = "mockserver-5.5.4"; diff --git a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java index cbfcbc9fd66..5394e32d7b4 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java @@ -5,12 +5,25 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.DockerImageName; +/** + * @deprecated Use the MockServer-maintained module instead: + * {@code org.mock-server:mockserver-testcontainers} + * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer + * releases, derives its image tag from the client library so the two stay in lockstep, and adds + * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary + * properties) plus direct {@code MockServerClient} wiring. + * + * @see MockServer Testcontainers module + */ @Slf4j +@Deprecated public class MockServerContainer extends GenericContainer { - private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("mockserver/mockserver"); - private static final String DEFAULT_TAG = "mockserver-5.5.4"; + // Keep this tag aligned with the mockserver-client-java version in build.gradle: the tests derive + // their image tag from that client jar, so the default here must track the same MockServer release. + private static final String DEFAULT_TAG = "mockserver-7.1.0"; @Deprecated public static final String VERSION = DEFAULT_TAG; diff --git a/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java index 53325234b8b..6eefc895a1d 100644 --- a/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java +++ b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java @@ -15,6 +15,7 @@ import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; +@SuppressWarnings("deprecation") // testing the deprecated bundled module class MockServerContainerTest { public static final DockerImageName MOCKSERVER_IMAGE = DockerImageName @@ -34,7 +35,9 @@ void shouldCallActualMockserverVersion() { try (MockServerClient client = new MockServerClient(mockServer.getHost(), mockServer.getServerPort())) { assertThat(client.hasStarted()).as("Mockserver running").isTrue(); + // testSimpleExpectation { client.when(request().withPath("/hello")).respond(response().withBody(expectedBody)); + // } assertThat(given().when().get(mockServer.getEndpoint() + "/hello").then().extract().body().asString()) .as("MockServer returns correct result")