예제 #1
0
        public async Task ShouldReturnNotFoundIfHeaderValueDontMatchInvisibleConfiguration()
        {
            // given
            string randomEndpoint      = $"/{GetRandomString()}";
            string randomHeaderName    = GetRandomString();
            string randomHeaderValue   = GetRandomString();
            string randomHttpVerb      = GetRandomString();
            var    requestDelegateMock = new Mock <RequestDelegate>();
            var    contextMock         = new Mock <HttpContext>();
            var    httpRequestMock     = new Mock <HttpRequest>();
            var    httpResponseMock    = new Mock <HttpResponse>();

            httpRequestMock.SetupGet(request => request.Path)
            .Returns(randomEndpoint);

            httpRequestMock.SetupGet(request => request.Headers)
            .Returns(new HeaderDictionary(new Dictionary <string, StringValues>
            {
                { randomHeaderName, randomHeaderValue }
            }));

            httpRequestMock.SetupGet(request => request.Method)
            .Returns(randomHttpVerb);

            contextMock.SetupGet(context => context.Request)
            .Returns(httpRequestMock.Object);

            httpResponseMock.SetupAllProperties();

            contextMock.SetupGet(context => context.Response)
            .Returns(httpResponseMock.Object);

            // when
            var invisibleMiddleware = new InvisibleApiMiddleware(
                new List <InvisibleApiConfiguration>
            {
                new InvisibleApiConfiguration
                {
                    HttpVerb = randomHttpVerb,
                    Endpoint = randomEndpoint,
                    Header   = GetRandomString(),
                    Value    = GetRandomString()
                }
            },
                requestDelegateMock.Object);

            await invisibleMiddleware.InvokeAsync(contextMock.Object);

            // the
            httpResponseMock.Object.StatusCode.Should()
            .Be(StatusCodes.Status404NotFound);

            requestDelegateMock.Verify(requestDelegate =>
                                       requestDelegate(contextMock.Object),
                                       Times.Never);
        }
예제 #2
0
        public async Task ShouldHitApiEndpointIfEndpointIsConfiguredProperly()
        {
            // given
            string randomEndpoint      = $"/{GetRandomString()}";
            string randomHeaderName    = GetRandomString();
            string randomHeaderValue   = GetRandomString();
            string randomHttpVerb      = GetRandomString();
            var    requestDelegateMock = new Mock <RequestDelegate>();
            var    contextMock         = new Mock <HttpContext>();
            var    httpRequestMock     = new Mock <HttpRequest>();
            var    httpResponseMock    = new Mock <HttpResponse>();

            httpRequestMock.SetupGet(request => request.Path)
            .Returns(randomEndpoint);

            httpRequestMock.SetupGet(request => request.Headers)
            .Returns(new HeaderDictionary(new Dictionary <string, StringValues>
            {
                { randomHeaderName, randomHeaderValue }
            }));

            httpRequestMock.SetupGet(request => request.Method)
            .Returns(randomHttpVerb);

            contextMock.SetupGet(context => context.Request)
            .Returns(httpRequestMock.Object);

            contextMock.SetupGet(context => context.Response)
            .Returns(httpResponseMock.Object);

            // when
            var invisibleMiddleware = new InvisibleApiMiddleware(
                new List <InvisibleApiConfiguration>
            {
                new InvisibleApiConfiguration
                {
                    HttpVerb = randomHttpVerb,
                    Endpoint = randomEndpoint,
                    Header   = randomHeaderName,
                    Value    = randomHeaderValue
                }
            },
                requestDelegateMock.Object);

            await invisibleMiddleware.InvokeAsync(contextMock.Object);

            // then
            requestDelegateMock.Verify(requestDelegate =>
                                       requestDelegate(contextMock.Object),
                                       Times.Once);
        }
예제 #3
0
        public async Task ShouldHitApiEndpointIfEndpointIsntConfiguredAsInvisible()
        {
            // given
            var mockedDelegate = new Mock <RequestDelegate>();
            var context        = new Mock <HttpContext>();

            // when
            var invisibleMiddleware = new InvisibleApiMiddleware(
                new List <InvisibleApiConfiguration>(),
                mockedDelegate.Object);

            await invisibleMiddleware.InvokeAsync(context.Object);

            // then
            mockedDelegate.Verify(requestDelegate =>
                                  requestDelegate(context.Object),
                                  Times.Once);
        }