示例#1
0
        public void when_publish_with_invalid_arguments_it_should_fail()
        {
            var apiProducerMock = new Mock <IApiProducer>();

            apiProducerMock
            .Setup(producer => producer.Publish(It.IsAny <MessagePublishingContext>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.CompletedTask);

            var producerRegistryMock = new Mock <IProducerRegistry>();

            producerRegistryMock.Setup(registry => registry.Get(It.IsAny <IEgressApi>())).Returns(() => apiProducerMock.Object);

            var driver = new BrokerEgressKafkaDriver(
                ConfigurationTests.CreateBrokerEgressKafkaDriverConfiguration(new List <MessagePublishingContext>()),
                producerRegistryMock.Object);

            driver.Initialize(
                new[] { MakeApi() },
                MakeServiceProvider());

            // ReSharper disable once AssignNullToNotNullAttribute
            Func <Task> sut = () => driver.Publish(context: null, CancellationToken.None);

            sut.Should().ThrowExactly <ArgumentNullException>();
        }
示例#2
0
        public async Task when_publish_using_initialized_driver_it_should_publish_to_api_publisher()
        {
            var published = 0;

            var apiProducerMock = new Mock <IApiProducer>();

            apiProducerMock
            .Setup(producer => producer.Publish(It.IsAny <MessagePublishingContext>(), It.IsAny <CancellationToken>()))
            .Callback(() => published++)
            .Returns(() => Task.CompletedTask);

            var producerRegistryMock = new Mock <IProducerRegistry>();

            producerRegistryMock.Setup(registry => registry.Get(It.IsAny <IEgressApi>())).Returns(() => apiProducerMock.Object);

            var driver = new BrokerEgressKafkaDriver(
                ConfigurationTests.CreateBrokerEgressKafkaDriverConfiguration(new List <MessagePublishingContext>()),
                producerRegistryMock.Object);

            driver.Initialize(
                new[] { MakeApi() },
                MakeServiceProvider());

            await driver.Publish(MakeContext(), CancellationToken.None);

            published.Should().Be(expected: 1, "message should be published");
        }
示例#3
0
        public void when_dispose_it_should_dispose_producer_registry()
        {
            var registryMock = new Mock <IProducerRegistry>();

            registryMock.Setup(registry => registry.Dispose()).Verifiable();
            var sut = new BrokerEgressKafkaDriver(new BrokerEgressKafkaDriverConfiguration(), registryMock.Object);

            sut.Dispose();
            registryMock.Verify();
        }
示例#4
0
        public void when_publishing_to_not_initialized_driver_it_should_fail()
        {
            var driver = new BrokerEgressKafkaDriver(
                ConfigurationTests.CreateBrokerEgressKafkaDriverConfiguration(),
                new Mock <IProducerRegistry>().Object);
            Func <Task> sut = () => driver.Publish(MakeContext(), CancellationToken.None);

            sut.Should().ThrowExactly <PoezdOperationException>()
            .Where(
                exception => exception.Message.Contains("initialized", StringComparison.InvariantCultureIgnoreCase),
                "not initialized driver can not publish messages");
        }
示例#5
0
        public void when_initializing_twice_it_should_fail()
        {
            var publishedMessages = new List <MessagePublishingContext>();
            var driver            = new BrokerEgressKafkaDriver(
                ConfigurationTests.CreateBrokerEgressKafkaDriverConfiguration(publishedMessages),
                new Mock <IProducerRegistry>().Object);

            Action sut = () => driver.Initialize(
                new IEgressApi[0],
                MakeServiceProvider());

            sut.Should().NotThrow();
            sut.Should().ThrowExactly <PoezdOperationException>().Where(exception => exception.Message.Contains("already initialized"));
        }
示例#6
0
        public void when_initializing_with_invalid_arguments_it_should_fail()
        {
            var publishedMessages = new List <MessagePublishingContext>();
            var driver            = new BrokerEgressKafkaDriver(
                ConfigurationTests.CreateBrokerEgressKafkaDriverConfiguration(publishedMessages),
                new Mock <IProducerRegistry>().Object);

            var apis            = new IEgressApi[0];
            var serviceProvider = Mock.Of <IDiContainerAdapter>();

            Action sut = () => driver.Initialize(
                apis,
                serviceProvider);

            apis = null;
            sut.Should().ThrowExactly <ArgumentNullException>()
            .Which.ParamName.Should().Be("apis", "null is an invalid APIs");
            apis = new IEgressApi[0];

            serviceProvider = null;
            sut.Should().ThrowExactly <ArgumentNullException>()
            .Which.ParamName.Should().Be("serviceProvider", "null is an invalid service provider");
        }