@Test @SuppressWarnings("unchecked") public void shouldWrappedMessageContainsMetadata() throws IOException { // when byte[] wrappedMessage = avroMessageContentWrapper.wrapContent(content, id, timestamp, avroUser.getSchema(), Collections.emptyMap()); // then GenericRecord messageWithMetadata = bytesToRecord(wrappedMessage, avroUser.getSchema()); Map<Utf8, Utf8> metadata = (Map<Utf8, Utf8>) messageWithMetadata.get(METADATA_MARKER); assertThat(metadata.get(METADATA_MESSAGE_ID_KEY).toString()).isEqualTo(id); assertThat(valueOf(metadata.get(METADATA_TIMESTAMP_KEY).toString())).isEqualTo(timestamp); assertThat(wrappedMessage).contains(content); }
@Test public void shouldWrapAndUnwrapAvroMessageWithMetadata() throws IOException { // when byte [] wrappedMessage = avroMessageContentWrapper.wrapContent(content, id, timestamp, avroUser.getSchema(), Collections.emptyMap()); UnwrappedMessageContent unwrappedMessageContent = avroMessageContentWrapper.unwrapContent(wrappedMessage, avroUser.getCompiledSchema()); // then assertThat(unwrappedMessageContent.getMessageMetadata().getId()).isEqualTo(id); assertThat(unwrappedMessageContent.getMessageMetadata().getTimestamp()).isEqualTo(timestamp); assertThat(unwrappedMessageContent.getContent()).contains(content); }
@Test public void shouldUnwrapAvroMessageAndGenerateMetadataWhenNotExists() throws Throwable { //given byte [] wrappedMessage = wrapContentWithoutMetadata(content, avroUser.getSchema()); //when UnwrappedMessageContent unwrappedMessage = avroMessageContentWrapper.unwrapContent(wrappedMessage, avroUser.getCompiledSchema()); //then assertThat(unwrappedMessage.getMessageMetadata().getId()).isEmpty(); assertThat(unwrappedMessage.getMessageMetadata().getTimestamp()).isNotNull(); assertThat(unwrappedMessage.getContent()).startsWith(content); }
@Test public void shouldUnwrapAvroMessageAndSetEmptyMessageIdWhenNotGivenInMetadata() throws Throwable { // given byte [] wrappedMessage = wrapContentWithoutMessageIdInMetadata(content, avroUser.getSchema()); //when UnwrappedMessageContent unwrappedMessage = avroMessageContentWrapper.unwrapContent(wrappedMessage, avroUser.getCompiledSchema()); // then assertThat(unwrappedMessage.getMessageMetadata().getId()).isEmpty(); assertThat(unwrappedMessage.getMessageMetadata().getTimestamp()).isNotNull(); assertThat(unwrappedMessage.getContent()).contains(content); }
@Test public void shouldConvertToJsonWithoutMetadata() throws IOException { // given Topic topic = topic("group.topic").build(); AvroUser avroUser = new AvroUser("Bob", 18, "blue"); Message source = message() .withData(avroUser.asBytes()) .withSchema(new CompiledSchema<>(avroUser.getSchema(), SchemaVersion.valueOf(0))) .withExternalMetadata(of()) .build(); AvroToJsonMessageConverter converter = new AvroToJsonMessageConverter(); // when Message target = converter.convert(source, topic); // then assertThatJson(new String(target.getData())).isEqualTo("{\"name\": \"Bob\", \"age\": 18, \"favoriteColor\": \"blue\"}"); }