public async Task BuildsDeserializerWithSchemaSubject() { using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { await builder.Build <string>(TestSubject); RegistryMock.Verify(r => r.GetLatestSchemaAsync(TestSubject), Times.Once()); RegistryMock.VerifyNoOtherCalls(); } }
public async Task DeserializesConfluentWireFormat(byte[] encoding, string data) { var context = new SerializationContext(MessageComponentType.Value, "test_topic"); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { var deserializer = await builder.Build <string>(TestSubjectLatestId); Assert.Equal(data, deserializer.Deserialize(encoding, false, context)); } }
public async Task ThrowsOnSchemaIdMismatch(byte[] encoding) { var context = new SerializationContext(MessageComponentType.Value, "test_topic"); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { var deserializer = await builder.Build <string>(TestSubjectLatestId); Assert.Throws <InvalidDataException>( () => deserializer.Deserialize(encoding, false, context) ); } }
public async Task ThrowsOnNullableTombstoneSchema() { var id = 6; var json = @"[""null"",""int""]"; registryMock.Setup(r => r.GetSchemaAsync(id, null)) .ReturnsAsync(new Schema(json, SchemaType.Avro)) .Verifiable(); using var builder = new SchemaRegistryDeserializerBuilder(registryMock.Object); await Assert.ThrowsAsync <UnsupportedSchemaException>( () => builder.Build <int?>(id, TombstoneBehavior.Strict)); }
public async Task ThrowsOnNullTombstoneSchema() { var id = 1; var json = @"""null"""; RegistryMock.Setup(r => r.GetSchemaAsync(id)) .ReturnsAsync(json) .Verifiable(); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { await Assert.ThrowsAsync <UnsupportedSchemaException>( () => builder.Build <int?>(id, TombstoneBehavior.Strict)); } }
public async Task ThrowsOnInvalidTombstoneType() { var id = 4; var json = @"""int"""; RegistryMock.Setup(r => r.GetSchemaAsync(id, null)) .ReturnsAsync(new Schema(json, SchemaType.Avro)) .Verifiable(); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { await Assert.ThrowsAsync <UnsupportedTypeException>( () => builder.Build <int>(id, TombstoneBehavior.Strict)); } }
public async Task BuildsDeserializerWithSchemaId() { var id = 6; var json = @"[""null"",""int""]"; registryMock.Setup(r => r.GetSchemaAsync(id, null)) .ReturnsAsync(new Schema(json, SchemaType.Avro)) .Verifiable(); using var builder = new SchemaRegistryDeserializerBuilder(registryMock.Object); await builder.Build <int?>(id); registryMock.Verify(); registryMock.VerifyNoOtherCalls(); }
public async Task DeserializesConfluentWireFormat(byte[] encoding, string data) { var id = 12; var json = @"""string"""; registryMock.Setup(r => r.GetSchemaAsync(id, null)) .ReturnsAsync(new Schema(json, SchemaType.Avro)) .Verifiable(); var context = new SerializationContext(MessageComponentType.Value, "test-topic"); using var builder = new SchemaRegistryDeserializerBuilder(registryMock.Object); var deserializer = await builder.Build <string>(id); Assert.Equal(data, deserializer.Deserialize(encoding, false, context)); }
public async Task BuildsDeserializerWithSchemaSubject() { var id = 12; var json = @"""string"""; var subject = "test-subject"; var version = 4; registryMock.Setup(r => r.GetLatestSchemaAsync(subject)) .ReturnsAsync(new RegisteredSchema(subject, version, id, json, SchemaType.Avro, null)) .Verifiable(); using var builder = new SchemaRegistryDeserializerBuilder(registryMock.Object); await builder.Build <string>(subject); registryMock.Verify(); registryMock.VerifyNoOtherCalls(); }
public async Task ThrowsOnUnrecognizedWireFormat(byte[] encoding) { var id = 12; var json = @"""string"""; registryMock.Setup(r => r.GetSchemaAsync(id, null)) .ReturnsAsync(new Schema(json, SchemaType.Avro)) .Verifiable(); var context = new SerializationContext(MessageComponentType.Value, "test-topic"); using var builder = new SchemaRegistryDeserializerBuilder(registryMock.Object); var deserializer = await builder.Build <string>(id); Assert.Throws <InvalidEncodingException>(() => deserializer.Deserialize(encoding, false, context)); }
public async Task ThrowsOnSchemaIdMismatch(byte[] encoding) { var id = 12; var json = @"""string"""; RegistryMock.Setup(r => r.GetSchemaAsync(id)) .ReturnsAsync(json) .Verifiable(); var context = new SerializationContext(MessageComponentType.Value, "test-topic"); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { var deserializer = await builder.Build <string>(id); Assert.Throws <InvalidDataException>( () => deserializer.Deserialize(encoding, false, context)); } }
public async Task BuildsDeserializerWithSchemaSubjectAndVersion() { var id = 12; var json = @"""string"""; var subject = "test-subject"; var version = 4; RegistryMock.Setup(r => r.GetSchemaAsync(subject, version)) .ReturnsAsync(json) .Verifiable(); RegistryMock.Setup(r => r.GetSchemaIdAsync(subject, json)) .ReturnsAsync(id) .Verifiable(); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { await builder.Build <string>(subject, version); RegistryMock.Verify(); RegistryMock.VerifyNoOtherCalls(); } }
public async Task BuildsDeserializerWithSchemaSubjectAndVersion() { var id = 12; var json = @"""string"""; var subject = "test-subject"; var version = 4; RegistryMock.Setup(r => r.GetRegisteredSchemaAsync(subject, version)) .ReturnsAsync(new RegisteredSchema(subject, version, id, json, SchemaType.Avro, null)) .Verifiable(); RegistryMock.Setup(r => r.GetSchemaIdAsync(subject, It.Is <Schema>(s => s.SchemaString == json))) .ReturnsAsync(id) .Verifiable(); using (var builder = new SchemaRegistryDeserializerBuilder(RegistryMock.Object)) { await builder.Build <string>(subject, version); RegistryMock.Verify(); RegistryMock.VerifyNoOtherCalls(); } }