public async Task when_create_producer_it_should_configure_it_using_configurator() { var configuratorMock = new Mock <IProducerConfigurator>(); configuratorMock .Setup( configurator => configurator.Configure( It.IsAny <ProducerBuilder <string, byte[]> >(), It.IsAny <ISerializer <string> >(), It.IsAny <ISerializer <byte[]> >())) .Returns( ( ProducerBuilder <string, byte[]> builder, ISerializer <string> keySerializer, ISerializer <byte[]> valueSerializer) => { builder.SetKeySerializer(keySerializer); builder.SetValueSerializer(valueSerializer); return(builder); }) .Verifiable("configurator should be called"); var serializerFactoryMock = new Mock <ISerializerFactory>(); serializerFactoryMock.Setup(factory => factory.Create <string>()).Returns(Serializers.Utf8) .Verifiable("serializer for the key should be gotten"); serializerFactoryMock.Setup(factory => factory.Create <byte[]>()).Returns(Serializers.ByteArray) .Verifiable("serializer for the value should be gotten"); var producerFactory = new DefaultProducerFactory(configuratorMock.Object, serializerFactoryMock.Object); var producer = producerFactory.Create <string, byte[]>(CreateProducerConfig()); var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(value: 5)).Token; await using var kafkaTestContext = _kafkaTestContextFactory.Create <string, byte[]>(timeout); var topic = new StringCreator().Get(length: 10); await kafkaTestContext.CreateTopics(topic); var key = StringCreator.Get(length: 10); var value = Encoding.UTF8.GetBytes("test-message"); var message = new Message <string, byte[]> { Headers = new Headers(), Key = key, Timestamp = Timestamp.Default, Value = value }; Func <Task> sut = () => producer.ProduceAsync( topic, message, timeout); sut.Should().NotThrow(); configuratorMock.Verify(); serializerFactoryMock.Verify(); var consumeResult = kafkaTestContext.Consume(topic); consumeResult.Message.Key.Should().Be(key); consumeResult.Message.Value.Should().BeEquivalentTo(value); }
public void when_create_producer_with_invalid_arguments_it_should_fail() { var configurator = Mock.Of <IProducerConfigurator>(); var serializerFactory = Mock.Of <ISerializerFactory>(); var factory = new DefaultProducerFactory(configurator, serializerFactory); Action sut = () => factory.Create <int, string>(config: null); sut.Should().ThrowExactly <ArgumentNullException>(); }
public void when_create_producer_without_required_serializers_it_should_fail() { var serializerFactoryMock = new Mock <ISerializerFactory>(); serializerFactoryMock.Setup(factory => factory.Create <string>()).Returns(Mock.Of <ISerializer <string> >); serializerFactoryMock.Setup(factory => factory.Create <int>()).Returns(() => null); var producerFactory = new DefaultProducerFactory(Mock.Of <IProducerConfigurator>(), serializerFactoryMock.Object); Action sutBadKey = () => producerFactory.Create <int, string>(CreateProducerConfig()); sutBadKey.Should().ThrowExactly <PoezdOperationException>().Where(exception => exception.Message.Contains("key")); Action sutBadValue = () => producerFactory.Create <string, int>(CreateProducerConfig()); sutBadValue.Should().ThrowExactly <PoezdOperationException>().Where(exception => exception.Message.Contains("value")); }