Skip to content

Commit 8ad81b4

Browse files
author
Wouter Blancquaert
committed
Add default database name to MongoDB Atlas
1 parent 6e104da commit 8ad81b4

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

modules/mongodb/src/main/java/org/testcontainers/mongodb/MongoDBAtlasLocalContainer.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public class MongoDBAtlasLocalContainer extends GenericContainer<MongoDBAtlasLoc
1717

1818
private static final int MONGODB_INTERNAL_PORT = 27017;
1919

20+
private static final String MONGODB_DATABASE_NAME_DEFAULT = "test";
21+
22+
private static final String DIRECT_CONNECTION = "directConnection=true";
23+
2024
public MongoDBAtlasLocalContainer(final String dockerImageName) {
2125
this(DockerImageName.parse(dockerImageName));
2226
}
@@ -33,6 +37,32 @@ public MongoDBAtlasLocalContainer(final DockerImageName dockerImageName) {
3337
* Get the connection string to MongoDB.
3438
*/
3539
public String getConnectionString() {
36-
return String.format("mongodb://%s:%d/?directConnection=true", getHost(), getMappedPort(MONGODB_INTERNAL_PORT));
40+
return baseConnectionString() + "/?" + DIRECT_CONNECTION;
41+
}
42+
43+
private String baseConnectionString() {
44+
return String.format("mongodb://%s:%d", getHost(), getMappedPort(MONGODB_INTERNAL_PORT));
45+
}
46+
47+
/**
48+
* Gets a database specific connection string for the default {@value #MONGODB_DATABASE_NAME_DEFAULT} database.
49+
*
50+
* @return a database specific connection string.
51+
*/
52+
public String getDatabaseConnectionString() {
53+
return getDatabaseConnectionString(MONGODB_DATABASE_NAME_DEFAULT);
54+
}
55+
56+
/**
57+
* Gets a database specific connection string for a provided <code>databaseName</code>.
58+
*
59+
* @param databaseName a database name.
60+
* @return a database specific connection string.
61+
*/
62+
public String getDatabaseConnectionString(final String databaseName) {
63+
if (!isRunning()) {
64+
throw new IllegalStateException("MongoDBContainer should be started first");
65+
}
66+
return baseConnectionString() + "/" + databaseName + "?" + DIRECT_CONNECTION;
3767
}
3868
}

modules/mongodb/src/test/java/org/testcontainers/mongodb/MongoDBAtlasLocalContainerTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,26 @@ public void getConnectionString() {
3636
}
3737
}
3838

39+
@Test
40+
public void getDatabaseConnectionString() {
41+
try (
42+
MongoDBAtlasLocalContainer container = new MongoDBAtlasLocalContainer("mongodb/mongodb-atlas-local:7.0.9")
43+
) {
44+
container.start();
45+
String databaseConnectionString = container.getDatabaseConnectionString();
46+
assertThat(databaseConnectionString).isNotNull();
47+
assertThat(databaseConnectionString).startsWith("mongodb://");
48+
assertThat(databaseConnectionString)
49+
.isEqualTo(
50+
String.format(
51+
"mongodb://%s:%d/test?directConnection=true",
52+
container.getHost(),
53+
container.getFirstMappedPort()
54+
)
55+
);
56+
}
57+
}
58+
3959
@Test
4060
public void createAtlasIndexAndSearchIt() throws Exception {
4161
try (

0 commit comments

Comments
 (0)