public async Task ShouldSendMessageToAggregatorProcessor()
        {
            _mockConfiguration.SetupGet(x => x.MessageProcessingMiddleware).Returns(new List <Type>());

            var message = new FakeMessage1(Guid.NewGuid())
            {
                Username = "******"
            };

            var processor = new Mock <IAggregatorProcessor>();

            processor.Setup(x => x.ProcessMessage <FakeMessage1>(JsonConvert.SerializeObject(message)));

            var busState = new BusState();

            busState.AggregatorProcessors[typeof(FakeMessage1)] = processor.Object;

            var pipeline = new ProcessMessagePipeline(_mockConfiguration.Object, busState);
            await pipeline.ExecutePipeline(_consumeContext, typeof(FakeMessage1), new Envelope
            {
                Headers = new Dictionary <string, object>(),
                Body    = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message))
            });

            processor.Verify(x => x.ProcessMessage <FakeMessage1>(It.Is <string>(y => JsonConvert.DeserializeObject <FakeMessage1>(y).Username == "Tim")), Times.Once);
        }
        public async Task ShouldExecuteHandlerWhenNoMiddlewareDefined()
        {
            _mockConfiguration.SetupGet(x => x.MessageProcessingMiddleware).Returns(new List <Type>());

            var pipeline = new ProcessMessagePipeline(_mockConfiguration.Object, new BusState());
            await pipeline.ExecutePipeline(_consumeContext, typeof(MiddlewareMessage), new Envelope
            {
                Headers = new Dictionary <string, object>(),
                Body    = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new MiddlewareMessage(Guid.NewGuid())))
            });


            Assert.False(_middleware1BeforeExecuted);
            Assert.False(_middleware1AfterExecuted);
            Assert.False(_middleware2BeforeExecuted);
            Assert.False(_middleware2AfterExecuted);

            _mockProcessManagerProcessor.Verify(x => x.ProcessMessage <MiddlewareMessage>(It.IsAny <string>(), It.Is <IConsumeContext>(x => x == _consumeContext)), Times.Once);
            _mockMessageHandlerProcessor.Verify(x => x.ProcessMessage <MiddlewareMessage>(It.IsAny <string>(), It.Is <IConsumeContext>(x => x == _consumeContext)), Times.Once);
        }