Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 13
0
        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();
            }
        }