public void SendShouldSendCommandUsingSpecifiedEndpoint() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockProessManagerFinder = new Mock <IProcessManagerFinder>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); 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 endPoint = "MyEndPoint"; mockProducer.Setup(x => x.Send(endPoint, typeof(FakeMessage1), It.IsAny <byte[]>(), null)); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.Send(endPoint, message, null); // Assert mockSendMessagePipeline.Verify(x => x.ExecuteSendMessagePipeline(typeof(FakeMessage1), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), endPoint), Times.Once); }
public void SendingRequestWithEndpointAndCallbackShouldSendMessageToTheSpecifiedEndPoint() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Returns(task); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.SendRequest <FakeMessage1, FakeMessage2>("test", message, x => { }, null); // Assert mockSendMessagePipeline.Verify(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), "test"), Times.Once); }
public void SendingRequestSynchronouslyShouldSendCommand() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Returns(task); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(typeof(FakeMessage1), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), It.IsAny <string>())).Callback(task.Start); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); FakeMessage2 response = bus.SendRequest <FakeMessage1, FakeMessage2>(message, null, 1000); // Assert mockSendMessagePipeline.Verify(x => x.ExecuteSendMessagePipeline(typeof(FakeMessage1), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), null), Times.Once); }
public void PublishWithRoutingKeyShouldPublishMessage() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockProessManagerFinder = new Mock <IProcessManagerFinder>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); 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.Publish(typeof(FakeMessage1), It.IsAny <byte[]>(), null)); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.Publish(message, "routingkey1"); // Assert mockSendMessagePipeline.Setup(x => x.ExecutePublishMessagePipeline(typeof(FakeMessage1), It.IsAny <byte[]>(), It.Is <Dictionary <string, string> >(i => i.ContainsKey("RoutingKey")), It.IsAny <string>())); }
public void StartConsumingShouldConsumeAllMessageTypes() { // Arrange var bus = new ServiceConnect.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.IsAny <string>(), It.Is <IList <string> >(m => m.Contains(typeof(FakeMessage1).FullName.Replace(".", string.Empty)) && m.Contains(typeof(FakeMessage2).FullName.Replace(".", string.Empty))), It.IsAny <ConsumerEventHandler>(), It.IsAny <IConfiguration>())); // Act bus.StartConsuming(); // Assert _mockContainer.VerifyAll(); _mockConsumer.Verify(x => x.StartConsuming(It.IsAny <string>(), It.Is <IList <string> >(m => m.Contains(typeof(FakeMessage1).FullName.Replace(".", string.Empty)) && m.Contains(typeof(FakeMessage2).FullName.Replace(".", string.Empty))), It.IsAny <ConsumerEventHandler>(), It.IsAny <IConfiguration>()), Times.Once); }
public void SendingRequestToMultipleEndpointsSynchronouslyShouldReturnResponses() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); Action <FakeMessage2> action = null; mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Returns(task).Callback <Action <FakeMessage2> >(r => { action = r; }); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; var r1 = new FakeMessage2(Guid.NewGuid()); var r2 = new FakeMessage2(Guid.NewGuid()); mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), "test1")).Callback(() => { action(r1); }); mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), "test2")).Callback(() => { action(r2); task.Start(); }); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); IList <FakeMessage2> responses = bus.SendRequest <FakeMessage1, FakeMessage2>(new List <string> { "test1", "test2" }, message, null, 1000); // Assert Assert.Equal(2, responses.Count); Assert.True(responses.Contains(r1)); Assert.True(responses.Contains(r2)); }
public void SendingRequestToMultipleEndpointsShouldPassResponsesToCallbackHandler() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); int count = 0; var r1 = new FakeMessage2(Guid.NewGuid()); var r2 = new FakeMessage2(Guid.NewGuid()); var responses = new List <FakeMessage2>(); Action <FakeMessage2> action = message2 => { count++; responses.Add(message2); }; mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Callback <Action <object> >(a => { a(r1); a(r2); }).Returns(task); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockProducer.Setup(x => x.Send(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >())); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.SendRequest(message, action, null); // Assert mockRequestConfiguration.Verify(x => x.SetHandler(It.IsAny <Action <object> >()), Times.Exactly(1)); Assert.Equal(2, count); Assert.True(responses.Contains(r1)); Assert.True(responses.Contains(r2)); }
public void StartConsumingShouldGetAllHandlerTypesFromContainer() { // Arrange var bus = new ServiceConnect.Bus(_mockConfiguration.Object); _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(new List <HandlerReference>()); // Act bus.StartConsuming(); // Assert // One time for handlers and one time for aggregators _mockContainer.Verify(x => x.GetHandlerTypes(), Times.Exactly(2)); _mockContainer.VerifyAll(); }
public void ShouldNotCreateMultipleConsumers() { // Arrange _mockConfiguration.SetupGet(x => x.AutoStartConsuming).Returns(true); _mockConfiguration.SetupGet(x => x.ScanForMesssageHandlers).Returns(false); _mockConfiguration.Setup(x => x.SetAuditingEnabled(false)); _mockConfiguration.Setup(x => x.Threads).Returns(1); _mockConsumer.Setup(x => x.StartConsuming(It.IsAny <string>(), It.IsAny <IList <string> >(), It.IsAny <ConsumerEventHandler>(), It.IsAny <IConfiguration>())); // Act var bus = new ServiceConnect.Bus(_mockConfiguration.Object); // Assert _mockConsumer.Verify(x => x.StartConsuming(It.IsAny <string>(), It.IsAny <IList <string> >(), It.IsAny <ConsumerEventHandler>(), It.IsAny <IConfiguration>()), Times.Once); }
public void SendingRequestWithEndpointSynchronouslyShouldReturnResponse() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); Action <FakeMessage2> action = null; mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Returns(task) .Callback <Action <FakeMessage2> >(r => action = r); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >(), "test")).Callback(() => { action(new FakeMessage2(message.CorrelationId) { DisplayName = "Tim Watson", Email = "*****@*****.**" }); task.Start(); }); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); FakeMessage2 response = bus.SendRequest <FakeMessage1, FakeMessage2>("test", message, null, 1000); // Assert Assert.Equal("Tim Watson", response.DisplayName); Assert.Equal("*****@*****.**", response.Email); Assert.Equal(message.CorrelationId, response.CorrelationId); }
public void ShouldSendMessageToAggregatorProcessor() { // Arrange var bus = new ServiceConnect.Bus(_mockConfiguration.Object); _mockConsumer.Setup(x => x.StartConsuming(It.IsAny <string>(), It.IsAny <IList <string> >(), It.Is <ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny <IConfiguration>())); var mockPersistor = new Mock <IAggregatorPersistor>(); var mockProcessor = new Mock <IAggregatorProcessor>(); var fakeAggregator = new FakeAggregator(); _mockConfiguration.Setup(x => x.GetAggregatorPersistor()).Returns(mockPersistor.Object); _mockConfiguration.Setup(x => x.Threads).Returns(1); _mockContainer.Setup(x => x.GetInstance <IMessageHandlerProcessor>(It.IsAny <Dictionary <string, object> >())).Returns(new Mock <IMessageHandlerProcessor>().Object); _mockContainer.Setup(x => x.GetInstance <IProcessManagerProcessor>(It.IsAny <Dictionary <string, object> >())).Returns(new Mock <IProcessManagerProcessor>().Object); _mockConfiguration.Setup(x => x.GetAggregatorProcessor(It.IsAny <IAggregatorPersistor>(), It.IsAny <IBusContainer>(), It.IsAny <Type>())).Returns(mockProcessor.Object); _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(new List <HandlerReference> { new HandlerReference { HandlerType = typeof(FakeAggregator), MessageType = typeof(FakeMessage1) } }); _mockContainer.Setup(x => x.GetInstance(typeof(FakeAggregator))).Returns(fakeAggregator); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockProcessor.Setup(x => x.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message))); bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)), typeof(FakeMessage1).AssemblyQualifiedName, new Dictionary <string, object> { { "MessageType", Encoding.UTF8.GetBytes("Send") } }); // Assert mockProcessor.Verify(x => x.ProcessMessage <FakeMessage1>(It.Is <string>(y => JsonConvert.DeserializeObject <FakeMessage1>(y).Username == "Tim")), Times.Once); }
public void CustomExceptionHandlerShouldBeCalledIfConsumeMessageEventThrows() { // Arrange bool actionCalled = false; Action <Exception> action = exception => { actionCalled = true; }; _mockConfiguration.Setup(x => x.ExceptionHandler).Returns(action); var bus = new ServiceConnect.Bus(_mockConfiguration.Object); var handlerReferences = new List <HandlerReference> { new HandlerReference { HandlerType = typeof(FakeHandler1), MessageType = typeof(FakeMessage1) }, new HandlerReference { HandlerType = typeof(FakeHandler2), MessageType = typeof(FakeMessage2) } }; var headers = new Dictionary <string, object>(); _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); _mockConsumer.Setup(x => x.StartConsuming(It.IsAny <string>(), It.IsAny <IList <string> >(), It.Is <ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny <IConfiguration>())); _mockProcessMessagePipeline.Setup(x => x.ExecutePipeline(It.IsAny <IConsumeContext>(), It.IsAny <Type>(), It.IsAny <Envelope>())).Throws(new Exception()); bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid()) { Username = "******" })), typeof(FakeMessage1).FullName, headers); // Assert Assert.True(actionCalled); }
public void ConsumeMessageEventShouldExecuteMessageProcessingPipeline() { // Arrange var bus = new ServiceConnect.Bus(_mockConfiguration.Object); var handlerReferences = new List <HandlerReference> { new HandlerReference { HandlerType = typeof(FakeHandler1), MessageType = typeof(FakeMessage1) }, new HandlerReference { HandlerType = typeof(FakeHandler2), MessageType = typeof(FakeMessage2) } }; var headers = new Dictionary <string, object> { { "MessageType", Encoding.ASCII.GetBytes("Send") } }; _mockContainer.Setup(x => x.GetHandlerTypes()).Returns(handlerReferences); _mockConsumer.Setup(x => x.StartConsuming(It.IsAny <string>(), It.IsAny <IList <string> >(), It.Is <ConsumerEventHandler>(y => AssignEventHandler(y)), It.IsAny <IConfiguration>())); bus.StartConsuming(); var message = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid()) { Username = "******" })); // Act _fakeEventHandler(message, typeof(FakeMessage1).AssemblyQualifiedName, headers); // Assert _mockProcessMessagePipeline.Verify(x => x.ExecutePipeline(It.Is <IConsumeContext>(y => y.Headers == headers), It.IsAny <Type>(), It.Is <Envelope>(y => ((FakeMessage1)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(y.Body), typeof(FakeMessage1))).Username == "Tim Watson")), 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>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); 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 ServiceConnect.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>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); 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 ServiceConnect.Bus(mockConfiguration.Object); bus.Route(message, new List <string> { endPoint1, endPoint2 }); // Assert mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.Is <Dictionary <string, string> >(i => i.Count == 1), It.IsAny <string>())); mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.Is <Dictionary <string, string> >(i => i.ContainsKey("RoutingSlip")), It.IsAny <string>())); mockSendMessagePipeline.Setup(x => x.ExecuteSendMessagePipeline(It.IsAny <Type>(), It.IsAny <byte[]>(), It.Is <Dictionary <string, string> >(i => i.ContainsValue("[\"MyEndPoint2\"]")), It.IsAny <string>())); }
public void SendingRequestWithEndpointAndCallbackShouldPassCallbackToHandler() { // Arrange var mockConfiguration = new Mock <IConfiguration>(); var mockProducer = new Mock <IProducer>(); var mockContainer = new Mock <IBusContainer>(); var mockRequestConfiguration = new Mock <IRequestConfiguration>(); var mockSendMessagePipeline = new Mock <ISendMessagePipeline>(); mockConfiguration.Setup(x => x.GetSendMessagePipeline()).Returns(mockSendMessagePipeline.Object); mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object); mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object); mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings()); mockConfiguration.Setup(x => x.GetRequestConfiguration(It.IsAny <Guid>())).Returns(mockRequestConfiguration.Object); var task = new Task(() => { }); bool actionCalled = false; Action <FakeMessage2> action = message2 => { actionCalled = true; }; mockRequestConfiguration.Setup(x => x.SetHandler(It.IsAny <Action <object> >())).Callback <Action <object> >(a => a(new FakeMessage2(Guid.NewGuid()))).Returns(task); var message = new FakeMessage1(Guid.NewGuid()) { Username = "******" }; mockProducer.Setup(x => x.Send(It.IsAny <Type>(), It.IsAny <byte[]>(), It.IsAny <Dictionary <string, string> >())); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.SendRequest("test", message, action, null); // Assert mockRequestConfiguration.Verify(x => x.SetHandler(It.IsAny <Action <object> >()), Times.Once()); Assert.True(actionCalled); }
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 ServiceConnect.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 ServiceConnect.Bus(mockConfiguration.Object); bus.Send(message, null); // Assert mockProducer.Verify(x => x.Send(typeof(FakeMessage1), It.IsAny<byte[]>(), null), Times.Once); }
public void SendShouldGetProducerFromContainer() { // 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 ServiceConnect.Bus(mockConfiguration.Object); bus.Send(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 ServiceConnect.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); }
public void PublishWithRoutingKeyShouldPublishMessage() { // 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.Publish(typeof(FakeMessage1), It.IsAny<byte[]>(), null)); // Act var bus = new ServiceConnect.Bus(mockConfiguration.Object); bus.Publish(message, "routingkey1"); // Assert mockProducer.Verify(x => x.Publish(typeof(FakeMessage1), It.IsAny<byte[]>(), It.Is<Dictionary<string, string>>(i => i.ContainsKey("RoutingKey"))), Times.Once); }