testcontainers-java

Форк
0
84 строки · 3.2 Кб
1
package org.testcontainers.containers;
2

3
import org.junit.Test;
4
import org.testcontainers.PostgreSQLTestImages;
5

6
import static org.assertj.core.api.Assertions.assertThat;
7
import static org.assertj.core.api.Assertions.catchThrowable;
8

9
public class PostgreSQLConnectionURLTest {
10

11
    @Test
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('?'));
16

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("?");
22
    }
23

24
    @Test
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('?'));
29

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("?");
35
    }
36

37
    @Test
38
    public void shouldReturnOriginalURLWhenEmptyQueryString() {
39
        PostgreSQLContainer<?> postgres = new FixedJdbcUrlPostgreSQLContainer();
40
        String connectionUrl = postgres.constructUrlForConnection("");
41

42
        assertThat(postgres.getJdbcUrl()).as("Query String remains unchanged").isEqualTo(connectionUrl);
43
    }
44

45
    @Test
46
    public void shouldRejectInvalidQueryString() {
47
        assertThat(
48
            catchThrowable(() -> {
49
                new NoParamsUrlPostgreSQLContainer().constructUrlForConnection("stringtype=unspecified");
50
            })
51
        )
52
            .as("Fails when invalid query string provided")
53
            .isInstanceOf(IllegalArgumentException.class);
54
    }
55

56
    static class FixedJdbcUrlPostgreSQLContainer extends PostgreSQLContainer<FixedJdbcUrlPostgreSQLContainer> {
57

58
        public FixedJdbcUrlPostgreSQLContainer() {
59
            super(PostgreSQLTestImages.POSTGRES_TEST_IMAGE);
60
        }
61

62
        @Override
63
        public String getHost() {
64
            return "localhost";
65
        }
66

67
        @Override
68
        public Integer getMappedPort(int originalPort) {
69
            return 34532;
70
        }
71
    }
72

73
    static class NoParamsUrlPostgreSQLContainer extends PostgreSQLContainer<FixedJdbcUrlPostgreSQLContainer> {
74

75
        public NoParamsUrlPostgreSQLContainer() {
76
            super(PostgreSQLTestImages.POSTGRES_TEST_IMAGE);
77
        }
78

79
        @Override
80
        public String getJdbcUrl() {
81
            return "jdbc:postgresql://host:port/database";
82
        }
83
    }
84
}
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.