package org.springframework.cloud.cloudfoundry; import static org.mockito.Mockito.when; import static org.springframework.cloud.service.common.PostgresqlServiceInfo.POSTGRES_SCHEME; import java.util.List; import org.junit.Test; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.common.PostgresqlServiceInfo; /** * @author Ramnivas Laddad */ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFoundryConnectorRelationalServiceTest { @Test public void postgresqlServiceCreation() { String name1 = "database-1"; String name2 = "database-2"; when(mockEnvironment.getEnvValue("VCAP_SERVICES")) .thenReturn(getServicesPayload( getPostgresqlServicePayload("postgresql-1", hostname, port, username, password, name1), getPostgresqlServicePayload("postgresql-2", hostname, port, username, password, name2))); List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos(); ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1"); ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2"); assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); assertServiceFoundOfType(info2, PostgresqlServiceInfo.class); assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1); assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2); assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1); assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2); } @Test public void postgresqlServiceCreationNoLabelNoTags() { String name1 = "database-1"; String name2 = "database-2"; when(mockEnvironment.getEnvValue("VCAP_SERVICES")) .thenReturn(getServicesPayload( getPostgresqlServicePayloadNoLabelNoTags("postgresql-1", hostname, port, username, password, name1), getPostgresqlServicePayloadNoLabelNoTags("postgresql-2", hostname, port, username, password, name2))); List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos(); ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1"); ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2"); assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); assertServiceFoundOfType(info2, PostgresqlServiceInfo.class); assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1); assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2); assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1); assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2); } @Test public void postgresqlServiceCreationWithJdbcUrl() { String name1 = "database-1"; String name2 = "database-2"; when(mockEnvironment.getEnvValue("VCAP_SERVICES")) .thenReturn(getServicesPayload( getPostgresqlServicePayloadWithJdbcUrl("postgresql-1", hostname, port, username, password, name1), getPostgresqlServicePayloadWithJdbcUrl("postgresql-2", hostname, port, username, password, name2))); List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos(); ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1"); ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2"); assertServiceFoundOfType(info1, PostgresqlServiceInfo.class); assertServiceFoundOfType(info2, PostgresqlServiceInfo.class); assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1); assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2); assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1); assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2); } private String getPostgresqlServicePayload(String serviceName, String hostname, int port, String user, String password, String name) { return getRelationalPayload("test-postgresql-info.json", serviceName, hostname, port, user, password, name); } private String getPostgresqlServicePayloadNoLabelNoTags(String serviceName, String hostname, int port, String user, String password, String name) { return getRelationalPayload("test-postgresql-info-no-label-no-tags.json", serviceName, hostname, port, user, password, name); } private String getPostgresqlServicePayloadWithJdbcUrl(String serviceName, String hostname, int port, String user, String password, String name) { return getRelationalPayload("test-postgresql-info-jdbc-url.json", serviceName, hostname, port, user, password, name); } }