Skip to content

Commit 831cbca

Browse files
Mehdi BEN ABDALLAHmbenabda
authored andcommitted
docs: rename classes as to not have the Mongo emulator mistaken for the MongoDB testcontainer
1 parent e462cbf commit 831cbca

File tree

8 files changed

+52
-33
lines changed

8 files changed

+52
-33
lines changed

modules/cosmosdb/README.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
.. autoclass:: testcontainers.cosmosdb.MongoDBEmulatorContainer
2-
.. autoclass:: testcontainers.cosmosdb.NoSQLEmulatorContainer
3-
.. title:: testcontainers.cosmosdb.CosmosDBEmulatorContainer
1+
.. autoclass:: testcontainers.cosmosdb.CosmosDBMongoEndpointContainer
2+
.. title:: testcontainers.cosmosdb.CosmosDBMongoEndpointContainer
3+
4+
.. autoclass:: testcontainers.cosmosdb.CosmosDBNoSQLEndpointContainer
5+
.. title:: testcontainers.cosmosdb.CosmosDBNoSQLEndpointContainer
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .mongodb import MongoDBEmulatorContainer
2-
from .nosql import NoSQLEmulatorContainer
1+
from .mongodb import CosmosDBMongoEndpointContainer
2+
from .nosql import CosmosDBNoSQLEndpointContainer
33

4-
__all__ = ["MongoDBEmulatorContainer", "NoSQLEmulatorContainer"]
4+
__all__ = ["CosmosDBMongoEndpointContainer", "CosmosDBNoSQLEndpointContainer"]

modules/cosmosdb/testcontainers/cosmosdb/_emulator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616

1717
class CosmosDBEmulatorContainer(DockerContainer):
1818
"""
19-
CosmosDB Emulator container.
19+
Abstract class for CosmosDB Emulator endpoints.
20+
21+
Concrete implementations for each endpoint is provided by a separate class:
22+
NoSQLEmulatorContainer and MongoDBEmulatorContainer.
2023
"""
2124

2225
def __init__(
@@ -45,6 +48,9 @@ def __init__(
4548

4649
@property
4750
def host(self) -> str:
51+
"""
52+
Emulator host
53+
"""
4854
return self.get_container_host_ip()
4955

5056
@property
@@ -88,7 +94,7 @@ def _wait_until_ready(self) -> Self:
8894

8995
def _download_cert(self) -> bytes:
9096
with grab.file(
91-
self._container, "/tmp/cosmos/appdata/.system/profiles/Client/AppData/Local/CosmosDBEmulator/emulator.pem"
97+
self.get_wrapped_container(), "/tmp/cosmos/appdata/.system/profiles/Client/AppData/Local/CosmosDBEmulator/emulator.pem"
9298
) as cert:
9399
return cert.read()
94100

modules/cosmosdb/testcontainers/cosmosdb/_grab.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import tarfile
55
import tempfile
66
from contextlib import contextmanager
7+
from docker.models.containers import Container
78

89
@contextmanager
9-
def file(container, target):
10+
def file(container: Container, target: str):
1011
target_path = Path(target)
1112
assert target_path.is_absolute(), "target must be an absolute path"
1213

13-
with tempfile.TemporaryDirectory() as tmpdirname:
14-
archive = Path(tmpdirname) / 'grabbed.tar'
14+
with tempfile.TemporaryDirectory() as tmp:
15+
archive = Path(tmp) / 'grabbed.tar'
1516

1617
# download from container as tar archive
1718
with open(archive, 'wb') as f:

modules/cosmosdb/testcontainers/cosmosdb/mongodb.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import os
22
from ._emulator import CosmosDBEmulatorContainer
33

4-
__all__ = ["MongoDBEmulatorContainer"]
4+
__all__ = ["CosmosDBMongoEndpointContainer"]
55

66
ENDPOINT_PORT = 10255
77

8-
class MongoDBEmulatorContainer(CosmosDBEmulatorContainer):
8+
class CosmosDBMongoEndpointContainer(CosmosDBEmulatorContainer):
99
"""
1010
CosmosDB MongoDB enpoint Emulator.
1111
1212
Example:
1313
1414
.. doctest::
15-
>>> from testcontainers.cosmosdb import MongoDBEmulatorContainer
16-
>>> with CosmosDBEmulatorContainer(mongodb_version="4.0") as emulator:
17-
... print(f"Point yout MongoDB client to {emulator.host}:{emulator.port}}")
15+
16+
>>> from testcontainers.cosmosdb import CosmosDBMongoEndpointContainer
17+
18+
>>> with CosmosDBMongoEndpointContainer(mongodb_version="4.0") as emulator:
19+
... print(f"Point your MongoDB client at {emulator.host}:{emulator.port}}")
1820
"""
1921

2022
def __init__(
@@ -31,6 +33,9 @@ def __init__(
3133

3234
@property
3335
def port(self) -> str:
36+
"""
37+
The exposed port to the MongoDB endpoint
38+
"""
3439
return self.get_exposed_port(ENDPOINT_PORT)
3540

3641
def _configure(self) -> None:

modules/cosmosdb/testcontainers/cosmosdb/nosql.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,30 @@
44
from testcontainers.core.waiting_utils import wait_container_is_ready
55

66
from ._emulator import CosmosDBEmulatorContainer
7-
__all__ = ["NoSQLEmulatorContainer"]
7+
__all__ = ["CosmosDBNoSQLEndpointContainer"]
88

99
NOSQL_PORT = 8081
1010

11-
class NoSQLEmulatorContainer(CosmosDBEmulatorContainer):
11+
class CosmosDBNoSQLEndpointContainer(CosmosDBEmulatorContainer):
1212
"""
1313
CosmosDB NoSQL enpoint Emulator.
1414
1515
Example:
16+
1617
.. doctest::
17-
>>> from testcontainers.cosmosdb import NoSQLEmulatorContainer
18-
>>> with NoSQLEmulatorContainer() as emulator:
19-
... db = emulator.insecure_sync_client().create_database_if_not_exists("test")
18+
19+
>>> from testcontainers.cosmosdb import CosmosDBNoSQLEndpointContainer
20+
>>> with CosmosDBNoSQLEndpointContainer() as emulator:
21+
... db = emulator.insecure_sync_client().create_database_if_not_exists("test")
2022
2123
.. doctest::
22-
>>> from testcontainers.cosmosdb import NoSQLEmulatorContainer
23-
>>> with NoSQLEmulatorContainer() as emulator:
24-
... client = CosmosClient(url=emulator.url, credential=emulator.key, connection_verify=False)
25-
... db = client.create_database_if_not_exists("test")
24+
25+
>>> from testcontainers.cosmosdb import CosmosDBNoSQLEndpointContainer
26+
>>> from azure.cosmos import CosmosClient
27+
28+
>>> with CosmosDBNoSQLEndpointContainer() as emulator:
29+
... client = CosmosClient(url=emulator.url, credential=emulator.key, connection_verify=False)
30+
... db = client.create_database_if_not_exists("test")
2631
2732
"""
2833

@@ -43,13 +48,13 @@ def url(self) -> str:
4348
"""
4449
return f"https://{self.host}:{self.port}"
4550

46-
def insecure_async_client(self) -> AsyncCosmosClient:
51+
def insecure_async_client(self):
4752
"""
4853
Returns an asynchronous CosmosClient instance
4954
"""
5055
return AsyncCosmosClient(url=self.url, credential=self.key, connection_verify=False)
5156

52-
def insecure_sync_client(self) -> SyncCosmosClient:
57+
def insecure_sync_client(self):
5358
"""
5459
Returns a synchronous CosmosClient instance
5560
"""
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import pytest
2-
from testcontainers.cosmosdb import MongoDBEmulatorContainer
2+
from testcontainers.cosmosdb import CosmosDBMongoEndpointContainer
33

44
def test_requires_a_version():
55
with pytest.raises(AssertionError, match="A MongoDB version is required"):
6-
MongoDBEmulatorContainer()
6+
CosmosDBMongoEndpointContainer()
77

88
# instanciates
9-
MongoDBEmulatorContainer(mongodb_version="4.0")
9+
CosmosDBMongoEndpointContainer(mongodb_version="4.0")
1010

1111
def test_runs():
12-
with MongoDBEmulatorContainer(mongodb_version="4.0", partition_count=1, bind_ports=False) as emulator:
12+
with CosmosDBMongoEndpointContainer(mongodb_version="4.0", partition_count=1, bind_ports=False) as emulator:
1313
assert emulator.env["AZURE_COSMOS_EMULATOR_ENABLE_MONGODB_ENDPOINT"] == "4.0"
1414
assert emulator.get_exposed_port(10255) is not None, "The MongoDB endpoint's port should be exposed"

modules/cosmosdb/tests/test_nosql.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pytest
2-
from testcontainers.cosmosdb import NoSQLEmulatorContainer
2+
from testcontainers.cosmosdb import CosmosDBNoSQLEndpointContainer
33

44
def test_runs():
5-
with NoSQLEmulatorContainer(partition_count=1, bind_ports=False) as emulator:
5+
with CosmosDBNoSQLEndpointContainer(partition_count=1, bind_ports=False) as emulator:
66
assert emulator.get_exposed_port(8081) is not None, "The NoSQL endpoint's port should be exposed"

0 commit comments

Comments
 (0)