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); }
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 }
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); }
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. }
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); }