public void RemoveHeader_RemovesProxyRequestHeader(string names, string removedHeader, string expected) { var httpContext = new DefaultHttpContext(); var proxyRequest = new HttpRequestMessage() { Content = new EmptyHttpContent() }; foreach (var name in names.Split("; ")) { httpContext.Request.Headers.Add(name, "value0"); RequestUtilities.AddHeader(proxyRequest, name, "value1"); } RequestTransform.RemoveHeader(new RequestTransformContext() { HttpContext = httpContext, ProxyRequest = proxyRequest }, removedHeader); foreach (var name in names.Split("; ")) { Assert.True(httpContext.Request.Headers.TryGetValue(name, out var value)); Assert.Equal("value0", value); } var expectedHeaders = expected.Split("; ", System.StringSplitOptions.RemoveEmptyEntries).OrderBy(h => h); var remainingHeaders = proxyRequest.Headers.Union(proxyRequest.Content.Headers).OrderBy(h => h.Key); Assert.Equal(expectedHeaders, remainingHeaders.Select(h => h.Key)); Assert.All(remainingHeaders, h => Assert.Equal("value1", Assert.Single(h.Value))); }
public void TakeHeader_HeadersCopied_ReturnsNothing() { var httpContext = new DefaultHttpContext(); httpContext.Request.Headers.Add("name", "value0"); var proxyRequest = new HttpRequestMessage(); var result = RequestTransform.TakeHeader(new RequestTransformContext() { HttpContext = httpContext, ProxyRequest = proxyRequest, HeadersCopied = true, }, "name"); Assert.Equal(StringValues.Empty, result); }
public void TakeHeaderFromContent_RemovesAndReturnsProxyContentHeader(bool copiedHeaders) { var httpContext = new DefaultHttpContext(); httpContext.Request.ContentType = "value0"; var proxyRequest = new HttpRequestMessage(); proxyRequest.Content = new StringContent("hello world"); var result = RequestTransform.TakeHeader(new RequestTransformContext() { HttpContext = httpContext, ProxyRequest = proxyRequest, HeadersCopied = copiedHeaders, }, HeaderNames.ContentType); Assert.Equal("text/plain; charset=utf-8", result); Assert.False(proxyRequest.Content.Headers.TryGetValues(HeaderNames.ContentType, out var _)); }
public void TakeHeader_RemovesAndReturnsProxyRequestHeader(bool copiedHeaders) { var httpContext = new DefaultHttpContext(); httpContext.Request.Headers.Add("name", "value0"); var proxyRequest = new HttpRequestMessage(); proxyRequest.Headers.Add("Name", "value1"); proxyRequest.Content = new StringContent("hello world"); proxyRequest.Content.Headers.Add("Name", "value2"); var result = RequestTransform.TakeHeader(new RequestTransformContext() { HttpContext = httpContext, ProxyRequest = proxyRequest, HeadersCopied = copiedHeaders, }, "name"); Assert.Equal("value1", result); Assert.False(proxyRequest.Headers.TryGetValues("name", out var _)); Assert.Equal(new[] { "value2" }, proxyRequest.Content.Headers.GetValues("name")); }