testcontainers-mockserver 7.2.0__tar.gz → 7.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/PKG-INFO +4 -2
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/README.md +2 -1
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/pyproject.toml +2 -1
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver/__init__.py +7 -1
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver/container.py +34 -3
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver.egg-info/PKG-INFO +4 -2
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver.egg-info/requires.txt +1 -0
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/tests/test_container_config.py +40 -9
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/setup.cfg +0 -0
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver.egg-info/SOURCES.txt +0 -0
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver.egg-info/dependency_links.txt +0 -0
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/src/testcontainers_mockserver.egg-info/top_level.txt +0 -0
- {testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/tests/test_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: testcontainers-mockserver
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.4.0
|
|
4
4
|
Summary: Testcontainers module for MockServer
|
|
5
5
|
Author-email: James D Bloom <jamesdbloom@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -21,6 +21,7 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
Requires-Dist: testcontainers>=4.0.0
|
|
24
|
+
Requires-Dist: mockserver-client>=5.15
|
|
24
25
|
Provides-Extra: test
|
|
25
26
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
26
27
|
Requires-Dist: requests>=2.20; extra == "test"
|
|
@@ -62,13 +63,14 @@ with MockServerContainer() as mockserver:
|
|
|
62
63
|
|
|
63
64
|
### `MockServerContainer(image=..., port=1080)`
|
|
64
65
|
|
|
65
|
-
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.
|
|
66
|
+
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.3.0`.
|
|
66
67
|
- `port` — Container port MockServer listens on. Defaults to `1080`.
|
|
67
68
|
|
|
68
69
|
### Methods
|
|
69
70
|
|
|
70
71
|
| Method | Returns | Description |
|
|
71
72
|
|--------|---------|-------------|
|
|
73
|
+
| `get_client()` | `MockServerClient` | A cached, ready-wired `mockserver` client pointed at the mapped host/port |
|
|
72
74
|
| `get_url()` | `str` | HTTP base URL (e.g. `http://localhost:49152`) |
|
|
73
75
|
| `get_secure_url()` | `str` | HTTPS base URL (same port, `https://` scheme) |
|
|
74
76
|
| `get_host()` | `str` | Mapped host IP |
|
|
@@ -35,13 +35,14 @@ with MockServerContainer() as mockserver:
|
|
|
35
35
|
|
|
36
36
|
### `MockServerContainer(image=..., port=1080)`
|
|
37
37
|
|
|
38
|
-
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.
|
|
38
|
+
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.3.0`.
|
|
39
39
|
- `port` — Container port MockServer listens on. Defaults to `1080`.
|
|
40
40
|
|
|
41
41
|
### Methods
|
|
42
42
|
|
|
43
43
|
| Method | Returns | Description |
|
|
44
44
|
|--------|---------|-------------|
|
|
45
|
+
| `get_client()` | `MockServerClient` | A cached, ready-wired `mockserver` client pointed at the mapped host/port |
|
|
45
46
|
| `get_url()` | `str` | HTTP base URL (e.g. `http://localhost:49152`) |
|
|
46
47
|
| `get_secure_url()` | `str` | HTTPS base URL (same port, `https://` scheme) |
|
|
47
48
|
| `get_host()` | `str` | Mapped host IP |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "testcontainers-mockserver"
|
|
7
|
-
version = "7.
|
|
7
|
+
version = "7.4.0"
|
|
8
8
|
description = "Testcontainers module for MockServer"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -27,6 +27,7 @@ classifiers = [
|
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
29
|
"testcontainers>=4.0.0",
|
|
30
|
+
"mockserver-client>=5.15",
|
|
30
31
|
]
|
|
31
32
|
|
|
32
33
|
[project.optional-dependencies]
|
|
@@ -14,7 +14,13 @@ Example::
|
|
|
14
14
|
# Use requests or any HTTP client to interact with MockServer at this URL.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
+
from importlib import metadata
|
|
18
|
+
|
|
17
19
|
from testcontainers_mockserver.container import MockServerContainer
|
|
18
20
|
|
|
19
21
|
__all__ = ["MockServerContainer"]
|
|
20
|
-
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
__version__ = metadata.version("testcontainers-mockserver")
|
|
25
|
+
except metadata.PackageNotFoundError: # pragma: no cover - source tree without install
|
|
26
|
+
__version__ = "0.0.0"
|
|
@@ -8,7 +8,7 @@ methods for the mapped host, port, and URL.
|
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
|
|
11
|
-
from
|
|
11
|
+
from importlib import metadata
|
|
12
12
|
|
|
13
13
|
from testcontainers.core.container import DockerContainer
|
|
14
14
|
from testcontainers.core.wait_strategies import HttpWaitStrategy
|
|
@@ -20,8 +20,23 @@ MOCKSERVER_PORT = 1080
|
|
|
20
20
|
#: Default Docker image name for MockServer.
|
|
21
21
|
_IMAGE_NAME = "mockserver/mockserver"
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
|
|
24
|
+
def _default_tag() -> str:
|
|
25
|
+
"""Derive the default image tag from the installed MockServer client version.
|
|
26
|
+
|
|
27
|
+
Mirrors the Java module: the tag is ``mockserver-<client-version>`` so the
|
|
28
|
+
container image stays in lockstep with the ``mockserver-client`` package.
|
|
29
|
+
Falls back to ``latest`` when the client version cannot be resolved (e.g. the
|
|
30
|
+
client is not installed), matching the Java ``:latest`` fallback.
|
|
31
|
+
"""
|
|
32
|
+
try:
|
|
33
|
+
return "mockserver-" + metadata.version("mockserver-client")
|
|
34
|
+
except metadata.PackageNotFoundError:
|
|
35
|
+
return "latest"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
#: Default image tag, derived from the installed MockServer client version.
|
|
39
|
+
_DEFAULT_TAG = _default_tag()
|
|
25
40
|
|
|
26
41
|
|
|
27
42
|
class MockServerContainer(DockerContainer):
|
|
@@ -58,6 +73,7 @@ class MockServerContainer(DockerContainer):
|
|
|
58
73
|
) -> None:
|
|
59
74
|
super().__init__(image=image, **kwargs)
|
|
60
75
|
self._port = port
|
|
76
|
+
self._client = None
|
|
61
77
|
self.with_exposed_ports(self._port)
|
|
62
78
|
self.with_env("SERVER_PORT", str(self._port))
|
|
63
79
|
|
|
@@ -100,6 +116,21 @@ class MockServerContainer(DockerContainer):
|
|
|
100
116
|
"""Return the HTTPS base URL for MockServer (same port, different scheme)."""
|
|
101
117
|
return f"https://{self.get_host()}:{self.get_port()}"
|
|
102
118
|
|
|
119
|
+
def get_client(self):
|
|
120
|
+
"""Return a ``MockServerClient`` connected to this container.
|
|
121
|
+
|
|
122
|
+
The client is created lazily on first call and cached. Mirrors the Java
|
|
123
|
+
module's ``getClient()``. Requires the ``mockserver-client`` package,
|
|
124
|
+
which is declared as a dependency of this module.
|
|
125
|
+
|
|
126
|
+
:returns: a ``mockserver.MockServerClient`` pointed at the mapped host/port
|
|
127
|
+
"""
|
|
128
|
+
if self._client is None:
|
|
129
|
+
from mockserver import MockServerClient
|
|
130
|
+
|
|
131
|
+
self._client = MockServerClient(self.get_host(), self.get_port())
|
|
132
|
+
return self._client
|
|
133
|
+
|
|
103
134
|
# ------------------------------------------------------------------
|
|
104
135
|
# Configuration helpers (fluent)
|
|
105
136
|
# ------------------------------------------------------------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: testcontainers-mockserver
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.4.0
|
|
4
4
|
Summary: Testcontainers module for MockServer
|
|
5
5
|
Author-email: James D Bloom <jamesdbloom@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -21,6 +21,7 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
Requires-Dist: testcontainers>=4.0.0
|
|
24
|
+
Requires-Dist: mockserver-client>=5.15
|
|
24
25
|
Provides-Extra: test
|
|
25
26
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
26
27
|
Requires-Dist: requests>=2.20; extra == "test"
|
|
@@ -62,13 +63,14 @@ with MockServerContainer() as mockserver:
|
|
|
62
63
|
|
|
63
64
|
### `MockServerContainer(image=..., port=1080)`
|
|
64
65
|
|
|
65
|
-
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.
|
|
66
|
+
- `image` — Docker image to use. Defaults to `mockserver/mockserver:mockserver-7.3.0`.
|
|
66
67
|
- `port` — Container port MockServer listens on. Defaults to `1080`.
|
|
67
68
|
|
|
68
69
|
### Methods
|
|
69
70
|
|
|
70
71
|
| Method | Returns | Description |
|
|
71
72
|
|--------|---------|-------------|
|
|
73
|
+
| `get_client()` | `MockServerClient` | A cached, ready-wired `mockserver` client pointed at the mapped host/port |
|
|
72
74
|
| `get_url()` | `str` | HTTP base URL (e.g. `http://localhost:49152`) |
|
|
73
75
|
| `get_secure_url()` | `str` | HTTPS base URL (same port, `https://` scheme) |
|
|
74
76
|
| `get_host()` | `str` | Mapped host IP |
|
{testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/tests/test_container_config.py
RENAMED
|
@@ -175,14 +175,45 @@ class TestUrlShaping:
|
|
|
175
175
|
assert called_with == [9090]
|
|
176
176
|
|
|
177
177
|
|
|
178
|
-
class
|
|
179
|
-
"""Tests that verify the
|
|
178
|
+
class TestVersionDerivation:
|
|
179
|
+
"""Tests that verify the default image tag is derived, not hard-pinned."""
|
|
180
180
|
|
|
181
|
-
def
|
|
182
|
-
"""The default tag
|
|
183
|
-
|
|
181
|
+
def test_default_tag_derives_from_client_or_latest(self):
|
|
182
|
+
"""The default tag derives from the client version, or falls back to latest."""
|
|
183
|
+
# Either 'mockserver-<version>' (client installed) or 'latest' (fallback).
|
|
184
|
+
assert _DEFAULT_TAG == "latest" or _DEFAULT_TAG.startswith("mockserver-")
|
|
184
185
|
|
|
185
|
-
def
|
|
186
|
-
"""
|
|
187
|
-
import
|
|
188
|
-
|
|
186
|
+
def test_default_tag_helper_falls_back_to_latest(self, monkeypatch):
|
|
187
|
+
"""When the client package is absent, the tag falls back to 'latest'."""
|
|
188
|
+
from importlib import metadata
|
|
189
|
+
|
|
190
|
+
from testcontainers_mockserver import container as container_module
|
|
191
|
+
|
|
192
|
+
def _raise(_name):
|
|
193
|
+
raise metadata.PackageNotFoundError
|
|
194
|
+
|
|
195
|
+
monkeypatch.setattr(container_module.metadata, "version", _raise)
|
|
196
|
+
assert container_module._default_tag() == "latest"
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
class TestGetClient:
|
|
200
|
+
"""Tests for the get_client convenience helper."""
|
|
201
|
+
|
|
202
|
+
def test_get_client_returns_configured_client(self):
|
|
203
|
+
"""get_client returns a MockServerClient pointed at the mapped host/port."""
|
|
204
|
+
from mockserver import MockServerClient
|
|
205
|
+
|
|
206
|
+
container = MockServerContainer()
|
|
207
|
+
container.get_container_host_ip = lambda: "127.0.0.1"
|
|
208
|
+
container.get_exposed_port = lambda port: 49152
|
|
209
|
+
|
|
210
|
+
client = container.get_client()
|
|
211
|
+
assert isinstance(client, MockServerClient)
|
|
212
|
+
|
|
213
|
+
def test_get_client_is_cached(self):
|
|
214
|
+
"""get_client caches the client across calls."""
|
|
215
|
+
container = MockServerContainer()
|
|
216
|
+
container.get_container_host_ip = lambda: "127.0.0.1"
|
|
217
|
+
container.get_exposed_port = lambda port: 49152
|
|
218
|
+
|
|
219
|
+
assert container.get_client() is container.get_client()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{testcontainers_mockserver-7.2.0 → testcontainers_mockserver-7.4.0}/tests/test_integration.py
RENAMED
|
File without changes
|