public ProcessManagerTests() { var mockConfiguration = new Mock<IConfiguration>(); _mockContainer = new Mock<IBusContainer>(); var mockConsumer = new Mock<IConsumer>(); _mockProcessManagerFinder = new Mock<IProcessManagerFinder>(); mockConfiguration.Setup(x => x.GetContainer()).Returns(_mockContainer.Object); mockConfiguration.Setup(x => x.GetConsumer()).Returns(mockConsumer.Object); mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(_mockProcessManagerFinder.Object); _bus = new MessageBus.Bus(mockConfiguration.Object); var handlerReferences = new List<HandlerReference> { new HandlerReference { HandlerType = typeof (FakeProcessManager1), MessageType = typeof (FakeMessage1) }, new HandlerReference { HandlerType = typeof (FakeHandler2), MessageType = typeof (FakeMessage2) }, new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); mockConsumer.Setup(x => x.StartConsuming(It.Is<ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny<string>(), It.IsAny<string>())); }
public void ShouldGetTheCorrectHandlerTypesFromContainer() { // Arrange var bus = new MessageBus.Bus(_mockConfiguration.Object); var handlerReferences = new List<HandlerReference> { new HandlerReference { HandlerType = typeof (FakeHandler1), MessageType = typeof (FakeMessage1) }, new HandlerReference { HandlerType = typeof (FakeHandler2), MessageType = typeof (FakeMessage2) } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); _mockConsumer.Setup(x => x.StartConsuming(It.Is<ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny<string>(), It.IsAny<string>())); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference>()); bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(new FakeMessage1(Guid.NewGuid()) { Username = "******" }))); // Assert _mockContainer.Verify(x => x.GetHandlerTypes(It.Is<Type>(y => y == typeof(IMessageHandler<FakeMessage1>))), Times.Once()); }
public void ShouldCreateAConsumerForEachHandler() { // Arrange var bus = new MessageBus.Bus(_mockConfiguration.Object); var handlerReferences = new List<HandlerReference> { new HandlerReference { HandlerType = typeof (FakeHandler1), MessageType = typeof (FakeMessage1) }, new HandlerReference { HandlerType = typeof (FakeHandler2), MessageType = typeof (FakeMessage2) } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); // Act bus.StartConsuming(); // Assert _mockConfiguration.Verify(x => x.GetConsumer(), Times.Exactly(2)); _mockContainer.VerifyAll(); }
public void ShouldStartConsumingAllMessagesFromTheContainer() { // Arrange var bus = new MessageBus.Bus(_mockConfiguration.Object); var handlerReferences = new List<HandlerReference> { new HandlerReference { HandlerType = typeof (FakeHandler1), MessageType = typeof (FakeMessage1) }, new HandlerReference { HandlerType = typeof (FakeHandler2), MessageType = typeof (FakeMessage2) } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); // Act bus.StartConsuming(); // Assert _mockConsumer.Verify(x => x.StartConsuming(It.IsAny<ConsumerEventHandler>(), "RMessageBusUnitTestsFakesMessagesFakeMessage1", ".FakeMessage1"), Times.Once); _mockConsumer.Verify(x => x.StartConsuming(It.IsAny<ConsumerEventHandler>(), "RMessageBusUnitTestsFakesMessagesFakeMessage2", ".FakeMessage2"), Times.Once); _mockConsumer.VerifyAll(); }
public void ShouldGetAllHandlerTypesFromContainer() { // Arrange var bus = new MessageBus.Bus(_mockConfiguration.Object); _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(new List<HandlerReference>()); // Act bus.StartConsuming(); // Assert _mockContainer.Verify(x => x.GetHandlerTypes(), Times.Once); _mockContainer.VerifyAll(); }
public void ShouldExecuteTheCorrectHandlers() { // Arrange var bus = new MessageBus.Bus(_mockConfiguration.Object); var message1HandlerReference = new HandlerReference { HandlerType = typeof (FakeHandler1), MessageType = typeof (FakeMessage1) }; var handlerReferences = new List<HandlerReference> { message1HandlerReference, new HandlerReference { HandlerType = typeof (FakeHandler2), MessageType = typeof (FakeMessage2) } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); _mockConsumer.Setup(x => x.StartConsuming(It.Is<ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny<string>(), It.IsAny<string>())); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference> { message1HandlerReference }); var fakeHandler = new FakeHandler1(); _mockContainer.Setup(x => x.GetInstance(typeof (FakeHandler1))).Returns(fakeHandler); bus.StartConsuming(); // Act var message1 = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(message1))); var message2 = new FakeMessage2(Guid.NewGuid()) { DisplayName = "Tim Watson" }; _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(message2))); // Assert Assert.Equal(message1.CorrelationId, fakeHandler.Command.CorrelationId); Assert.Equal(message1.Username, fakeHandler.Command.Username); _mockContainer.Verify(x => x.GetInstance(typeof (FakeHandler2)), Times.Never); }
public void SendShouldSendCommandUsingSpecifiedEndpoints() { // Arrange var mockConfiguration = new Mock<IConfiguration>(); var mockProducer = new Mock<IProducer>(); var mockContainer = new Mock<IBusContainer>(); var mockProessManagerFinder = new Mock<IProcessManagerFinder>(); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(mockProessManagerFinder.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; List<string> endPoints = new List<string> { "MyEndPoint1", "MyEndPoint2" }; foreach (string endPoint in endPoints) { mockProducer.Setup(x => x.Send(endPoint, typeof(FakeMessage1), It.IsAny<byte[]>(), null)); } // Act var bus = new MessageBus.Bus(mockConfiguration.Object); bus.Send(endPoints, message, null); // Assert foreach (string endPoint in endPoints) { mockProducer.Verify(x => x.Send(endPoint, typeof(FakeMessage1), It.IsAny<byte[]>(), null), Times.Once); } }
public void SendShouldSendCommand() { // Arrange var mockConfiguration = new Mock<IConfiguration>(); var mockProducer = new Mock<IProducer>(); var mockContainer = new Mock<IBusContainer>(); var mockProessManagerFinder = new Mock<IProcessManagerFinder>(); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(mockProessManagerFinder.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockProducer.Setup(x => x.Send(typeof(FakeMessage1), It.IsAny<byte[]>(), null)); // Act var bus = new MessageBus.Bus(mockConfiguration.Object); bus.Send(message, null); // Assert mockProducer.Verify(x => x.Send(typeof(FakeMessage1), It.IsAny<byte[]>(), null), Times.Once); }
public void SendWithEndPointShouldGetProducerFromContainer() { // Arrange var mockConfiguration = new Mock<IConfiguration>(); var mockProducer = new Mock<IProducer>(); var mockContainer = new Mock<IBusContainer>(); var mockProessManagerFinder = new Mock<IProcessManagerFinder>(); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(mockProessManagerFinder.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); // Act var bus = new MessageBus.Bus(mockConfiguration.Object); bus.Send("EndPoint", new FakeMessage1(Guid.NewGuid()), null); // Assert mockConfiguration.Verify(x => x.GetProducer(), Times.Once()); }
public void RouteShouldSendCommandWithRoutingSlipHeader() { // Arrange var mockConfiguration = new Mock<IConfiguration>(); var mockProducer = new Mock<IProducer>(); var mockContainer = new Mock<IBusContainer>(); var mockProessManagerFinder = new Mock<IProcessManagerFinder>(); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(mockProessManagerFinder.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; const string endPoint1 = "MyEndPoint1"; const string endPoint2 = "MyEndPoint2"; mockProducer.Setup(x => x.Send(endPoint1, It.IsAny<Type>(), It.IsAny<byte[]>(), It.IsAny<Dictionary<string, string>>())); // Act var bus = new MessageBus.Bus(mockConfiguration.Object); bus.Route(message, new List<string> { endPoint1, endPoint2 }); // Assert mockProducer.Verify(x => x.Send(endPoint1, It.IsAny<Type>(), It.IsAny<byte[]>(), It.Is<Dictionary<string, string>>(i => i.Count == 1)), Times.Once); mockProducer.Verify(x => x.Send(endPoint1, It.IsAny<Type>(), It.IsAny<byte[]>(), It.Is<Dictionary<string, string>>(i => i.ContainsKey("RoutingSlip"))), Times.Once); mockProducer.Verify(x => x.Send(endPoint1, It.IsAny<Type>(), It.IsAny<byte[]>(), It.Is<Dictionary<string, string>>(i => i.ContainsValue("[\"MyEndPoint2\"]"))), Times.Once); }