public void ShouldExecuteAsyncHandler()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object, _mockLogger.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeAsyncHandler),
                MessageType = typeof(FakeMessage1)
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler <FakeMessage1>), typeof(IAsyncMessageHandler <FakeMessage1>))).Returns(new List <HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeAsyncHandler();

            _mockContainer.Setup(x => x.GetInstance(typeof(FakeAsyncHandler))).Returns(fakeHandler);

            // Act
            var message1 = new FakeMessage1(Guid.NewGuid());

            messageProcessor.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message1),
                                                           new ConsumeContext {
                Headers = new Dictionary <string, object>()
            }).GetAwaiter().GetResult();;

            // Assert
            Assert.Equal(true, fakeHandler.Executed);
        }
Ejemplo n.º 2
0
        public void ShouldExecuteTheCorrectBaseMessageHandlers()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeBaseMessageHandler1),
                MessageType = typeof(FakeBaseMessage1)
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler <FakeBaseMessage1>))).Returns(new List <HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeBaseMessageHandler1();

            _mockContainer.Setup(x => x.GetInstance(typeof(FakeBaseMessageHandler1))).Returns(fakeHandler);

            // Act
            var message = new FakeDerivedMessage1(Guid.NewGuid())
            {
                Status = "Test"
            };

            messageProcessor.ProcessMessage <FakeDerivedMessage1>(JsonConvert.SerializeObject(message), null);

            // Assert
            Assert.Equal(message.CorrelationId, fakeHandler.Command.CorrelationId);
            Assert.Equal(message.Username, fakeHandler.Command.Username);
            _mockContainer.Verify(x => x.GetInstance(typeof(FakeBaseMessageHandler1)), Times.Once);
        }
        public void ShouldExecuteTheCorrectBaseMessageHandlers()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeBaseMessageHandler1),
                MessageType = typeof(FakeBaseMessage1)
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeBaseMessage1>))).Returns(new List<HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeBaseMessageHandler1();
            _mockContainer.Setup(x => x.GetInstance(typeof(FakeBaseMessageHandler1))).Returns(fakeHandler);

            // Act
            var message = new FakeDerivedMessage1(Guid.NewGuid())
            {
                Status = "Test"
            };

            messageProcessor.ProcessMessage<FakeDerivedMessage1>(JsonConvert.SerializeObject(message), null);

            // Assert
            Assert.Equal(message.CorrelationId, fakeHandler.Command.CorrelationId);
            Assert.Equal(message.Username, fakeHandler.Command.Username);
            _mockContainer.Verify(x => x.GetInstance(typeof(FakeBaseMessageHandler1)), Times.Once);
        }
Ejemplo n.º 4
0
        public void ProcessMessageShouldGetTheCorrectHandlerTypesFromContainer()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            // Act
            messageProcessor.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            }), null);

            // Assert
            _mockContainer.Verify(x => x.GetHandlerTypes(It.Is <Type>(y => y == typeof(IMessageHandler <FakeMessage1>))), Times.Once());
        }
        public void ProcessMessageShouldGetTheCorrectHandlerTypesFromContainer()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            // Act
            messageProcessor.ProcessMessage<FakeMessage1>(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            }), null);

            // Assert
            _mockContainer.Verify(x => x.GetHandlerTypes(It.Is<Type>(y => y == typeof(IMessageHandler<FakeMessage1>))), Times.Once());
        }
Ejemplo n.º 6
0
        public void ShouldExecuteTheCorrectHandlerWithMultipleRoutingKeyAttributes()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeHandlerWithAttr2),
                MessageType = typeof(FakeMessage1),
                RoutingKeys = new List <string> {
                    "Test1", "Test2"
                }
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler <FakeMessage1>))).Returns(new List <HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeHandlerWithAttr2();

            _mockContainer.Setup(x => x.GetInstance(typeof(FakeHandlerWithAttr2))).Returns(fakeHandler);

            // Act
            var message1 = new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            };

            messageProcessor.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message1),
                                                           new ConsumeContext {
                Headers = new Dictionary <string, object> {
                    { "RoutingKey", Encoding.ASCII.GetBytes("Test2") }
                }
            });

            // Assert
            Assert.Equal(message1.CorrelationId, fakeHandler.Command.CorrelationId);
            Assert.Equal(message1.Username, fakeHandler.Command.Username);
            _mockContainer.Verify(x => x.GetInstance(typeof(FakeHandlerWithAttr2)), Times.Once);
        }
        public void ShouldExecuteTheCorrectHandlerWithCatchAllRoutingKeyAttribute()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object, _mockLogger.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeHandlerWithAttr1),
                MessageType = typeof(FakeMessage1),
                RoutingKeys = new List <string> {
                    "#"
                }                                      // matches any routing key
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler <FakeMessage1>), typeof(IAsyncMessageHandler <FakeMessage1>))).Returns(new List <HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeHandlerWithAttr1();

            _mockContainer.Setup(x => x.GetInstance(typeof(FakeHandlerWithAttr1))).Returns(fakeHandler);

            // Act
            var message1 = new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            };

            messageProcessor.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message1),
                                                           new ConsumeContext {
                Headers = new Dictionary <string, object> {
                    { "RoutingKey", Encoding.ASCII.GetBytes("SomeRandomRoutingKey") }
                }
            }).GetAwaiter().GetResult();;

            // Assert
            Assert.Equal(message1.CorrelationId, fakeHandler.Command.CorrelationId);
            Assert.Equal(message1.Username, fakeHandler.Command.Username);
            _mockContainer.Verify(x => x.GetInstance(typeof(FakeHandlerWithAttr1)), Times.Once);
        }
        public void ShouldExecuteTheCorrectHandlers()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object, _mockLogger.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeHandler1),
                MessageType = typeof(FakeMessage1)
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler <FakeMessage1>), typeof(IAsyncMessageHandler <FakeMessage1>))).Returns(new List <HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeHandler1();

            _mockContainer.Setup(x => x.GetInstance(typeof(FakeHandler1))).Returns(fakeHandler);

            // Act
            var message1 = new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            };

            messageProcessor.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message1), null).GetAwaiter().GetResult();;

            var message2 = new FakeMessage2(Guid.NewGuid())
            {
                DisplayName = "Tim Watson"
            };

            messageProcessor.ProcessMessage <FakeMessage2>(JsonConvert.SerializeObject(message2), null).GetAwaiter().GetResult();;

            // 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 ShouldExecuteTheCorrectHandlerWithRoutingKeyAttribute()
        {
            // Arrange
            var messageProcessor = new MessageHandlerProcessor(_mockContainer.Object);

            var message1HandlerReference = new HandlerReference
            {
                HandlerType = typeof(FakeHandlerWithAttr1),
                MessageType = typeof(FakeMessage1),
                RoutingKeys = new List<string> { "Test"}
            };

            _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference>
            {
                message1HandlerReference
            });

            var fakeHandler = new FakeHandlerWithAttr1();
            _mockContainer.Setup(x => x.GetInstance(typeof(FakeHandlerWithAttr1))).Returns(fakeHandler);

            // Act
            var message1 = new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            };
            messageProcessor.ProcessMessage<FakeMessage1>(JsonConvert.SerializeObject(message1),
                new ConsumeContext {Headers = new Dictionary<string, object> {{"RoutingKey", Encoding.ASCII.GetBytes("Test") }}});

            // Assert
            Assert.Equal(message1.CorrelationId, fakeHandler.Command.CorrelationId);
            Assert.Equal(message1.Username, fakeHandler.Command.Username);
            _mockContainer.Verify(x => x.GetInstance(typeof(FakeHandlerWithAttr1)), Times.Once);
        }