System.Net.Http.AutoRedirectTests.AutoRedirectTests C# (CSharp) Method

AutoRedirectTests() public method

public AutoRedirectTests ( ) : System.Collections.Generic
return System.Collections.Generic
        public AutoRedirectTests()
        {
            Func<IOwinRequest, Task<string>> readToEnd = async request =>
            {
                using(var reader = new StreamReader(request.Body))
                {
                    return await reader.ReadToEndAsync();
                }
            };

            var responders = new Dictionary<string, Action<IOwinContext>>
            {
                { "/redirect-301-absolute", async context =>
                    {
                        context.Response.StatusCode = 301;
                        context.Response.ReasonPhrase = "Moved Permanently";
                        context.Response.Headers.Add("Location", new [] { "http://localhost/redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-301-relative", async context =>
                    {
                        context.Response.StatusCode = 301;
                        context.Response.ReasonPhrase = "Moved Permanently";
                        context.Response.Headers.Add("Location", new [] { "redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-301-absolute-setcookie", async context =>
                    {
                        context.Response.StatusCode = 302;
                        context.Response.ReasonPhrase = "Moved Permanently";
                        context.Response.Headers.Add("Location", new [] { "http://localhost/redirect" });
                        context.Response.Headers.Add("Set-Cookie", new []{ "foo=bar"});
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-302-absolute", async context =>
                    {
                        context.Response.StatusCode = 302;
                        context.Response.ReasonPhrase = "Found";
                        context.Response.Headers.Add("Location", new [] { "http://localhost/redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-302-relative", async context =>
                    {
                        context.Response.StatusCode = 302;
                        context.Response.ReasonPhrase = "Found";
                        context.Response.Headers.Add("Location", new [] { "redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-302-relative-setcookie", async context =>
                    {
                        context.Response.StatusCode = 302;
                        context.Response.ReasonPhrase = "Found";
                        context.Response.Headers.Add("Location", new [] { "redirect" });
                        context.Response.Headers.Add("Set-Cookie", new []{ "foo=bar"});
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-303-absolute", async context =>
                    {
                        context.Response.StatusCode = 303;
                        context.Response.ReasonPhrase = "See Other";
                        context.Response.Headers.Add("Location", new [] { "http://localhost/redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-303-relative", async context =>
                    {
                        context.Response.StatusCode = 303;
                        context.Response.ReasonPhrase = "See Other";
                        context.Response.Headers.Add("Location", new [] { "redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-307-absolute", async context =>
                    {
                        context.Response.StatusCode = 307;
                        context.Response.ReasonPhrase = "Temporary Redirect";
                        context.Response.Headers.Add("Location", new [] { "http://localhost/redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-307-relative", async context =>
                    {
                        context.Response.StatusCode = 307;
                        context.Response.ReasonPhrase = "Temporary Redirect";
                        context.Response.Headers.Add("Location", new [] { "redirect" });
                        await readToEnd(context.Request);
                    }
                },
                { "/redirect-loop", async context =>
                    {
                        context.Response.StatusCode = 302;
                        context.Response.ReasonPhrase = "Found";
                        context.Response.Headers.Add("Location", new[] { "http://localhost/redirect-loop" });
                        await readToEnd(context.Request);
                    }
                },
                {
                    "/redirect", async context =>
                    {
                        context.Response.StatusCode = 200;
                        var requestBody = await readToEnd(context.Request);
                        await context.Response.WriteAsync(requestBody);
                    }
                }
            };
            AppFunc appFunc = env =>
            {
                var context = new OwinContext(env);
                responders[context.Request.Path.Value](context);
                return Task.FromResult((object)null);
            };
            _handler = new OwinHttpMessageHandler(appFunc)
            {
                AllowAutoRedirect = true
            };
        }