public void ItWorks() { using (AppConfig.Change(AppConfigPath)) using (var adapter = new BuiltinContainerAdapter()) { var messageHandled = new ManualResetEvent(false); adapter.Handle <string>(s => messageHandled.Set()); var bus = Configure.With(adapter) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .CreateBus() .Start(); bus.SendLocal("hello there!"); messageHandled.WaitUntilSetOrDie(5.Seconds()); } var auditedMessages = MsmqTestHelper .GetMessagesFrom(AuditQueue) .ToList(); Assert.That(auditedMessages.Count, Is.EqualTo(1), "Expected to find exactly one copy of the sent message in the audit queue"); Assert.That(auditedMessages.Single().Messages[0], Is.EqualTo("hello there!")); }
public void CanCopySuccessfullyHandledMessageToAuditQueue() { // arrange var fakeTime = DateTime.UtcNow; TimeMachine.FixTo(fakeTime); var resetEvent = new ManualResetEvent(false); adapter.Handle <string>(str => resetEvent.Set()); // act adapter.Bus.SendLocal("yo!"); // assert var message = MsmqTestHelper.GetMessagesFrom(AuditQueueName).Single(); message.ShouldNotBe(null); var logicalMessages = message.Messages; var headers = message.Headers; logicalMessages.Length.ShouldBe(1); logicalMessages[0].ShouldBe("yo!"); headers.ShouldContainKeyAndValue(Headers.AuditReason, Headers.AuditReasons.Handled); headers.ShouldContainKeyAndValue(Headers.AuditMessageCopyTime, fakeTime.ToString("u")); headers.ShouldContainKeyAndValue(Headers.AuditSourceQueue, InputQueueAddress); }
public void CanCopyPublishedMessageToAuditQueue() { // arrange var fakeTime = DateTime.UtcNow; TimeMachine.FixTo(fakeTime); Thread.Sleep(1.Seconds()); // act adapter.Bus.Publish("yo!"); // assert var message = MsmqTestHelper.GetMessagesFrom(AuditQueueName).Single(); message.ShouldNotBe(null); var logicalMessages = message.Messages; var headers = message.Headers; logicalMessages.Length.ShouldBe(1); logicalMessages[0].ShouldBe("yo!"); headers.ShouldContainKeyAndValue(Headers.AuditReason, Headers.AuditReasons.Published); headers.ShouldContainKeyAndValue(Headers.AuditMessageCopyTime, fakeTime.ToString("u")); headers.ShouldContainKeyAndValue(Headers.AuditSourceQueue, InputQueueAddress); }
public void PublishedMessageIsCopiedOnlyOnceRegardlessOfNumberOfSubscribers() { // arrange var fakeTime = DateTime.UtcNow; TimeMachine.FixTo(fakeTime); SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber1"); SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber2"); SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber3"); // act adapter.Bus.Publish("yo!"); // assert var messages = MsmqTestHelper.GetMessagesFrom(AuditQueueName).ToList(); Console.WriteLine(string.Join(Environment.NewLine, messages)); messages.Count.ShouldBe(4); var stringMessages = messages.Where(m => m.Messages[0] is string).ToList(); Assert.That(stringMessages.Count, Is.EqualTo(1), "We should have only one single copy of the published messages!"); }