testcontainers-java

Форк
0
78 строк · 2.8 Кб
1
package org.testcontainers.junit;
2

3
import lombok.Cleanup;
4
import org.junit.BeforeClass;
5
import org.junit.Rule;
6
import org.junit.Test;
7
import org.testcontainers.containers.NginxContainer;
8
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
9
import org.testcontainers.utility.DockerImageName;
10
import org.testcontainers.utility.MountableFile;
11

12
import java.io.BufferedReader;
13
import java.io.File;
14
import java.io.FileOutputStream;
15
import java.io.IOException;
16
import java.io.InputStreamReader;
17
import java.io.PrintStream;
18
import java.net.URL;
19
import java.net.URLConnection;
20

21
import static org.assertj.core.api.Assertions.assertThat;
22

23
public class SimpleNginxTest {
24

25
    private static final DockerImageName NGINX_IMAGE = DockerImageName.parse("nginx:1.27.0-alpine3.19-slim");
26

27
    private static String tmpDirectory = System.getProperty("user.home") + "/.tmp-test-container";
28

29
    // creatingContainer {
30
    @Rule
31
    public NginxContainer<?> nginx = new NginxContainer<>(NGINX_IMAGE)
32
        .withCopyFileToContainer(MountableFile.forHostPath(tmpDirectory), "/usr/share/nginx/html")
33
        .waitingFor(new HttpWaitStrategy());
34

35
    // }
36

37
    @SuppressWarnings({ "Duplicates", "ResultOfMethodCallIgnored" })
38
    @BeforeClass
39
    public static void setupContent() throws Exception {
40
        // addCustomContent {
41
        // Create a temporary dir
42
        File contentFolder = new File(tmpDirectory);
43
        contentFolder.mkdir();
44
        contentFolder.deleteOnExit();
45

46
        // And "hello world" HTTP file
47
        File indexFile = new File(contentFolder, "index.html");
48
        indexFile.deleteOnExit();
49
        @Cleanup
50
        PrintStream printStream = new PrintStream(new FileOutputStream(indexFile));
51
        printStream.println("<html><body>Hello World!</body></html>");
52
        // }
53
    }
54

55
    @Test
56
    public void testSimple() throws Exception {
57
        // getFromNginxServer {
58
        URL baseUrl = nginx.getBaseUrl("http", 80);
59

60
        assertThat(responseFromNginx(baseUrl))
61
            .as("An HTTP GET from the Nginx server returns the index.html from the custom content directory")
62
            .contains("Hello World!");
63
        // }
64
        assertHasCorrectExposedAndLivenessCheckPorts(nginx);
65
    }
66

67
    private void assertHasCorrectExposedAndLivenessCheckPorts(NginxContainer<?> nginxContainer) throws Exception {
68
        assertThat(nginxContainer.getExposedPorts()).containsExactly(80);
69
        assertThat(nginxContainer.getLivenessCheckPortNumbers()).containsExactly(nginxContainer.getMappedPort(80));
70
    }
71

72
    private static String responseFromNginx(URL baseUrl) throws IOException {
73
        URLConnection urlConnection = baseUrl.openConnection();
74
        @Cleanup
75
        BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
76
        return reader.readLine();
77
    }
78
}
79

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

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

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

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