package org.springframework.cloud.cloudfoundry;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
/**
*
* @author Ramnivas Laddad
*
*/
public abstract class AbstractCloudFoundryConnectorRelationalServiceTest extends AbstractCloudFoundryConnectorTest {
protected String getRelationalPayload(String templateFile, String serviceName,
String hostname, int port, String user, String password, String name) {
String payload = readTestDataFile(templateFile);
payload = payload.replace("$serviceName", serviceName);
payload = payload.replace("$hostname", hostname);
payload = payload.replace("$port", Integer.toString(port));
payload = payload.replace("$user", user);
payload = payload.replace("$password", password);
payload = payload.replace("$name", name);
return payload;
}
protected void assertJdbcUrlEqual(ServiceInfo serviceInfo, String scheme, String name) {
assertThat(serviceInfo, instanceOf(RelationalServiceInfo.class));
assertEquals(getJdbcUrl(scheme, name), ((RelationalServiceInfo) serviceInfo).getJdbcUrl());
}
protected void assertJdbcShemeSpecificPartEqual(ServiceInfo serviceInfo, String scheme, String name) {
assertThat(serviceInfo, instanceOf(RelationalServiceInfo.class));
String jdbcUrl = getJdbcUrl(scheme, name);
assertEquals(jdbcUrl.substring(5), ((RelationalServiceInfo) serviceInfo).getSchemeSpecificPart());
}
protected String getJdbcUrl(String databaseType, String name) {
// this should be cleaned up more broadly; pull into RelationalServiceInfo interface?
String jdbcUrlDatabaseType = databaseType;
if (databaseType.equals("postgres")) {
jdbcUrlDatabaseType = "postgresql";
}
return "jdbc:" + jdbcUrlDatabaseType + "://" + hostname + ":" + port + "/" + name +
"?user=" + username + "&password=" + password;
}
}