From e59086ac963dcf9a810bdfec2d8ef7d6529d38cf Mon Sep 17 00:00:00 2001 From: Jake Zingler Date: Tue, 2 Jan 2018 16:53:48 -0800 Subject: [PATCH] Adds test for special chars in postgres url Signed-off-by: Biju Kunjummen --- ...CloudFoundryConnectorMysqlServiceTest.java | 19 ++++++------ ...FoundryConnectorPostgresqlServiceTest.java | 31 +++++++++++++++++++ 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java index 1bbe624..c2600b9 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorMysqlServiceTest.java @@ -1,17 +1,17 @@ package org.springframework.cloud.cloudfoundry; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; +import static org.springframework.cloud.service.common.MysqlServiceInfo.MYSQL_SCHEME; + +import java.util.List; + import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.common.MysqlServiceInfo; import org.springframework.cloud.service.common.RelationalServiceInfo; import org.springframework.cloud.util.UriInfo; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.when; -import static org.springframework.cloud.service.common.MysqlServiceInfo.MYSQL_SCHEME; - /** * * @author Ramnivas Laddad @@ -258,8 +258,9 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC hostname, port, user, password, name); } - private String getJdbcUrl(String hostname, int port, String name, String user, String password) { - return "jdbc:mysql://" + hostname + ":" + port + "/" + name + - "?user=" + UriInfo.urlEncode(user) + "&password=" + UriInfo.urlEncode(password); + private String getJdbcUrl(String hostname, int port, String name, String user, + String password) { + return String.format("jdbc:mysql://%s:%d/%s?user=%s&password=%s", hostname, port, + name, UriInfo.urlEncode(user), UriInfo.urlEncode(password)); } } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java index f336ee4..806cd21 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorPostgresqlServiceTest.java @@ -1,5 +1,6 @@ package org.springframework.cloud.cloudfoundry; +import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import static org.springframework.cloud.service.common.PostgresqlServiceInfo.POSTGRES_SCHEME; @@ -8,6 +9,8 @@ import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.common.PostgresqlServiceInfo; +import org.springframework.cloud.service.common.RelationalServiceInfo; +import org.springframework.cloud.util.UriInfo; /** * @author Ramnivas Laddad @@ -37,6 +40,29 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2); } + @Test + public void postgresqlWithSpecialCharsServiceCreation() { + String userWithSpecialChars = "u%u:u+"; + String passwordWithSpecialChars = "p%p:p+"; + + String name1 = "database-1"; + when(mockEnvironment.getEnvValue("VCAP_SERVICES")).thenReturn( + getServicesPayload(getPostgresqlServicePayload("postgresql-1", hostname, + port, userWithSpecialChars, passwordWithSpecialChars, name1))); + + List serviceInfos = testCloudConnector.getServiceInfos(); + ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1"); + + assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); + + assertEquals(getJdbcUrl(hostname, port, userWithSpecialChars, + passwordWithSpecialChars, name1), + ((RelationalServiceInfo) info1).getJdbcUrl()); + + assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, + userWithSpecialChars, passwordWithSpecialChars, name1); + } + @Test public void postgresqlServiceCreationNoLabelNoTags() { String name1 = "database-1"; @@ -104,4 +130,9 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou hostname, port, user, password, name); } + private String getJdbcUrl(String hostname, int port, String user, String password, + String name) { + return String.format("jdbc:postgresql://%s:%d/%s?user=%s&password=%s", hostname, + port, name, UriInfo.urlEncode(user), UriInfo.urlEncode(password)); + } }