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); }
public void DoesNotAddMessageVersionPropertyIfNoMessageVersion() { var aircraftLandedEventV2 = new AircraftLanded(); var sut = new Message <IEvent>(aircraftLandedEventV2); sut.Build(new MessageBusOptions()); Assert.False(sut.MessageProperties.ContainsKey(_defaultMessageVersionPropertyName)); }
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); }
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); }
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); }
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); }
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); }
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)); }