Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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>()));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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());
        }
Exemplo n.º 15
0
        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>()));
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
            }
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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());
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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);
        }