diff --git a/modules/jdbc/src/main/java/org/testcontainers/jdbc/ConnectionUrl.java b/modules/jdbc/src/main/java/org/testcontainers/jdbc/ConnectionUrl.java index e1309f66197..e911889625b 100644 --- a/modules/jdbc/src/main/java/org/testcontainers/jdbc/ConnectionUrl.java +++ b/modules/jdbc/src/main/java/org/testcontainers/jdbc/ConnectionUrl.java @@ -107,7 +107,7 @@ private void parseUrl() { //In case it matches to the default pattern Matcher dbInstanceMatcher = Patterns.DB_INSTANCE_MATCHING_PATTERN.matcher(dbHostString); if (dbInstanceMatcher.matches()) { - databaseHost = Optional.of(dbInstanceMatcher.group("databaseHost")); + databaseHost = Optional.ofNullable(dbInstanceMatcher.group("databaseHost")); databasePort = Optional.ofNullable(dbInstanceMatcher.group("databasePort")).map(Integer::valueOf); databaseName = Optional.of(dbInstanceMatcher.group("databaseName")); } @@ -227,13 +227,13 @@ public interface Patterns { //Matches to part of string - hostname:port/databasename Pattern DB_INSTANCE_MATCHING_PATTERN = Pattern.compile( - "(?[^:]+)" + + "((?[^:]+)" + "(:(?[0-9]+))?" + "(" + "(?[:/])" + "|" + ";databaseName=" + - ")" + + ")|/)" + "(?[^\\\\?]+)" ); diff --git a/modules/jdbc/src/test/java/org/testcontainers/jdbc/ConnectionUrlTest.java b/modules/jdbc/src/test/java/org/testcontainers/jdbc/ConnectionUrlTest.java index 123690d95f6..d118a2a1b22 100644 --- a/modules/jdbc/src/test/java/org/testcontainers/jdbc/ConnectionUrlTest.java +++ b/modules/jdbc/src/test/java/org/testcontainers/jdbc/ConnectionUrlTest.java @@ -111,4 +111,12 @@ public void testDaemonCapture() { assertThat(url.isInDaemonMode()).as("Daemon flag is set to true.").isTrue(); } + + @Test + public void testHostLessUrl() { + String urlString = "jdbc:tc:mysql:///dbname"; + ConnectionUrl url = ConnectionUrl.newInstance(urlString); + + assertThat(url.getDatabaseName()).as("Database Name value is expected").contains("dbname"); + } }