public void shouldUnwrapMessageWrappedWithSchemaAtVersion(MessageContentWrapper wrapper, int schemaVersion, boolean wrapWithSchemaVersionAwarePayload,
boolean unwrapWithSchemaVersionAwarePayload, int missedSchemaVersionInPayload,
int errorsForPayloadWithSchemaVersion, int errorsForAnySchemaVersion,
int errorsForAnyOnlineSchemaVersion) {
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<>());
UnwrappedMessageContent unwrappedMessageContent = wrapper.unwrapAvro(wrapped, topicToUnwrap);
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);
}