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 void GlobalSetup() { var next = new RequestDelegate(_ => Task.CompletedTask); _middleware = new ContentHashValidationMiddleware(next, Options.Create(new ContentHashValidationOptions()), NullLogger <ContentHashValidationMiddleware> .Instance); var bodyBuffer = Encoding.UTF8.GetBytes(new string('-', RequestBodyByteSize)); var hash = SHA256.Create().ComputeHash(bodyBuffer); var hashHeader = "00"; if (!FastCorruptedHeader) { hashHeader = BitConverter.ToString(hash); hashHeader = hashHeader[0..^ 2] + '0';
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 void GlobalSetup() { var next = new RequestDelegate(_ => Task.CompletedTask); _middleware = new ContentHashValidationMiddleware(next, Options.Create(new ContentHashValidationOptions()), NullLogger <ContentHashValidationMiddleware> .Instance); var bodyBuffer = Encoding.UTF8.GetBytes(new string('-', RequestBodyByteSize)); var hashHeader = new string('0', 64); _httpContext = new DefaultHttpContext(); _httpContext.Request.Body = new MemoryStream(bodyBuffer); _httpContext.Request.Headers[ContentHashValidationOptions.DefaultHeaderName] = hashHeader; _httpContext.Request.Method = "POST"; _httpContext.SetEndpoint(new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(new ValidateContentHashAttribute()), "someRoute")); }