public async Task DeadLettersMessageWithReasonAsync()
        {
            const string deadLetterReason    = "Json Serliazation issue";
            var          subscription        = nameof(DeadLettersMessageWithReasonAsync);
            var          aircraftlandedEvent = await CreateSubscriptionAndSendAircraftLandedEventAsync(subscription);

            var aircraftLandedHandler      = new AircraftLandedHandler(deadLetterReason);
            var mockMessageHandlerResolver = new Mock <IMessageHandlerResolver>();

            mockMessageHandlerResolver.Setup(m => m.Resolve(nameof(AircraftLanded))).Returns(aircraftLandedHandler);
            var mockMessageProcessorResolver = new Mock <IMessageProcessorResolver>();

            _azureServiceBusClient = new AzureServiceBusClient(_hostname, _topic, nameof(DeadLettersMessageWithReasonAsync), _tenantId);
            var messageBus = new Abstractions.MessageBus(mockMessageHandlerResolver.Object, new Mock <IMessageBusAdminClient>().Object,
                                                         _azureServiceBusClient, mockMessageProcessorResolver.Object);

            await messageBus.StartAsync();

            await Task.Delay(TimeSpan.FromSeconds(2));

            var messages = await ReceiveMessagesForSubscriptionAsync(subscription, true);

            Assert.Equal(1, aircraftLandedHandler.MessageCount);
            Assert.Equal(nameof(AircraftLanded), messages.First().Subject);
            Assert.Single(messages.Where(m => IsMatchingAircraftId <AircraftLanded>(m, aircraftlandedEvent.AircraftId)));
        }
Beispiel #2
0
        public async Task MessageContextPropertiesAvailableToMessageHandler()
        {
            var mockAircraftTakenOffHandler = new AircraftLandedHandler();

            _mockMessageHandlerResolver.Setup(m => m.Resolve(nameof(AircraftLanded)))
            .Returns(mockAircraftTakenOffHandler);
            var aircraftId        = Guid.NewGuid().ToString();
            var messageId         = Guid.NewGuid().ToString();
            var correlationId     = Guid.NewGuid().ToString();
            var messageProperties = new Dictionary <string, string>
            {
                { "MessageType", nameof(AircraftLanded) },
                { "MessageVersion", "1" }
            };

            var args = new MessageReceivedEventArgs(BuildAircraftLandedMessage(aircraftId),
                                                    new object(), messageProperties)
            {
                MessageId     = messageId,
                CorrelationId = correlationId,
                DeliveryCount = 2
            };

            await _sut.OnMessageReceived(args);

            _mockMessageHandlerResolver.Verify(m => m.Resolve(nameof(AircraftLanded)), Times.Once);
            Assert.Equal(aircraftId, mockAircraftTakenOffHandler.MessageContext.Message.AircraftId);
            Assert.Equal(1, mockAircraftTakenOffHandler.MessageCount);
            Assert.Equal(messageId, mockAircraftTakenOffHandler.MessageContext.MessageId);
            Assert.Equal(correlationId, mockAircraftTakenOffHandler.MessageContext.CorrelationId);
            Assert.Equal(nameof(AircraftLanded), mockAircraftTakenOffHandler.MessageContext.Properties["MessageType"]);
            Assert.Equal(2, mockAircraftTakenOffHandler.MessageContext.DeliveryCount);
        }
Beispiel #3
0
        public async Task CallsCorrectMessageHandlerWithCustomMessageTypePropertyName()
        {
            var mockAircraftTakenOffHandler = new AircraftLandedHandler();

            _mockMessageHandlerResolver.Setup(m => m.Resolve(nameof(AircraftLanded)))
            .Returns(mockAircraftTakenOffHandler);
            var sut = new MessageBus(_mockMessageHandlerResolver.Object,
                                     _mockMessageBusAdminClient.Object, _mockMessageBusClient.Object, _mockMessageProcessorResolver.Object,
                                     new MessageBusOptions {
                MessageTypePropertyName = "MessageTypeIdentifier"
            });

            var aircraftId = Guid.NewGuid().ToString();
            var args       = new MessageReceivedEventArgs(BuildAircraftLandedMessage(aircraftId),
                                                          new object(), new Dictionary <string, string> {
                { "MessageTypeIdentifier", nameof(AircraftLanded) }
            });

            await sut.OnMessageReceived(args);

            _mockMessageHandlerResolver.Verify(m => m.Resolve(nameof(AircraftLanded)), Times.Once);
            Assert.Equal(aircraftId, mockAircraftTakenOffHandler.AircraftId);
            Assert.Equal(1, mockAircraftTakenOffHandler.MessageCount);
        }