From d510408e903779bdc7fb0b6dbc9c646b5ffeaf9d Mon Sep 17 00:00:00 2001 From: Csaba Kos Date: Thu, 20 Jun 2019 13:22:59 -0500 Subject: [PATCH] Allow user without password in UriInfo. --- .../main/java/org/springframework/cloud/util/UriInfo.java | 4 +++- .../springframework/cloud/StandardUriInfoFactoryTest.java | 7 +++++-- .../cloud/service/common/RelationalServiceInfoTest.java | 8 +++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/spring-cloud-core/src/main/java/org/springframework/cloud/util/UriInfo.java b/spring-cloud-core/src/main/java/org/springframework/cloud/util/UriInfo.java index 4f3baf0..b69ae14 100644 --- a/spring-cloud-core/src/main/java/org/springframework/cloud/util/UriInfo.java +++ b/spring-cloud-core/src/main/java/org/springframework/cloud/util/UriInfo.java @@ -129,7 +129,9 @@ public class UriInfo { if (userInfo != null) { String[] userPass = userInfo.split(":"); - if (userPass.length != 2) { + if (userPass.length == 1) { + return new String[]{userPass[0], null}; + } else if (userPass.length != 2) { throw new IllegalArgumentException("Bad userinfo in URI: " + uri); } return userPass; diff --git a/spring-cloud-core/src/test/java/org/springframework/cloud/StandardUriInfoFactoryTest.java b/spring-cloud-core/src/test/java/org/springframework/cloud/StandardUriInfoFactoryTest.java index 9ad53a7..4ddded1 100644 --- a/spring-cloud-core/src/test/java/org/springframework/cloud/StandardUriInfoFactoryTest.java +++ b/spring-cloud-core/src/test/java/org/springframework/cloud/StandardUriInfoFactoryTest.java @@ -40,10 +40,13 @@ public class StandardUriInfoFactoryTest { assertEquals(uri, result.getUriString()); } - @Test(expected = IllegalArgumentException.class) + @Test public void createWithUsernameNoPassword() { String uri = "mysql://joe@localhost:1527/big_db"; - factory.createUri(uri); + UriInfo result = factory.createUri(uri); + + assertUriInfoEquals(result, "localhost", 1527, "joe", null, "big_db", null); + assertEquals(uri, result.getUriString()); } @Test diff --git a/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/RelationalServiceInfoTest.java b/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/RelationalServiceInfoTest.java index a4fb959..691e4a0 100644 --- a/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/RelationalServiceInfoTest.java +++ b/spring-cloud-core/src/test/java/org/springframework/cloud/service/common/RelationalServiceInfoTest.java @@ -35,9 +35,11 @@ public class RelationalServiceInfoTest { assertEquals("jdbc:jdbcdbtype://hostname:1234/database", serviceInfo.getJdbcUrl()); } - @Test(expected = java.lang.IllegalArgumentException.class) + @Test public void jdbcUrlNoPassword() { - createServiceInfo("dbtype://username@hostname/database"); + RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://username@hostname/database"); + + assertEquals("jdbc:jdbcdbtype://hostname/database?user=username", serviceInfo.getJdbcUrl()); } @Test @@ -64,4 +66,4 @@ public class RelationalServiceInfoTest { }; } -} \ No newline at end of file +}