Example #1
0
        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);
        }
Example #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);
        }
Example #3
0
 public async Task Run()
 {
     await _middleware.InvokeAsync(_httpContext);
 }
Example #4
0
 public async Task Validate()
 {
     await _middleware.InvokeAsync(_httpContext);
 }