protected override Task ExecuteAsync(CancellationToken stoppingToken) { _webHost = CreateDefaultBuilder <Startup>(Array.Empty <string>()) .ConfigureServices(services => { services.AddSingleton(_settings); }) .UseUrls("http://127.0.0.1:0") .Build(); _webHost.RunAsync(stoppingToken); _hostedServiceContext.WebApplication2Port = _webHost.GetServerPort(); return(Task.CompletedTask); }
public async Task ProxyHandler_ShouldReturnServiceUnavailableStatusWhenTargetServerIsDown() { using (IWebHost targetServer = CreateTargetServer(_okProxyContext)) { await targetServer.StartAsync(); int port = targetServer.GetServerPort(); await targetServer.StopAsync(); using (TestServer proxyServer = CreateProxyServer(port)) { HttpClient client = proxyServer.CreateClient(); HttpResponseMessage result = await client.GetAsync(ProxyStartup.MappedProxyUrl); result.StatusCode.Should().Be(HttpStatusCode.ServiceUnavailable); } } }
public async Task ProxyHandler_ShouldAddCorrelationIdIfNoneExists() { using (IWebHost targetServer = CreateTargetServer(_okProxyContext)) { await targetServer.StartAsync(); int port = targetServer.GetServerPort(); using (TestServer proxyServer = CreateProxyServer(port)) { HttpClient client = proxyServer.CreateClient(); HttpResponseMessage result = await client.GetAsync(ProxyStartup.MappedProxyUrl); var content = JsonConvert.DeserializeObject(await result.Content.ReadAsStringAsync(), typeof(ProxyResponse)) as ProxyResponse; (content != null && content.RequestHeaders.ContainsKey(CorrelationIdExtensions.XCorrelationId)).Should().BeTrue(); content.RequestHeaders[CorrelationIdExtensions.XCorrelationId].Should().NotBeNullOrWhiteSpace(); } } }
public async Task ProxyHandler_OnReceivingSuccessResponse_ForwardsBack() { using (IWebHost targetServer = CreateTargetServer(_okProxyContext)) { await targetServer.StartAsync(); int port = targetServer.GetServerPort(); using (TestServer proxyServer = CreateProxyServer(port)) { HttpClient client = proxyServer.CreateClient(); HttpResponseMessage result = await client.GetAsync(ProxyStartup.MappedProxyUrl); var content = JsonConvert.DeserializeObject(await result.Content.ReadAsStringAsync(), typeof(ProxyResponse)) as ProxyResponse; result.StatusCode.Should().Be(_okProxyContext.StatusCode); content?.Content.Should().Be(_okProxyContext.Content); } } }
public override async Task InitializeAsync() { _upstreamServer = UpstreamBuilder .UseKestrel() .UseUrls("http://*:0") .Build(); await _upstreamServer.StartAsync(); var port = _upstreamServer.GetServerPort(); _proxyServer = ProxyBuilder .UseKestrel() .UseUrls("http://*:0") .UseSetting("port", port.ToString()) .ConfigureTestServices(services => { services .AddProxy(httpClientBuilder => httpClientBuilder .ConfigureHttpClient(client => client.Timeout = TimeSpan.FromSeconds(1))); }) .Build(); await _proxyServer.StartAsync(); }
public async Task ProxyHandler_ShouldForwardCorrelationIdIfOneExists() { string correlationId = Guid.NewGuid().ToString(); using (IWebHost targetServer = CreateTargetServer(_okProxyContext)) { await targetServer.StartAsync(); int port = targetServer.GetServerPort(); using (TestServer proxyServer = CreateProxyServer(port)) { HttpClient client = proxyServer.CreateClient(); client.DefaultRequestHeaders.Add(CorrelationIdExtensions.XCorrelationId, correlationId); HttpResponseMessage result = await client.GetAsync(ProxyStartup.MappedProxyUrl); var content = JsonConvert.DeserializeObject(await result.Content.ReadAsStringAsync(), typeof(ProxyResponse)) as ProxyResponse; content?.RequestHeaders.ContainsKey(CorrelationIdExtensions.XCorrelationId).Should().BeTrue(); content?.RequestHeaders[CorrelationIdExtensions.XCorrelationId].Should().Be(correlationId); } } }
public async Task InitializeAsync() { await _proxy.StartAsync(); _port = _proxy.GetServerPort(); }