package org.springframework.cloud.service.common;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class RelationalServiceInfoTest {
@Test
public void jdbcUrl() {
RelationalServiceInfo serviceInfo = createServiceInfoWithJdbcUrl("bad://bad:bad@bad:1234/bad",
"jdbc:jdbcdbtype://hostname:1234/database?user=username&password=password");
assertEquals("jdbc:jdbcdbtype://hostname:1234/database?user=username&password=password", serviceInfo.getJdbcUrl());
}
@Test
public void jdbcFullUrl() {
RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://username:password@hostname:1234/database");
assertEquals("jdbc:jdbcdbtype://hostname:1234/database?user=username&password=password", serviceInfo.getJdbcUrl());
}
@Test
public void jdbcUrlNoPort() {
RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://username:password@hostname/database");
assertEquals("jdbc:jdbcdbtype://hostname/database?user=username&password=password", serviceInfo.getJdbcUrl());
}
@Test
public void jdbcUrlNoUsernamePassword() {
RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://hostname:1234/database");
assertEquals("jdbc:jdbcdbtype://hostname:1234/database", serviceInfo.getJdbcUrl());
}
@Test(expected = java.lang.IllegalArgumentException.class)
public void jdbcUrlNoPassword() {
createServiceInfo("dbtype://username@hostname/database");
}
@Test
public void jdbcUrlWithQuery() {
RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://username:password@hostname:1234/database?reconnect=true");
assertEquals("jdbc:jdbcdbtype://hostname:1234/database?user=username&password=password&reconnect=true", serviceInfo.getJdbcUrl());
}
@Test
public void jdbcUrlWithQueryNoUsernamePassword() {
RelationalServiceInfo serviceInfo = createServiceInfo("dbtype://hostname:1234/database?reconnect=true");
assertEquals("jdbc:jdbcdbtype://hostname:1234/database?reconnect=true", serviceInfo.getJdbcUrl());
}
private RelationalServiceInfo createServiceInfo(final String uri) {
return new RelationalServiceInfo("test", uri, "jdbcdbtype") {
};
}
private RelationalServiceInfo createServiceInfoWithJdbcUrl(final String uri, final String jdbcUrl) {
return new RelationalServiceInfo("test", uri, jdbcUrl, "jdbcdbtype") {
};
}
}