コード例 #1
0
        public void Handle_WithNancyContext_ConvertIsCalledOnThProviderServiceRequestMapper()
        {
            var expectedRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/"
            };
            var expectedResponse = new ProviderServiceResponse();
            var nancyContext     = new NancyContext
            {
                Request = new Request("GET", "/", "HTTP")
            };

            var mockRequestComparer = Substitute.For <IProviderServiceRequestComparer>();
            var mockRequestMapper   = Substitute.For <IProviderServiceRequestMapper>();
            var mockResponseMapper  = Substitute.For <INancyResponseMapper>();

            mockRequestMapper.Convert(nancyContext.Request).Returns(expectedRequest);

            var interactions = new List <ProviderServiceInteraction>
            {
                new ProviderServiceInteraction {
                    Request = expectedRequest, Response = expectedResponse
                }
            };

            nancyContext.SetMockInteraction(interactions);

            IMockProviderNancyRequestHandler handler = new MockProviderNancyRequestHandler(mockRequestComparer, mockRequestMapper, mockResponseMapper);

            handler.Handle(nancyContext);

            mockRequestMapper.Received(1).Convert(nancyContext.Request);
        }
コード例 #2
0
        public void Handle_WhenExpectedResponseHasNotBeenSet_ResponseMapperIsCalledAndReturns500Response()
        {
            var nancyContext = new NancyContext
            {
                Request = new Request("GET", "/", "HTTP")
            };

            var interactions = new List <ProviderServiceInteraction>
            {
                new ProviderServiceInteraction {
                    Request = new ProviderServiceRequest(), Response = null
                }
            };

            nancyContext.SetMockInteraction(interactions);

            var mockRequestComparer = Substitute.For <IProviderServiceRequestComparer>();
            var mockRequestMapper   = Substitute.For <IProviderServiceRequestMapper>();
            var mockResponseMapper  = Substitute.For <INancyResponseMapper>();

            mockResponseMapper.Convert(Arg.Any <ProviderServiceResponse>())
            .Returns(new Response
            {
                StatusCode = HttpStatusCode.InternalServerError
            });

            IMockProviderNancyRequestHandler handler = new MockProviderNancyRequestHandler(mockRequestComparer, mockRequestMapper, mockResponseMapper);

            var result = handler.Handle(nancyContext);

            mockResponseMapper.Received(1).Convert(Arg.Is <ProviderServiceResponse>(x => x.Status == 500));
            Assert.Equal(HttpStatusCode.InternalServerError, result.StatusCode);
        }
コード例 #3
0
        public void Handle_WithNancyContextRequestThatDoesNotMatchExpectedRequest_ResponseMapperIsCalledAndReturns500Response()
        {
            var expectedRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/Test"
            };
            var actualRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Put,
                Path   = "/Test"
            };
            var expectedResponse = new ProviderServiceResponse {
                Status = 200
            };
            var nancyResponse = new Response {
                StatusCode = HttpStatusCode.OK
            };
            var compareException = new CompareFailedException("Something failed");

            var mockRequestComparer = Substitute.For <IProviderServiceRequestComparer>();
            var mockRequestMapper   = Substitute.For <IProviderServiceRequestMapper>();
            var mockResponseMapper  = Substitute.For <INancyResponseMapper>();

            var nancyContext = new NancyContext
            {
                Request = new Request("GET", "/Test", "HTTP")
            };

            var interactions = new List <ProviderServiceInteraction>
            {
                new ProviderServiceInteraction {
                    Request = expectedRequest, Response = expectedResponse
                }
            };

            nancyContext.SetMockInteraction(interactions);

            mockRequestMapper.Convert(nancyContext.Request).Returns(actualRequest);
            mockRequestComparer
            .When(x => x.Compare(expectedRequest, actualRequest))
            .Do(x => { throw compareException; });

            mockResponseMapper.Convert(expectedResponse).Returns(nancyResponse);

            mockResponseMapper.Convert(Arg.Any <ProviderServiceResponse>())
            .Returns(new Response
            {
                StatusCode = HttpStatusCode.InternalServerError
            });

            IMockProviderNancyRequestHandler handler = new MockProviderNancyRequestHandler(mockRequestComparer, mockRequestMapper, mockResponseMapper);

            var response = handler.Handle(nancyContext);

            mockResponseMapper.Received(1).Convert(Arg.Is <ProviderServiceResponse>(x => x.Status == 500));
            Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
            Assert.NotEmpty(response.ReasonPhrase);
        }
コード例 #4
0
        public void Handle_WithNancyContextRequestThatMatchesExpectedRequest_ReturnsNancyResponse()
        {
            var expectedRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/Test"
            };
            var actualRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/Test"
            };
            var expectedResponse = new ProviderServiceResponse {
                Status = 200
            };
            var nancyResponse = new Response {
                StatusCode = HttpStatusCode.OK
            };

            var mockRequestComparer = Substitute.For <IProviderServiceRequestComparer>();
            var mockRequestMapper   = Substitute.For <IProviderServiceRequestMapper>();
            var mockResponseMapper  = Substitute.For <INancyResponseMapper>();

            var nancyContext = new NancyContext
            {
                Request = new Request("GET", "/Test", "HTTP")
            };

            var interactions = new List <ProviderServiceInteraction>
            {
                new ProviderServiceInteraction {
                    Request = expectedRequest, Response = expectedResponse
                }
            };

            nancyContext.SetMockInteraction(interactions);

            mockRequestMapper.Convert(nancyContext.Request).Returns(actualRequest);
            //mockRequestComparer.Compare Doesnt throw any exceptions
            mockResponseMapper.Convert(expectedResponse).Returns(nancyResponse);

            IMockProviderNancyRequestHandler handler = new MockProviderNancyRequestHandler(mockRequestComparer, mockRequestMapper, mockResponseMapper);

            var response = handler.Handle(nancyContext);

            Assert.Equal(nancyResponse, response);
        }
コード例 #5
0
        public void Handle_WhenExpectionIsThrownHandlingRequest_ReasonPhraseAndBodyContentIsSetWithoutBackSlashes()
        {
            var nancyResponse = new Response {
                StatusCode = HttpStatusCode.OK
            };
            var          compareException = new CompareFailedException("Something\r\n \t \\ failed");
            const string expectedMessage  = "Something     failed";

            var mockRequestComparer = Substitute.For <IProviderServiceRequestComparer>();
            var mockRequestMapper   = Substitute.For <IProviderServiceRequestMapper>();
            var mockResponseMapper  = Substitute.For <INancyResponseMapper>();

            var nancyContext = new NancyContext
            {
                Request = new Request("GET", "/Test", "HTTP")
            };

            mockRequestMapper
            .When(x => x.Convert(Arg.Any <Request>()))
            .Do(x => { throw compareException; });

            mockResponseMapper
            .Convert(Arg.Any <ProviderServiceResponse>())
            .Returns(nancyResponse);

            mockResponseMapper.Convert(Arg.Any <ProviderServiceResponse>())
            .Returns(new Response
            {
                StatusCode = HttpStatusCode.InternalServerError
            });

            IMockProviderNancyRequestHandler handler = new MockProviderNancyRequestHandler(mockRequestComparer, mockRequestMapper, mockResponseMapper);

            var response = handler.Handle(nancyContext);

            Assert.Equal(expectedMessage, response.ReasonPhrase);
            mockResponseMapper.Received(1).Convert(Arg.Is <ProviderServiceResponse>(x => BodyContentMatches(x, expectedMessage)));
        }