WIP:it
[demos/testing] / src / test / java / de / juplo / demo / DemoApplicationIT.java
1 package de.juplo.demo;
2
3 import de.juplo.demo.DemoApplicationIT.Application;
4 import java.net.URI;
5 import org.junit.jupiter.api.BeforeEach;
6 import org.junit.jupiter.api.Test;
7 import static org.mockserver.matchers.Times.exactly;
8 import static org.mockserver.model.HttpForward.forward;
9 import static org.mockserver.model.HttpRequest.request;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.context.ApplicationContext;
12 import org.springframework.context.annotation.Bean;
13 import org.springframework.context.annotation.Configuration;
14 import org.springframework.http.MediaType;
15 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
16 import org.springframework.test.web.reactive.server.WebTestClient;
17 import org.springframework.web.reactive.function.client.WebClient;
18
19 @SpringJUnitConfig(Application.class)
20 class DemoApplicationIT extends IntegrationTestBase
21 {
22   WebTestClient webClient;
23   @Autowired
24   ApplicationContext context;
25
26
27   @BeforeEach
28   void setUp()
29   {
30     webClient = WebTestClient.bindToApplicationContext(context).build();
31   }
32
33
34   @Test
35   void test() throws Exception
36   {
37     MOCK_SERVER
38         .when(request().withPath("/test.txt"), exactly(1))
39         .forward(forward()
40             .withHost(NGINX.getContainerIpAddress())
41             .withPort(NGINX.getMappedPort(80)));
42     webClient
43         .get()
44         .uri(URI.create("http://S.U.T/?path=test.txt"))
45         .exchange()
46         .expectStatus().isOk()
47         .expectHeader().contentType(MediaType.TEXT_HTML)
48         .expectBody(String.class).isEqualTo("Hello World!\n");
49   }
50
51   @Configuration
52   static class Application
53   {
54     @Bean
55     RemoteContentService service()
56     {
57       return new RemoteContentService(
58           WebClient
59               .builder()
60               .baseUrl("http://localhost:" + MOCK_SERVER.getLocalPort())
61               .build());
62     }
63
64     @Bean
65     HtmlController controller(RemoteContentService service)
66     {
67       return new HtmlController(service);
68     }
69   }
70 }