Пример #1
0
        public void Execute_CompositeInterceptor_CallsProceedInExpectedSequence()
        {
            int callOrder            = 0;
            var firstInterceptorMock = new Mock <IInterceptor>();

            firstInterceptorMock.Setup(i => i.Invoke(It.IsAny <IInvocationInfo>()))
            .Callback(() => Assert.AreEqual(0, callOrder++))
            .Returns <IInvocationInfo>(ii => ii.Proceed());


            var secondInterceptorMock = new Mock <IInterceptor>();

            secondInterceptorMock.Setup(i => i.Invoke(It.IsAny <IInvocationInfo>()))
            .Callback(() => Assert.AreEqual(1, callOrder++))
            .Returns <IInvocationInfo>(ii => ii.Proceed());

            var thirdInterceptorMock = new Mock <IInterceptor>();

            thirdInterceptorMock.Setup(i => i.Invoke(It.IsAny <IInvocationInfo>()))
            .Callback(() => Assert.AreEqual(2, callOrder++))
            .Returns <IInvocationInfo>(ii => ii.Proceed());

            var invocationMock = new Mock <IInvocationInfo>();

            var compositeInterceptor = new CompositeInterceptor(new[]
            {
                new Lazy <IInterceptor>(() => firstInterceptorMock.Object),
                new Lazy <IInterceptor>(() => secondInterceptorMock.Object),
                new Lazy <IInterceptor>(() => thirdInterceptorMock.Object)
            });

            compositeInterceptor.Invoke(invocationMock.Object);
        }
        public void Execute_CompositeInterceptor_CallsProceedInExpectedSequence()
        {

            int callOrder = 0;
            var firstInterceptorMock = new Mock<IInterceptor>();
            firstInterceptorMock.Setup(i => i.Invoke(It.IsAny<IInvocationInfo>()))
                                .Callback(() => Assert.Equal(0, callOrder++))
                                .Returns<IInvocationInfo>(ii => ii.Proceed());


            var secondInterceptorMock = new Mock<IInterceptor>();
            secondInterceptorMock.Setup(i => i.Invoke(It.IsAny<IInvocationInfo>()))
                                 .Callback(() => Assert.Equal(1, callOrder++))
                                .Returns<IInvocationInfo>(ii => ii.Proceed());

            var thirdInterceptorMock = new Mock<IInterceptor>();
            thirdInterceptorMock.Setup(i => i.Invoke(It.IsAny<IInvocationInfo>()))
                                .Callback(() => Assert.Equal(2, callOrder++))
                                .Returns<IInvocationInfo>(ii => ii.Proceed());

            var invocationMock = new Mock<IInvocationInfo>();

            var compositeInterceptor = new CompositeInterceptor(new[]
                                                                    {
                                                                        new Lazy<IInterceptor>(() => firstInterceptorMock.Object), 
                                                                        new Lazy<IInterceptor>(() => secondInterceptorMock.Object),
                                                                        new Lazy<IInterceptor>(() => thirdInterceptorMock.Object)
                                                                    });

            compositeInterceptor.Invoke(invocationMock.Object);
        }
Пример #3
0
        public void SingleInterceptorCalled(IInterceptor interceptor, IInvocation invocation)
        {
            var sut = new CompositeInterceptor(interceptor);

            sut.Intercept(invocation);

            interceptor.Received().Intercept(invocation);
        }
Пример #4
0
        public void InterceptorsCalledInOrder([Frozen] IInterceptor[] interceptors,
                                              CompositeInterceptor sut,
                                              IInvocation invocation)
        {
            var results = new List <IInterceptor>();

            foreach (var i in interceptors)
            {
                i.When(x => x.Intercept(invocation)).Do(_ => results.Add(i));
            }

            sut.Intercept(invocation);

            results.Should().Equal(interceptors);
        }
        public void Execute_CompositeInterceptor_PassesArgumentsToInterceptor()
        {
            var firstInterceptorMock = new Mock<IInterceptor>();
            var secondInterceptorMock = new Mock<IInterceptor>();
            var invocationMock = new Mock<IInvocationInfo>();
            var arguments = new object[]{42};

            invocationMock.SetupGet(i => i.Arguments).Returns(arguments);
            var compositeInterceptor = new CompositeInterceptor(new[]
                                                                    {
                                                                        new Lazy<IInterceptor>(() => firstInterceptorMock.Object), 
                                                                        new Lazy<IInterceptor>(() => secondInterceptorMock.Object),
                                                                    });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is<IInvocationInfo>(ii => ii.Arguments == arguments)));
        }
        public void Execute_CompositeInterceptor_PassesMethodToInterceptor()
        {
            var firstInterceptorMock = new Mock<IInterceptor>();
            var secondInterceptorMock = new Mock<IInterceptor>();
            var invocationMock = new Mock<IInvocationInfo>();
            var method = typeof(IMethodWithNoParameters).GetMethods()[0];

            invocationMock.SetupGet(i => i.Method).Returns(method);
            var compositeInterceptor = new CompositeInterceptor(new[]
                                                                    {
                                                                        new Lazy<IInterceptor>(() => firstInterceptorMock.Object), 
                                                                        new Lazy<IInterceptor>(() => secondInterceptorMock.Object),
                                                                    });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is<IInvocationInfo>(ii => ii.Method == method)));
        }
Пример #7
0
        public void Execute_CompositeInterceptor_PassesProxyToInterceptor()
        {
            var    firstInterceptorMock  = new Mock <IInterceptor>();
            var    secondInterceptorMock = new Mock <IInterceptor>();
            var    invocationMock        = new Mock <IInvocationInfo>();
            IProxy proxy = new Mock <IProxy>().Object;

            invocationMock.SetupGet(i => i.Proxy).Returns(proxy);
            var compositeInterceptor = new CompositeInterceptor(new[]
            {
                new Lazy <IInterceptor>(() => firstInterceptorMock.Object),
                new Lazy <IInterceptor>(() => secondInterceptorMock.Object),
            });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is <IInvocationInfo>(ii => ii.Proxy == proxy)));
        }
Пример #8
0
        public void Execute_CompositeInterceptor_PassesArgumentsToInterceptor()
        {
            var firstInterceptorMock  = new Mock <IInterceptor>();
            var secondInterceptorMock = new Mock <IInterceptor>();
            var invocationMock        = new Mock <IInvocationInfo>();
            var arguments             = new object[] { 42 };

            invocationMock.SetupGet(i => i.Arguments).Returns(arguments);
            var compositeInterceptor = new CompositeInterceptor(new[]
            {
                new Lazy <IInterceptor>(() => firstInterceptorMock.Object),
                new Lazy <IInterceptor>(() => secondInterceptorMock.Object),
            });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is <IInvocationInfo>(ii => ii.Arguments == arguments)));
        }
Пример #9
0
        public void Execute_CompositeInterceptor_PassesMethodToInterceptor()
        {
            var firstInterceptorMock  = new Mock <IInterceptor>();
            var secondInterceptorMock = new Mock <IInterceptor>();
            var invocationMock        = new Mock <IInvocationInfo>();
            var method = typeof(IMethodWithNoParameters).GetMethods()[0];

            invocationMock.SetupGet(i => i.Method).Returns(method);
            var compositeInterceptor = new CompositeInterceptor(new[]
            {
                new Lazy <IInterceptor>(() => firstInterceptorMock.Object),
                new Lazy <IInterceptor>(() => secondInterceptorMock.Object),
            });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is <IInvocationInfo>(ii => ii.Method == method)));
        }
Пример #10
0
        public void ShouldCallAddedInterceptorsOnConsume()
        {
            var sourceMessage = new ConsumedMessage(null, new MessageProperties(), new byte[0]);
            var firstMessage  = new ConsumedMessage(null, new MessageProperties(), new byte[0]);
            var secondMessage = new ConsumedMessage(null, new MessageProperties(), new byte[0]);

            var first  = Substitute.For <IProduceConsumeInterceptor>();
            var second = Substitute.For <IProduceConsumeInterceptor>();

            first.OnConsume(secondMessage).Returns(firstMessage);
            second.OnConsume(sourceMessage).Returns(secondMessage);

            var compositeInterceptor = new CompositeInterceptor();

            compositeInterceptor.Add(first);
            compositeInterceptor.Add(second);
            Assert.Equal(firstMessage, compositeInterceptor.OnConsume(sourceMessage));
        }
Пример #11
0
        public void ShouldCallAddedInterceptorsOnProduce()
        {
            var sourceMessage = new RawMessage(new MessageProperties(), new byte[0]);
            var firstMessage  = new RawMessage(new MessageProperties(), new byte[0]);
            var secondMessage = new RawMessage(new MessageProperties(), new byte[0]);

            var first  = NewMock <IProduceConsumeInterceptor>();
            var second = NewMock <IProduceConsumeInterceptor>();

            first.Expect(x => x.OnProduce(sourceMessage)).Return(firstMessage);
            second.Expect(x => x.OnProduce(firstMessage)).Return(secondMessage);

            var compositeInterceptor = new CompositeInterceptor();

            compositeInterceptor.Add(first);
            compositeInterceptor.Add(second);
            Assert.AreEqual(secondMessage, compositeInterceptor.OnProduce(sourceMessage));
        }
        public void Execute_CompositeInterceptor_PassesProxyToInterceptor()
        {
            var firstInterceptorMock = new Mock<IInterceptor>();
            var secondInterceptorMock = new Mock<IInterceptor>();
            var invocationMock = new Mock<IInvocationInfo>();
            IProxy proxy = new Mock<IProxy>().Object;

            invocationMock.SetupGet(i => i.Proxy).Returns(proxy);
            var compositeInterceptor = new CompositeInterceptor(new[]
                                                                    {
                                                                        new Lazy<IInterceptor>(() => firstInterceptorMock.Object), 
                                                                        new Lazy<IInterceptor>(() => secondInterceptorMock.Object),
                                                                    });

            compositeInterceptor.Invoke(invocationMock.Object);

            firstInterceptorMock.Verify(i => i.Invoke(It.Is<IInvocationInfo>(ii => ii.Proxy == proxy)));
        }
Пример #13
0
 public InterceptorRegistrator(IServiceRegister serviceRegister)
 {
     this.serviceRegister = serviceRegister;
     compositeInterceptor = new CompositeInterceptor();
 }
Пример #14
0
 public InterceptorRegistrator(IServiceRegister serviceRegister)
 {
     this.serviceRegister = serviceRegister;
     compositeInterceptor = new CompositeInterceptor();
 }
Пример #15
0
 public void ThrowsOnNullInvocation(CompositeInterceptor sut)
 {
     sut.Invoking(s => s.Intercept(null))
     .ShouldThrow <ArgumentNullException>();
 }
Пример #16
0
 public void SutIsInterceptor(CompositeInterceptor sut)
 {
     sut.Should().BeAssignableTo <IInterceptor>();
 }