import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.http.MediaType;
+import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.testcontainers.shaded.org.awaitility.Awaitility;
import java.io.IOException;
import java.time.Duration;
import java.util.UUID;
+import java.util.concurrent.atomic.AtomicBoolean;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.endsWith;
@Slf4j
+@DirtiesContext
public abstract class AbstractConfigurationIT
{
final static String EXISTING_CHATROOM = "5c73531c-6fc4-426c-adcb-afc5c140a0f7";
.atMost(Duration.ofSeconds(15))
.untilAsserted(() ->
{
+ AtomicBoolean existingChatRoomFound = new AtomicBoolean(false);
webTestClient
.get()
.uri(
.accept(MediaType.APPLICATION_JSON)
.exchange()
.expectStatus().isOk()
- .expectBody()
- .jsonPath("$.length()").isEqualTo(1)
- .jsonPath("$[0].name").isEqualTo("FOO");
+ .returnResult(ChatRoomInfoTo.class)
+ .getResponseBody()
+ .toIterable()
+ .forEach(chatRoomInfoTo ->
+ {
+ log.debug("Inspecting chat-room {}", chatRoomInfoTo);
+ if (chatRoomInfoTo.getId().equals(UUID.fromString(EXISTING_CHATROOM)))
+ {
+ log.debug("Found existing chat-room {}", chatRoomInfoTo);
+ existingChatRoomFound.set(true);
+ assertThat(chatRoomInfoTo.getName().equals("FOO"));
+ }
+ });
+ assertThat(existingChatRoomFound.get()).isTrue();
});
}
.atMost(Duration.ofSeconds(15))
.untilAsserted(() ->
{
- byte[] result = webTestClient
+ // The first request creates a new chat-room
+ ChatRoomInfoTo chatRoomInfo = webTestClient
.post()
.uri("http://localhost:{port}/create", port)
.contentType(MediaType.TEXT_PLAIN)
.accept(MediaType.APPLICATION_JSON)
.exchange()
.expectStatus().isOk()
- .expectBody()
- .jsonPath("$.id").exists()
- .jsonPath("$.name").isEqualTo("bar")
- // The hard must not be asserted, because not all implementations ar aware of it
- // .jsonPath("$.shard").isEqualTo(Integer.valueOf(2))
- .returnResult()
- .getResponseBody();
- ChatRoomInfoTo chatRoomInfo = objectMapper.readValue(result, ChatRoomInfoTo.class);
- UUID chatRoomId = chatRoomInfo.getId();
+ .returnResult(ChatRoomInfoTo.class)
+ .getResponseBody()
+ .blockFirst();
+
+ // It must be repeated, until a chat-room was created,
+ // that is owned by the instance
+ assertThat(chatRoomInfo.getShard()).isIn(2, null);
+
webTestClient
.put()
.uri(
"http://localhost:{port}/{chatRoomId}/nerd/7",
port,
- chatRoomId)
+ chatRoomInfo.getId())
.contentType(MediaType.TEXT_PLAIN)
.accept(MediaType.APPLICATION_JSON)
.bodyValue("Hello world!")