示例#1
0
        public async Task AllowedHeaders_Copied(string names, int expected)
        {
            var httpContext   = new DefaultHttpContext();
            var proxyResponse = new HttpResponseMessage();

            proxyResponse.Headers.TryAddWithoutValidation("header1", "value1");
            proxyResponse.Headers.TryAddWithoutValidation("header2", "value2");
            proxyResponse.Headers.TryAddWithoutValidation("header3", "value3");
            proxyResponse.Headers.TryAddWithoutValidation("header4", "value4");
            proxyResponse.Headers.TryAddWithoutValidation("header5", "value5");

            var allowed          = names.Split(';');
            var transform        = new ResponseHeadersAllowedTransform(allowed);
            var transformContext = new ResponseTransformContext()
            {
                HttpContext   = httpContext,
                ProxyResponse = proxyResponse,
                HeadersCopied = false,
            };
            await transform.ApplyAsync(transformContext);

            Assert.True(transformContext.HeadersCopied);

            Assert.Equal(expected, httpContext.Response.Headers.Count());
            foreach (var header in httpContext.Response.Headers)
            {
                Assert.Contains(header.Key, allowed, StringComparer.OrdinalIgnoreCase);
            }
        }
示例#2
0
    public async Task ProxyResponseNull_DoNothing()
    {
        var httpContext = new DefaultHttpContext();

        httpContext.Response.StatusCode = 502;

        var transform        = new ResponseHeadersAllowedTransform(new[] { "header1" });
        var transformContext = new ResponseTransformContext()
        {
            HttpContext   = httpContext,
            ProxyResponse = null,
            HeadersCopied = false,
        };
        await transform.ApplyAsync(transformContext);
    }
示例#3
0
        public async Task ContentHeaders_CopiedIfAllowed(string names, int expected)
        {
            var httpContext   = new DefaultHttpContext();
            var proxyResponse = new HttpResponseMessage();

            proxyResponse.Content = new StringContent("");
            proxyResponse.Content.Headers.TryAddWithoutValidation("header0", "value0");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.Allow, "value1");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentDisposition, "value2");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentEncoding, "value3");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentLanguage, "value4");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentLocation, "value5");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentMD5, "value6");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentRange, "value7");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentType, "value8");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.Expires, "value9");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.LastModified, "value10");
            proxyResponse.Content.Headers.TryAddWithoutValidation(HeaderNames.ContentLength, "0");

            var allowed          = names.Split(';');
            var transform        = new ResponseHeadersAllowedTransform(allowed);
            var transformContext = new ResponseTransformContext()
            {
                HttpContext   = httpContext,
                ProxyResponse = proxyResponse,
                HeadersCopied = false,
            };
            await transform.ApplyAsync(transformContext);

            Assert.True(transformContext.HeadersCopied);

            Assert.Equal(expected, httpContext.Response.Headers.Count());
            foreach (var header in httpContext.Response.Headers)
            {
                Assert.Contains(header.Key, allowed, StringComparer.OrdinalIgnoreCase);
            }
        }