@Test public void shouldSerialize() throws IOException { // given SchemaVersion version = SchemaVersion.valueOf(8); // when byte[] serialized = SchemaAwareSerDe.serialize(version, avro.asBytes()); // then assertThat(serialized).startsWith((byte)0); }
@Test public void shouldDeserialize() throws IOException { // given byte[] serialized = SchemaAwareSerDe.serialize(SchemaVersion.valueOf(8), avro.asBytes()); // when SchemaAwarePayload deserialized = SchemaAwareSerDe.deserialize(serialized); // then assertThat(deserialized.getSchemaVersion().value()).isEqualTo(8); assertThat(deserialized.getPayload()).isEqualTo(avro.asBytes()); }
@Test public void shouldStringContentTypeOfAdditionalOptionsWhenInterpretingIt() throws IOException { // when byte[] enforcedMessage = enforcer.enforceAvro("application/json;encoding=utf-8", avroMessage.asJson().getBytes(), schema.getSchema(), topic); // then assertThat(enforcedMessage).isEqualTo(avroMessage.asBytes()); }
@Test public void shouldConvertToAvroWhenReceivedJSONOnAvroTopic() throws IOException { // when byte[] enforcedMessage = enforcer.enforceAvro("application/json", avroMessage.asJson().getBytes(), schema.getSchema(), topic); // then assertThat(enforcedMessage).isEqualTo(avroMessage.asBytes()); }
@Test public void sh1ouldConvertToAvroWhenReceivedJSONOnAvroTopic() throws IOException { // when byte[] enforcedMessage = enforcer.enforceAvro("application/json", avroMessage.asJson().getBytes(), testSchema.getSchema(), topic); // then assertThat(enforcedMessage).isEqualTo(avroMessage.asBytes()); }
@Test public void shouldConvertToAvroWhenReceivedAvroJSONOnAvroTopic() throws IOException { // when byte[] enforcedMessage = enforcer.enforceAvro("avro/json", avroMessage.asAvroEncodedJson().getBytes(), schema.getSchema(), topic); // then assertThat(enforcedMessage).isEqualTo(avroMessage.asBytes()); }
@Test(expected = UnsupportedContentTypeException.class) public void shouldThrowUnsupportedContentTypeExceptionWhenReceivedWrongContentType() throws IOException { // when enforcer.enforceAvro(MediaType.TEXT_PLAIN, avroMessage.asBytes(), schema.getSchema(), topic); }
public void shouldUnwrapMessageWrappedWithSchemaAtVersion(MessageContentWrapper wrapper, int schemaVersion, boolean wrapWithSchemaVersionAwarePayload, boolean unwrapWithSchemaVersionAwarePayload, int missedSchemaVersionInPayload, int errorsForPayloadWithSchemaVersion, int errorsForAnySchemaVersion, int errorsForAnyOnlineSchemaVersion) { // given SchemaVersion version = SchemaVersion.valueOf(schemaVersion); Topic topicToWrap = createTopic("group", "topic", wrapWithSchemaVersionAwarePayload); Topic topicToUnwrap = createTopic("group", "topic", unwrapWithSchemaVersionAwarePayload); CompiledSchema<Schema> schema = schemaRepository.getKnownAvroSchemaVersion(topicToWrap, version); AvroUser user = new AvroUser(schema, "Bob", 15, "blue"); byte[] wrapped = wrapper.wrapAvro(user.asBytes(), "uniqueId", 1234, topicToWrap, schema, new HashedMap<>()); // when UnwrappedMessageContent unwrappedMessageContent = wrapper.unwrapAvro(wrapped, topicToUnwrap); // then assertThat(unwrappedMessageContent.getContent()).contains(user.asBytes()); assertThat(unwrappedMessageContent.getSchema().get().getVersion()).isEqualTo(version); assertThat(unwrappedMessageContent.getMessageMetadata().getId()).isEqualTo("uniqueId"); assertThat(unwrappedMessageContent.getMessageMetadata().getTimestamp()).isEqualTo(1234); assertThat(metrics.missedSchemaVersionInPayload().getCount()).isEqualTo(missedSchemaVersionInPayload); assertThat(metrics.errorsForSchemaVersionAwarePayload().getCount()).isEqualTo(errorsForPayloadWithSchemaVersion); assertThat(metrics.errorsForAnySchemaVersion().getCount()).isEqualTo(errorsForAnySchemaVersion); assertThat(metrics.errorsForAnyOnlineSchemaVersion().getCount()).isEqualTo(errorsForAnyOnlineSchemaVersion); }
@Before public void setup() throws IOException { avroUser = new AvroUser("Bob", 10, "red"); content = avroUser.asBytes(); avroMessageContentWrapper = new AvroMessageContentWrapper(Clock.systemDefaultZone()); }
@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\"}"); }