public async Task Run([EventHubTrigger("rapids", Connection = "EventHubConnectionString")] EventData[] events) { List <Exception> exceptions = new List <Exception>(); foreach (EventData eventData in events) { try { EventMessageBody messageBody = new EventMessageBody(eventData); if (messageBody.IsEventType(EventType.None)) { continue; } await messageBody.AsServiceBusMessage().SendAsync(); } catch (Exception e) { exceptions.Add(e); } } if (exceptions.Count > 1) { throw new AggregateException(exceptions); } if (exceptions.Count == 1) { throw exceptions.Single(); } }
public void GivenWellFormedBody_WhenUsingImplicitOperator_ThenItShouldReturnCorrectValue() { // arrange const string expected = "{'Dammit':'Bobby!'}"; EventMessageBody eventMessageBody = new EventMessageBody(new EventData(Encoding.UTF8.GetBytes(expected))); // act string actual = eventMessageBody; // assert actual.Should().Be(expected); }
public void GivenWellFormedBody_WhenUsingImplicitOperator_ThenItShouldNotThrow() { // arrange string expected = string.Empty; EventMessageBody eventMessageBody = new EventMessageBody(new EventData(ArraySegment <byte> .Empty)); // act string actual = eventMessageBody; // assert actual.Should().Be(expected); }
public void GivenNoNeedInMessageBody_WhenCreatingTopic_ThenItShouldThrow() { // arrange EventData eventData = new EventData(Encoding.UTF8.GetBytes("{'Dammit':'Bobby'}")); EventMessageBody eventMessageBody = new EventMessageBody(eventData); // act // ReSharper disable once UnusedVariable Action action = () => { string s = new Need(eventMessageBody); }; // assert action.Should().Throw <Exception>(); }
public void GivenNeedInMessageBody_WhenCreatingTopic_ThenItShouldHydrateIt() { // arrange const string expected = "Propane Accessories"; EventData eventData = new EventData(Encoding.UTF8.GetBytes($"{{'need':'{expected}'}}")); EventMessageBody eventMessageBody = new EventMessageBody(eventData); // act Need topic = new Need(eventMessageBody); // assert ((string)topic).Should().Be(expected); }
public void GivenTopicInMessageBody_WhenCreatingTopic_ThenItShouldHydrateIt() { // arrange const string expected = "Strickland Propane"; EventData eventData = new EventData(Encoding.UTF8.GetBytes($"{{'eventType':'{expected}'}}")); EventMessageBody eventMessageBody = new EventMessageBody(eventData); // act Topic topic = new Topic(eventMessageBody); // assert ((string)topic).Should().Be(expected); }
public void GivenInvalidBody_WhenUsingAskingForServiceBusMessage_ThenItShouldShouldReturnNullServiceBusMessage() { // arrange const string expected = "{'businessName':'Strickland Propane, LLC'}"; Environment.SetEnvironmentVariable("ServiceBusConnectionString", "Endpoint=sb://googazon-rivers.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=dammitbobby"); EventMessageBody eventMessageBody = new EventMessageBody(new EventData(Encoding.UTF8.GetBytes(expected))); // act ServiceBusMessage actual = eventMessageBody.AsServiceBusMessage(); // assert actual.Should().BeOfType <NullServiceBusMessage>(); }
public void GivenValidBodyWithUnknownTopic_WhenUsingAskingIsNoneEventType_ThenItShouldReturnTrue() { // arrange const string expected = "{'eventType':'propane','need':'accessory'}"; Environment.SetEnvironmentVariable("ServiceBusConnectionString", "Endpoint=sb://googazon-rivers.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=dammitbobby"); EventMessageBody eventMessageBody = new EventMessageBody(new EventData(Encoding.UTF8.GetBytes(expected))); // act bool actual = eventMessageBody.IsEventType(EventType.None); // assert actual.Should().BeTrue(); }
public EventMessage() { Header = new EventMessageHeader(); Body = new EventMessageBody(); }