コード例 #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);
        }
コード例 #2
0
        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';
コード例 #3
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);
        }
コード例 #4
0
        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"));
        }