diff --git a/docs/modules/azure.md b/docs/modules/azure.md index 5e80270e90c..ef7be72159c 100644 --- a/docs/modules/azure.md +++ b/docs/modules/azure.md @@ -18,31 +18,31 @@ CosmosDBEmulatorContainer | [mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emula Start Azure CosmosDB Emulator during a test: -[Starting a Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:emulatorContainer +[Starting a Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:emulatorContainer Prepare KeyStore to use for SSL. -[Building KeyStore from certificate within container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:buildAndSaveNewKeyStore +[Building KeyStore from certificate within container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:buildAndSaveNewKeyStore Set system trust-store parameters to use already built KeyStore: -[Set system trust-store parameters](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:setSystemTrustStoreParameters +[Set system trust-store parameters](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:setSystemTrustStoreParameters Build Azure CosmosDB client: -[Build Azure CosmosDB client](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:buildClient +[Build Azure CosmosDB client](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:buildClient Test against the Emulator: -[Testing against Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:testWithClientAgainstEmulatorContainer +[Testing against Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:testWithClientAgainstEmulatorContainer ## Adding this module to your project dependencies diff --git a/modules/azure/src/main/java/org/testcontainers/azure/CosmosDBEmulatorContainer.java b/modules/azure/src/main/java/org/testcontainers/azure/CosmosDBEmulatorContainer.java new file mode 100644 index 00000000000..1080e780e6b --- /dev/null +++ b/modules/azure/src/main/java/org/testcontainers/azure/CosmosDBEmulatorContainer.java @@ -0,0 +1,58 @@ +package org.testcontainers.azure; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.DockerImageName; + +import java.security.KeyStore; + +/** + * Testcontainers implementation for CosmosDB Emulator. + *

+ * Supported image: {@code mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator} + *

+ * Exposed ports: 8081 + */ +public class CosmosDBEmulatorContainer extends GenericContainer { + + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse( + "mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator" + ); + + private static final int PORT = 8081; + + /** + * @param dockerImageName specified docker image name to run + */ + public CosmosDBEmulatorContainer(final DockerImageName dockerImageName) { + super(dockerImageName); + dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME); + withExposedPorts(PORT); + waitingFor(Wait.forLogMessage(".*Started\\r\\n$", 1)); + } + + /** + * @return new KeyStore built with PKCS12 + */ + public KeyStore buildNewKeyStore() { + return KeyStoreBuilder.buildByDownloadingCertificate(getEmulatorEndpoint(), getEmulatorKey()); + } + + /** + * Emulator key is a known constant and specified in Azure Cosmos DB Documents. + * This key is also used as password for emulator certificate file. + * + * @return predefined emulator key + * @see Azure Cosmos DB Documents + */ + public String getEmulatorKey() { + return "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; + } + + /** + * @return secure https emulator endpoint to send requests + */ + public String getEmulatorEndpoint() { + return "https://" + getHost() + ":" + getMappedPort(PORT); + } +} diff --git a/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java b/modules/azure/src/main/java/org/testcontainers/azure/KeyStoreBuilder.java similarity index 98% rename from modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java rename to modules/azure/src/main/java/org/testcontainers/azure/KeyStoreBuilder.java index f7b6af370ac..123c3a82068 100644 --- a/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java +++ b/modules/azure/src/main/java/org/testcontainers/azure/KeyStoreBuilder.java @@ -1,4 +1,4 @@ -package org.testcontainers.containers; +package org.testcontainers.azure; import okhttp3.Cache; import okhttp3.OkHttpClient; diff --git a/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java b/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java index a1cfdeaf124..53ecbc18835 100644 --- a/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java +++ b/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java @@ -1,57 +1,25 @@ package org.testcontainers.containers; -import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.DockerImageName; -import java.security.KeyStore; - /** - * Testcontainers implementation for CosmosDB Emulator. - *

- * Supported image: {@code mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator} - *

- * Exposed ports: 8081 + * Original Testcontainers implementation for CosmosDB Emulator. + * + * @deprecated Please use {@link org.testcontainers.azure.CosmosDBEmulatorContainer}. */ -public class CosmosDBEmulatorContainer extends GenericContainer { - - private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse( - "mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator" - ); - - private static final int PORT = 8081; +@Deprecated +public class CosmosDBEmulatorContainer extends org.testcontainers.azure.CosmosDBEmulatorContainer { /** * @param dockerImageName specified docker image name to run + * @deprecated Please use {@link org.testcontainers.azure.CosmosDBEmulatorContainer}. */ + @Deprecated public CosmosDBEmulatorContainer(final DockerImageName dockerImageName) { super(dockerImageName); - dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME); - withExposedPorts(PORT); - waitingFor(Wait.forLogMessage(".*Started\\r\\n$", 1)); - } - - /** - * @return new KeyStore built with PKCS12 - */ - public KeyStore buildNewKeyStore() { - return KeyStoreBuilder.buildByDownloadingCertificate(getEmulatorEndpoint(), getEmulatorKey()); - } - - /** - * Emulator key is a known constant and specified in Azure Cosmos DB Documents. - * This key is also used as password for emulator certificate file. - * - * @return predefined emulator key - * @see Azure Cosmos DB Documents - */ - public String getEmulatorKey() { - return "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; - } - - /** - * @return secure https emulator endpoint to send requests - */ - public String getEmulatorEndpoint() { - return "https://" + getHost() + ":" + getMappedPort(PORT); + logger() + .warn( + "The CosmosDBEmulatorContainer moved to the org.testcontainers.azure package. This old class will be removed in a future version." + ); } } diff --git a/modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java b/modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java similarity index 84% rename from modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java rename to modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java index 140bd64c39a..4b2508e1b7b 100644 --- a/modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java +++ b/modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java @@ -1,4 +1,4 @@ -package org.testcontainers.containers; +package org.testcontainers.azure; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.CosmosClientBuilder; @@ -46,8 +46,8 @@ public static void restoreOriginalSystemProperties() { @Test public void testWithCosmosClient() throws Exception { // buildAndSaveNewKeyStore { - Path keyStoreFile = tempFolder.newFile("azure-cosmos-emulator.keystore").toPath(); - KeyStore keyStore = emulator.buildNewKeyStore(); + final Path keyStoreFile = tempFolder.newFile("azure-cosmos-emulator.keystore").toPath(); + final KeyStore keyStore = emulator.buildNewKeyStore(); keyStore.store(new FileOutputStream(keyStoreFile.toFile()), emulator.getEmulatorKey().toCharArray()); // } // setSystemTrustStoreParameters { @@ -56,7 +56,7 @@ public void testWithCosmosClient() throws Exception { System.setProperty("javax.net.ssl.trustStoreType", "PKCS12"); // } // buildClient { - CosmosAsyncClient client = new CosmosClientBuilder() + final CosmosAsyncClient client = new CosmosClientBuilder() .gatewayMode() .endpointDiscoveryEnabled(false) .endpoint(emulator.getEmulatorEndpoint()) @@ -64,9 +64,9 @@ public void testWithCosmosClient() throws Exception { .buildAsyncClient(); // } // testWithClientAgainstEmulatorContainer { - CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists("Azure").block(); + final CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists("Azure").block(); assertThat(databaseResponse.getStatusCode()).isEqualTo(201); - CosmosContainerResponse containerResponse = client + final CosmosContainerResponse containerResponse = client .getDatabase("Azure") .createContainerIfNotExists("ServiceContainer", "/name") .block();