public async Task <HttpTestFullRequest> ReceiveFullRequestAsync()
        {
            HttpTestRequest request = await ReceiveRequestAsync().ConfigureAwait(false);

            string content = await ReceiveContentStringAsync().ConfigureAwait(false);

            TestHeadersSink trailingHeaders = await ReceiveTrailingHeadersAsync().ConfigureAwait(false);

            return(new HttpTestFullRequest(request.Method, request.PathAndQuery, request.Version, request.Headers, content, trailingHeaders));
        }
        public void TestCorrectNoRedirect()
        {
            RegexRedirectRule rule    = new RegexRedirectRule("/(?<first>[a-z]+)/(?<second>[a-z]+)/?", "/test/?ignore=${second}&parameters=${first}", RegexOptions.IgnoreCase, false);
            IHttpRequest      request = new HttpTestRequest
            {
                HttpVersion = "1.0",
                Uri         = new Uri("http://www.google.com/above/all/", UriKind.Absolute)
            };
            IHttpResponse response = request.CreateResponse(new HttpContext());

            rule.Process(request, response);
            Assert.Equal(request.Uri.ToString(), "http://www.google.com/test/?ignore=all&parameters=above");
        }
        public void TestCorrect()
        {
            RegexRedirectRule rule    = new RegexRedirectRule("/(?<first>[a-z]+)/(?<second>[a-z]+/?)", "/test/?parameter=${second}&ignore=${first}", RegexOptions.IgnoreCase);
            IHttpRequest      request = new HttpTestRequest
            {
                HttpVersion = "1.0",
                Uri         = new Uri("http://www.google.com/above/all/", UriKind.Absolute)
            };
            IHttpResponse response = request.CreateResponse(new HttpContext());

            rule.Process(request, response);
            Assert.Equal(HttpStatusCode.Redirect, response.Status);
        }