public async Task Should_return_200_request_When_hash_match(bool isValidatedRoute, int payloadSize) { var buffer = Encoding.UTF8.GetBytes(new string('-', payloadSize)); var hash = SHA256.Create().ComputeHash(buffer); var hashStringified = BitConverter.ToString(hash).Replace("-", ""); var httpContext = new DefaultHttpContext(); httpContext.Request.Body = new MemoryStream(buffer); httpContext.Request.Headers[ContentHashValidationOptions.DefaultHeaderName] = hashStringified; httpContext.Request.Method = "POST"; if (isValidatedRoute) { httpContext.SetEndpoint(new Endpoint(c => Task.CompletedTask, new EndpointMetadataCollection(new ValidateContentHashAttribute()), "someRoute")); } var next = new RequestDelegate(context => { context.Response.StatusCode = 200; return(Task.CompletedTask); }); var middleware = new ContentHashValidationMiddleware(next, Options.Create(new ContentHashValidationOptions()), NullLogger <ContentHashValidationMiddleware> .Instance); await middleware.InvokeAsync(httpContext); Assert.Equal(200, httpContext.Response.StatusCode); }
public async Task Should_return_400_request_When_missing_header() { var httpContext = new DefaultHttpContext(); httpContext.Request.Body = new MemoryStream(Encoding.UTF8.GetBytes("payload")); httpContext.Request.Method = "POST"; httpContext.SetEndpoint(new Endpoint(c => Task.CompletedTask, new EndpointMetadataCollection(new ValidateContentHashAttribute()), "someRoute")); var next = new RequestDelegate(_ => Task.CompletedTask); var middleware = new ContentHashValidationMiddleware(next, Options.Create(new ContentHashValidationOptions()), NullLogger <ContentHashValidationMiddleware> .Instance); await middleware.InvokeAsync(httpContext); Assert.Equal(400, httpContext.Response.StatusCode); }
public async Task Run() { await _middleware.InvokeAsync(_httpContext); }
public async Task Validate() { await _middleware.InvokeAsync(_httpContext); }