@@ -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}
0 commit comments