private static async Task Dispatch(IRequestContext ctx, Handler handler) { try { await handler(ctx).ConfigureAwait(false); } catch (Exception e) { ctx.SetStatus(500); await Handlers.BodyString("text/plain", "Internal error from test server: " + e.ToString())(ctx); }; }
public async Task BodyStringWithCharsetInHeader() { string body = "hello"; await WithServerAndClient(Handlers.BodyString("text/weird", body, Encoding.UTF8), async (server, client) => { var resp = await client.GetAsync(server.Uri); Assert.Equal(200, (int)resp.StatusCode); AssertHeader(resp, "content-type", "text/weird; charset=utf-8"); Assert.Equal(body, await resp.Content.ReadAsStringAsync()); }); }
public async Task ChainStatusAndHeadersAndBody() { var handler = Handlers.Status(201) .Then(Handlers.Header("name1", "value1")) .Then(Handlers.Header("name2", "value2")) .Then(Handlers.BodyString("text/plain", "hello")); await WithServerAndClient(handler, async (server, client) => { var resp = await client.GetAsync(server.Uri); Assert.Equal(201, (int)resp.StatusCode); AssertHeader(resp, "name1", "value1"); AssertHeader(resp, "name2", "value2"); AssertHeader(resp, "content-type", "text/plain"); Assert.Equal("hello", await resp.Content.ReadAsStringAsync()); }); }
public async Task ServerCanBeUsedAsFakeProxy() { var proxyResp = Handlers.Status(200).Then(Handlers.BodyString("text/plain", "hello")); using (var fakeProxy = HttpServer.Start(proxyResp)) { var proxyParam = new WebProxy(fakeProxy.Uri); using (var client = new HttpClient(new HttpClientHandler { Proxy = proxyParam }, true)) { var fakeTargetUri = new Uri("http://example/not/real"); var resp = await client.GetAsync(fakeTargetUri); Assert.Equal(200, (int)resp.StatusCode); Assert.Equal("hello", await resp.Content.ReadAsStringAsync()); var request = fakeProxy.Recorder.RequireRequest(); Assert.Equal("GET", request.Method); Assert.Equal(fakeTargetUri, request.Uri); Assert.Equal("/not/real", request.Path); } } }