test: Fixed `AbstractConfigurationIT#testPutMessageInNewChatRoom()`
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / AbstractConfigurationIT.java
index 3f25ced..452e424 100644 (file)
@@ -3,8 +3,6 @@ package de.juplo.kafka.chat.backend;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import de.juplo.kafka.chat.backend.api.ChatRoomInfoTo;
 import lombok.extern.slf4j.Slf4j;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
@@ -190,44 +188,33 @@ public abstract class AbstractConfigurationIT
   @DisplayName("A message can be put into a newly created chat-room")
   void testPutMessageInNewChatRoom() throws IOException
   {
+    ChatRoomInfoTo chatRoomInfo;
+    do
+    {
+      // The first request creates a new chat-room
+      // It must be repeated, until a chat-room was created,
+      // that is owned by the instance
+      chatRoomInfo = webTestClient
+          .post()
+          .uri("http://localhost:{port}/create", port)
+          .contentType(MediaType.TEXT_PLAIN)
+          .bodyValue("bar")
+          .accept(MediaType.APPLICATION_JSON)
+          .exchange()
+          .returnResult(ChatRoomInfoTo.class)
+          .getResponseBody()
+          .retry(30)
+          .blockFirst();
+    }
+    while(!(chatRoomInfo.getShard() == null || chatRoomInfo.getShard().intValue() == 2));
+
+    UUID chatRoomId = chatRoomInfo.getId();
+
     Awaitility
         .await()
         .atMost(Duration.ofSeconds(15))
         .untilAsserted(() ->
         {
-          // The first request creates a new chat-room
-          // It must be repeated, until a chat-room was created,
-          // that is owned by the instance
-          byte[] result = webTestClient
-              .post()
-              .uri("http://localhost:{port}/create", port)
-              .contentType(MediaType.TEXT_PLAIN)
-              .bodyValue("bar")
-              .accept(MediaType.APPLICATION_JSON)
-              .exchange()
-              .expectStatus().isOk()
-              .expectBody()
-                .jsonPath("$.id").exists()
-                .jsonPath("$.name").isEqualTo("bar")
-                .jsonPath("$.shard").value(new BaseMatcher<Integer>() {
-                  @Override
-                  public boolean matches(Object actual)
-                  {
-                    return actual == null
-                        ? true
-                        : actual.equals(Integer.valueOf(2));
-                  }
-
-                  @Override
-                  public void describeTo(Description description)
-                  {
-                    description.appendText("shard has expected value 2, or is empty");
-                  }
-                })
-              .returnResult()
-              .getResponseBody();
-          ChatRoomInfoTo chatRoomInfo = objectMapper.readValue(result, ChatRoomInfoTo.class);
-          UUID chatRoomId = chatRoomInfo.getId();
           webTestClient
               .put()
               .uri(