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); } }
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); }
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); } }