X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fapi%2FChatBackendControllerTest.java;h=08361dd998554bd254079986410af5b9bd553564;hb=22c15a299f38649686d2677731aeb349e51224a5;hp=4392968daa410377c19a7262a822d0a5698d1523;hpb=f2f0cdc6901d1117ac385e10e2c8a28a1886726c;p=demos%2Fkafka%2Fchat diff --git a/src/test/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerTest.java b/src/test/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerTest.java index 4392968d..08361dd9 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerTest.java +++ b/src/test/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerTest.java @@ -12,10 +12,12 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; +import java.time.LocalDateTime; import java.util.Optional; import java.util.UUID; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -148,4 +150,41 @@ public class ChatBackendControllerTest .jsonPath("$.type").isEqualTo("/problem/unknown-chatroom") .jsonPath("$.chatroomId").isEqualTo(chatroomId.toString()); } + + @Test + @DisplayName("Assert expected problem-details for message mutation on PUT /put/{chatroomId}/{username}/{messageId}") + void testMessageMutationException(@Autowired WebTestClient client) throws Exception + { + // Given + UUID chatroomId = UUID.randomUUID(); + String username = "foo"; + Long messageId = 66l; + ChatRoom chatRoom = mock(ChatRoom.class); + when(chatHome.getChatroom(any(UUID.class))) + .thenReturn(Optional.of(chatRoom)); + Message.MessageKey key = Message.MessageKey.of("foo", 1l); + LocalDateTime timestamp = LocalDateTime.now(); + Message mutated = new Message(key, 0l, timestamp, "Mutated!"); + Message existing = new Message(key, 0l, timestamp, "Existing"); + when(chatRoom.addMessage(any(Long.class), any(String.class), any(String.class))) + .thenThrow(new MessageMutationException(mutated, existing)); + + // When + client + .put() + .uri( + "/put/{chatroomId}/{username}/{messageId}", + chatroomId, + username, + messageId) + .bodyValue("bar") + .accept(MediaType.APPLICATION_JSON) + .exchange() + // Then + .expectStatus().is4xxClientError() + .expectBody() + .jsonPath("$.type").isEqualTo("/problem/message-mutation") + .jsonPath("$.mutatedMessage.text").isEqualTo("Mutated!") + .jsonPath("$.existingMessage.text").isEqualTo("Existing"); + } }