コード例 #1
0
        public async Task Invoke_WithEndpoint_InvokesDelegate()
        {
            // Arrange
            var httpContext = new DefaultProtoContext();

            httpContext.RequestServices = new ServiceProvider();

            var             invoked      = false;
            RequestDelegate endpointFunc = (c) =>
            {
                invoked = true;
                return(Task.CompletedTask);
            };

            httpContext.Features.Set <IEndpointFeature>(new EndpointSelectorContext()
            {
                Endpoint = new Endpoint(endpointFunc, EndpointMetadataCollection.Empty, "Test"),
            });

            RequestDelegate next = (c) =>
            {
                return(Task.CompletedTask);
            };

            var middleware = new EndpointMiddleware(NullLogger <EndpointMiddleware> .Instance, next, RouteOptions);

            // Act
            await middleware.Invoke(httpContext);

            // Assert
            Assert.True(invoked);
        }
コード例 #2
0
        public async Task Invoke_NoFeature_NoOps()
        {
            // Arrange
            var httpContext = new DefaultProtoContext();

            httpContext.RequestServices = new ServiceProvider();

            RequestDelegate next = (c) =>
            {
                return(Task.CompletedTask);
            };

            var middleware = new EndpointMiddleware(NullLogger <EndpointMiddleware> .Instance, next, RouteOptions);

            // Act
            await middleware.Invoke(httpContext);

            // Assert - does not throw
        }
コード例 #3
0
        public async Task Invoke_WithEndpoint_DoesNotThrowIfUnhandledCorsAttributesWereFound_ButSuppressedViaOptions()
        {
            // Arrange
            var httpContext = new DefaultProtoContext
            {
                RequestServices = new ServiceProvider()
            };

            httpContext.Features.Set <IEndpointFeature>(new EndpointSelectorContext()
            {
                Endpoint = new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(Mock.Of <IAuthorizeData>()), "Test"),
            });
            var routeOptions = Options.Create(new RouteOptions {
                SuppressCheckForUnhandledSecurityMetadata = true
            });
            var middleware = new EndpointMiddleware(NullLogger <EndpointMiddleware> .Instance, _ => Task.CompletedTask, routeOptions);

            // Act & Assert
            await middleware.Invoke(httpContext);
        }
コード例 #4
0
        public async Task Invoke_WithEndpoint_WorksIfCorsMetadataWasFound_AndCorsMiddlewareInvoked()
        {
            // Arrange
            var httpContext = new DefaultProtoContext
            {
                RequestServices = new ServiceProvider()
            };

            httpContext.Features.Set <IEndpointFeature>(new EndpointSelectorContext()
            {
                Endpoint = new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(Mock.Of <ICorsMetadata>()), "Test"),
            });

            httpContext.Items[EndpointMiddleware.CorsMiddlewareInvokedKey] = true;

            var middleware = new EndpointMiddleware(NullLogger <EndpointMiddleware> .Instance, _ => Task.CompletedTask, RouteOptions);

            // Act & Assert
            await middleware.Invoke(httpContext);

            // If we got this far, we can sound the everything's OK alarm.
        }
コード例 #5
0
        public async Task Invoke_WithEndpoint_ThrowsIfCorsMetadataWasFound_ButCorsMiddlewareNotInvoked()
        {
            // Arrange
            var expected = "Endpoint Test contains CORS metadata, but a middleware was not found that supports CORS." +
                           Environment.NewLine +
                           "Configure your application startup by adding app.UseCors() inside the call to Configure(..) in the application startup code.";
            var httpContext = new DefaultProtoContext
            {
                RequestServices = new ServiceProvider()
            };

            httpContext.Features.Set <IEndpointFeature>(new EndpointSelectorContext()
            {
                Endpoint = new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(Mock.Of <ICorsMetadata>()), "Test"),
            });

            var middleware = new EndpointMiddleware(NullLogger <EndpointMiddleware> .Instance, _ => Task.CompletedTask, RouteOptions);

            // Act & Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => middleware.Invoke(httpContext));

            // Assert
            Assert.Equal(expected, ex.Message);
        }