public async Task PublishesEventsWithCustomCorrelationId()
        {
            var subscription = nameof(PublishesEventsWithCustomMessageId);

            await CreateSubscriptionAsync(subscription);

            var aircraftlandedEvent = new AircraftLanded {
                AircraftId = Guid.NewGuid().ToString()
            };
            var correlationId = Guid.NewGuid().ToString();
            var message       = new Message <IEvent>(aircraftlandedEvent)
            {
                CorrelationId = correlationId
            };

            _azureServiceBusClient = BuildAzureServiceBusClient(AuthenticationType.ManagedIdentity, subscription);
            await _azureServiceBusClient.PublishAsync(message);

            var matchingMessages = (await ReceiveMessagesForSubscriptionAsync(subscription))
                                   .Where(m => IsMatchingAircraftId <AircraftLanded>(m, aircraftlandedEvent.AircraftId) &&
                                          m.CorrelationId == correlationId);

            Assert.Single(matchingMessages);
            Assert.Equal(nameof(AircraftLanded), matchingMessages.First().Subject);
        }
        public async Task PublishesEventBody(string aircraftType, AuthenticationType authenticationType)
        {
            var subscription = nameof(PublishesEventBody);

            await CreateSubscriptionAsync(subscription);

            var aircraftlandedEvent = new AircraftLanded {
                AircraftId = Guid.NewGuid().ToString()
            };
            var message = new Message <IEvent>(aircraftlandedEvent)
            {
                MessageProperties = new Dictionary <string, string>
                {
                    { "AircraftType", aircraftType },
                    { "AircraftSize", "Heavy" }
                }
            };

            _azureServiceBusClient = BuildAzureServiceBusClient(authenticationType, subscription);
            await _azureServiceBusClient.PublishAsync(message);

            var matchingMessages = (await ReceiveMessagesForSubscriptionAsync(subscription))
                                   .Where(m => IsMatchingAircraftId <AircraftLanded>(m, aircraftlandedEvent.AircraftId));

            Assert.Single(matchingMessages);
            Assert.Equal(aircraftType, matchingMessages.First().ApplicationProperties["AircraftType"]);
            Assert.Equal("Heavy", matchingMessages.First().ApplicationProperties["AircraftSize"]);
            Assert.Equal(nameof(AircraftLanded), matchingMessages.First().Subject);
        }
Exemple #3
0
        public void DoesNotAddMessageVersionPropertyIfNoMessageVersion()
        {
            var aircraftLandedEventV2 = new AircraftLanded();

            var sut = new Message <IEvent>(aircraftLandedEventV2);

            sut.Build(new MessageBusOptions());

            Assert.False(sut.MessageProperties.ContainsKey(_defaultMessageVersionPropertyName));
        }
Exemple #4
0
        protected async Task <AircraftLanded> CreateSubscriptionAndSendAircraftLandedEventAsync(string subscriptionName)
        {
            await CreateSubscriptionAsync(subscriptionName);

            var aircraftLandedEvent = new AircraftLanded {
                AircraftId = Guid.NewGuid().ToString()
            };

            await SendMessagesAsync(aircraftLandedEvent, nameof(AircraftLanded));

            return(aircraftLandedEvent);
        }
Exemple #5
0
        public async Task PublishAsyncCallsMessageBusClient()
        {
            var aircraftId          = Guid.NewGuid().ToString();
            var aircraftLandedEvent = new AircraftLanded {
                AircraftId = aircraftId
            };
            var eventToSend = new Message <IEvent>(aircraftLandedEvent);

            await _sut.PublishAsync(eventToSend);

            _mockMessageBusClient.Verify(m => m.PublishAsync(eventToSend), Times.Once);
        }
Exemple #6
0
        public async Task PublishesEventWithSameCorrelationIdAsReceivedMessage(string expectedCorrelationId)
        {
            var aircraftLandedEvent = new AircraftLanded()
            {
                AircraftId = Guid.NewGuid().ToString()
            };
            var message = new Message <IEvent>(aircraftLandedEvent);
            Message <IEvent> callbackEvent = null;

            _mockMessageBus.Setup(m => m.PublishAsync(It.Is <Message <IEvent> >(e
                                                                                => (e.Body as AircraftLanded).AircraftId == aircraftLandedEvent.AircraftId)))
            .Callback <Message <IEvent> >(e => callbackEvent = e);

            _sut.CorrelationId = expectedCorrelationId;
            await _sut.PublishAsync(message);

            Assert.Equal(expectedCorrelationId, callbackEvent.CorrelationId);
        }
Exemple #7
0
        public async Task PublishesEventWithScheduledEnqueueTime(int delayInSeconds)
        {
            var aircraftLandedEvent = new AircraftLanded()
            {
                AircraftId = Guid.NewGuid().ToString()
            };
            var expectedEnqueueTime = DateTimeOffset.Now.AddSeconds(delayInSeconds);
            var message             = new Message <IEvent>(aircraftLandedEvent)
            {
                ScheduledEnqueueTime = expectedEnqueueTime
            };
            Message <IEvent> callbackEvent = null;

            _mockMessageBus.Setup(m => m.PublishAsync(It.Is <Message <IEvent> >(e
                                                                                => (e.Body as AircraftLanded).AircraftId == aircraftLandedEvent.AircraftId)))
            .Callback <Message <IEvent> >(e => callbackEvent = e);

            await _sut.PublishAsync(message);

            Assert.Equal(expectedEnqueueTime, callbackEvent.ScheduledEnqueueTime);
        }
Exemple #8
0
        public async Task SendsCommandWithNewCorrelationIdIfSpecified()
        {
            var aircraftLandedEvent = new AircraftLanded()
            {
                AircraftId = Guid.NewGuid().ToString()
            };
            var expectedCorrelationId = Guid.NewGuid().ToString();
            var message = new Message <IEvent>(aircraftLandedEvent)
            {
                CorrelationId = expectedCorrelationId
            };
            Message <IEvent> callbackEvent = null;

            _mockMessageBus.Setup(m => m.PublishAsync(It.Is <Message <IEvent> >(e
                                                                                => (e.Body as AircraftLanded).AircraftId == aircraftLandedEvent.AircraftId)))
            .Callback <Message <IEvent> >(e => callbackEvent = e);

            _sut.CorrelationId = Guid.NewGuid().ToString();
            await _sut.PublishAsync(message);

            Assert.Equal(expectedCorrelationId, callbackEvent.CorrelationId);
        }
Exemple #9
0
 private void FlightDirector_Aircraft_Landed(object sender, AircraftLandedEventArgs e)
 {
     AirplaneManager.RemoveAircraft(e.Aircraft);
     AircraftLanded?.Invoke(this, e);
 }
 private void OnAircraftLanded(Aircraft ac)
 {
     AircraftLanded?.Invoke(this, new AircraftLandedEventArgs(ac));
 }