1
package org.testcontainers.containers;
4
import org.testcontainers.PostgreSQLTestImages;
6
import static org.assertj.core.api.Assertions.assertThat;
7
import static org.assertj.core.api.Assertions.catchThrowable;
9
public class PostgreSQLConnectionURLTest {
12
public void shouldCorrectlyAppendQueryString() {
13
PostgreSQLContainer<?> postgres = new FixedJdbcUrlPostgreSQLContainer();
14
String connectionUrl = postgres.constructUrlForConnection("?stringtype=unspecified&stringtype=unspecified");
15
String queryString = connectionUrl.substring(connectionUrl.indexOf('?'));
17
assertThat(queryString)
18
.as("Query String contains expected params")
19
.contains("?stringtype=unspecified&stringtype=unspecified");
20
assertThat(queryString.indexOf('?')).as("Query String starts with '?'").isZero();
21
assertThat(queryString.substring(1)).as("Query String does not contain extra '?'").doesNotContain("?");
25
public void shouldCorrectlyAppendQueryStringWhenNoBaseParams() {
26
PostgreSQLContainer<?> postgres = new NoParamsUrlPostgreSQLContainer();
27
String connectionUrl = postgres.constructUrlForConnection("?stringtype=unspecified&stringtype=unspecified");
28
String queryString = connectionUrl.substring(connectionUrl.indexOf('?'));
30
assertThat(queryString)
31
.as("Query String contains expected params")
32
.contains("?stringtype=unspecified&stringtype=unspecified");
33
assertThat(queryString.indexOf('?')).as("Query String starts with '?'").isZero();
34
assertThat(queryString.substring(1)).as("Query String does not contain extra '?'").doesNotContain("?");
38
public void shouldReturnOriginalURLWhenEmptyQueryString() {
39
PostgreSQLContainer<?> postgres = new FixedJdbcUrlPostgreSQLContainer();
40
String connectionUrl = postgres.constructUrlForConnection("");
42
assertThat(postgres.getJdbcUrl()).as("Query String remains unchanged").isEqualTo(connectionUrl);
46
public void shouldRejectInvalidQueryString() {
48
catchThrowable(() -> {
49
new NoParamsUrlPostgreSQLContainer().constructUrlForConnection("stringtype=unspecified");
52
.as("Fails when invalid query string provided")
53
.isInstanceOf(IllegalArgumentException.class);
56
static class FixedJdbcUrlPostgreSQLContainer extends PostgreSQLContainer<FixedJdbcUrlPostgreSQLContainer> {
58
public FixedJdbcUrlPostgreSQLContainer() {
59
super(PostgreSQLTestImages.POSTGRES_TEST_IMAGE);
63
public String getHost() {
68
public Integer getMappedPort(int originalPort) {
73
static class NoParamsUrlPostgreSQLContainer extends PostgreSQLContainer<FixedJdbcUrlPostgreSQLContainer> {
75
public NoParamsUrlPostgreSQLContainer() {
76
super(PostgreSQLTestImages.POSTGRES_TEST_IMAGE);
80
public String getJdbcUrl() {
81
return "jdbc:postgresql://host:port/database";