public void TestRecordMaintainsUpstreamOverrideHostHeader(string upstreamHostHeaderValue) { var httpContext = new DefaultHttpContext(); RecordingHandler testRecordingHandler = new RecordingHandler(Directory.GetCurrentDirectory()); testRecordingHandler.StartRecording("hello.json", httpContext.Response); var recordingId = httpContext.Response.Headers["x-recording-id"].ToString(); httpContext.Request.Body = TestHelpers.GenerateStreamRequestBody(String.Empty); httpContext.Request.ContentLength = 0; httpContext.Request.Headers["x-recording-id"] = recordingId; httpContext.Request.Headers["x-recording-upstream-base-uri"] = "http://example.org"; if (!String.IsNullOrWhiteSpace(upstreamHostHeaderValue)) { httpContext.Request.Headers["x-recording-upstream-host-header"] = upstreamHostHeaderValue; } httpContext.Request.Method = "GET"; var upstreamRequest = testRecordingHandler.CreateUpstreamRequest(httpContext.Request, new byte[] { }); if (!String.IsNullOrWhiteSpace(upstreamHostHeaderValue)) { Assert.Equal(upstreamHostHeaderValue, upstreamRequest.Headers.Host); } else { Assert.Null(upstreamRequest.Headers.Host); } }
public void TestCreateUpstreamRequestIncludesExpectedHeaders(params string[] incomingHeaders) { var requestContext = GenerateHttpRequestContext(incomingHeaders); var recordingHandler = new RecordingHandler(Directory.GetCurrentDirectory()); var upstreamRequestContext = GenerateHttpRequestContext(incomingHeaders); var output = recordingHandler.CreateUpstreamRequest(upstreamRequestContext.Request, new byte[] { }); // iterate across the set we know about and confirm that GenerateUpstreamRequest worked properly! var setOfHeaders = GenerateHeaderValuesTuples(incomingHeaders); { foreach (var headerTuple in setOfHeaders) { var inContent = false; var inStandard = false; try { inContent = output.Headers.Contains(headerTuple.Item1); } catch (Exception) { } try { inStandard = output.Content.Headers.Contains(headerTuple.Item1); } catch (Exception) { } Assert.True(inContent || inStandard); } } }