Skip to content

Commit b03f493

Browse files
committed
feat(module/mariadb): Add getR2dbcUrl() to MariaDBR2DBCDatabaseContainer
This adds a static helper method `getR2dbcUrl(MariaDBContainer)` to generate a valid R2DBC connection string. This simplifies configuration for R2DBC users. Relates to #8797
1 parent f2a6fe9 commit b03f493

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

modules/mariadb/src/main/java/org/testcontainers/containers/MariaDBR2DBCDatabaseContainer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,15 @@ public ConnectionFactoryOptions configure(ConnectionFactoryOptions options) {
3232
.option(ConnectionFactoryOptions.PASSWORD, container.getPassword())
3333
.build();
3434
}
35+
36+
public static String getR2dbcUrl(MariaDBContainer<?> container) {
37+
return String.format(
38+
"r2dbc:mariadb://%s:%s@%s:%d/%s",
39+
container.getUsername(),
40+
container.getPassword(),
41+
container.getHost(),
42+
container.getMappedPort(MariaDBContainer.MARIADB_PORT),
43+
container.getDatabaseName()
44+
);
45+
}
3546
}

modules/mariadb/src/test/java/org/testcontainers/containers/MariaDBR2DBCDatabaseContainerTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package org.testcontainers.containers;
22

33
import io.r2dbc.spi.ConnectionFactoryOptions;
4+
import org.junit.jupiter.api.Test;
5+
import org.testcontainers.MariaDBTestImages;
46
import org.testcontainers.r2dbc.AbstractR2DBCDatabaseContainerTest;
57
import org.testcontainers.utility.DockerImageName;
68

9+
import static org.assertj.core.api.Assertions.assertThat;
10+
711
public class MariaDBR2DBCDatabaseContainerTest extends AbstractR2DBCDatabaseContainerTest<MariaDBContainer<?>> {
812

913
@Override
@@ -20,4 +24,25 @@ protected String createR2DBCUrl() {
2024
protected MariaDBContainer<?> createContainer() {
2125
return new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.39"));
2226
}
27+
28+
@Test
29+
public void testGetR2dbcUrl() {
30+
try (MariaDBContainer<?> container = new MariaDBContainer<>(MariaDBTestImages.MARIADB_IMAGE)) {
31+
container.start();
32+
33+
String r2dbcUrl = MariaDBR2DBCDatabaseContainer.getR2dbcUrl(container);
34+
35+
String user = container.getUsername();
36+
String password = container.getPassword();
37+
String host = container.getHost();
38+
Integer port = container.getMappedPort(MariaDBContainer.MARIADB_PORT);
39+
String db = container.getDatabaseName();
40+
41+
String expectedPattern = String.format("^r2dbc:mariadb://%s:%s@%s:%d/%s$", user, password, host, port, db);
42+
43+
assertThat(r2dbcUrl)
44+
.as("URL must strictly match format 'r2dbc:mariadb://user:pass@host:port/db'")
45+
.matches(expectedPattern);
46+
}
47+
}
2348
}

0 commit comments

Comments
 (0)