feat: Refined `ChatBackendApplicationTest`
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / ChatBackendApplicationTests.java
index 9accd8a..9dac22e 100644 (file)
@@ -1,13 +1,54 @@
 package de.juplo.kafka.chat.backend;
 
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.server.LocalServerPort;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.reactive.server.WebTestClient;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
 
-@SpringBootTest(properties = "chat.backend.storage-directory=target/test-classes/data/")
+import java.time.Duration;
+
+
+@SpringBootTest(
+               webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
+               properties = "chat.backend.storage-directory=target/test-classes/data/files")
 class ChatBackendApplicationTests
 {
+       @LocalServerPort
+       private int port;
+       @Autowired
+       private WebTestClient webTestClient;
+
        @Test
        void contextLoads()
        {
+               Awaitility
+                               .await()
+                               .atMost(Duration.ofSeconds(15))
+                               .untilAsserted(() ->
+                               {
+                                       webTestClient
+                                                       .get()
+                                                       .uri("http://localhost:{port}/actuator/health", port)
+                                                       .exchange()
+                                                       .expectStatus().isOk()
+                                                       .expectBody().jsonPath("$.status").isEqualTo("UP");
+                                       webTestClient
+                                                       .get()
+                                                       .uri("http://localhost:{port}/618e89ae-fdc0-4c65-8055-f49908295e8f", port)
+                                                       .accept(MediaType.APPLICATION_JSON)
+                                                       .exchange()
+                                                       .expectStatus().isOk()
+                                                       .expectBody().jsonPath("$.name").isEqualTo("Peter's Chat-Room");
+                                       webTestClient
+                                                       .get()
+                                                       .uri("http://localhost:{port}/4ace69b7-a79f-481b-ad0d-d756d60b66ec/ute/1478", port)
+                                                       .accept(MediaType.APPLICATION_JSON)
+                                                       .exchange()
+                                                       .expectStatus().isOk()
+                                                       .expectBody().jsonPath("$.text").isEqualTo("Nachricht Nr. 1478");
+                               });
        }
 }