public void ReadAsHttpRequestMessageAsync_RequestWithEntity_ShouldReturnHttpRequestMessage()
        {
            HttpContent        content     = CreateContent(isRequest: true, hasEntity: true);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            ValidateRequestMessage(httpRequest, hasEntity: true);
        }
Example #2
0
        public async Task ReadAsHttpRequestMessageAsync_RequestWithEntity_ShouldReturnHttpRequestMessage()
        {
            HttpContent        content     = CreateContent(isRequest: true, hasEntity: true);
            HttpRequestMessage httpRequest = await content.ReadAsHttpRequestMessageAsync();

            await ValidateRequestMessageAsync(httpRequest, hasEntity : true);
        }
        public void ReadAsHttpRequestMessageAsync_WithHttpsUriScheme_ReturnsUriWithHttps()
        {
            HttpContent        content     = CreateContent(isRequest: true, hasEntity: true);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync(Uri.UriSchemeHttps).Result;

            Assert.Equal(ParserData.HttpsRequestUri, httpRequest.RequestUri);
        }
Example #4
0
        public Task ReadAsHttpRequestMessageAsync_cancellationToken_PassesCancellationToken()
        {
            CancellationTokenSource cts = new CancellationTokenSource();

            cts.Cancel();
            HttpContent content = CreateContent(isRequest: true, hasEntity: false);

            return(Assert.ThrowsAsync <OperationCanceledException>(() => content.ReadAsHttpRequestMessageAsync(cts.Token)));
        }
        public void ReadAsHttpRequestMessageAsync_cancellationToken_PassesCancellationToken()
        {
            CancellationTokenSource cts = new CancellationTokenSource();

            cts.Cancel();
            HttpContent content = CreateContent(isRequest: true, hasEntity: false);

            Assert.Throws <TaskCanceledException>(() => content.ReadAsHttpRequestMessageAsync(cts.Token).Wait());
        }
        public void ReadAsHttpRequestMessageAsync_NoHostHeader_Throws()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
            };

            HttpContent content = CreateContent(true, request, null);

            Assert.Throws <InvalidOperationException>(() => content.ReadAsHttpRequestMessageAsync().Result);
        }
        public void ReadAsHttpRequestMessageAsync_LargeHeaderSize()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: msdn.microsoft.com",
                String.Format("Cookie: {0}={1}", new String('a', 16 * 1024), new String('b', 16 * 1024))
            };

            HttpContent        content     = CreateContent(true, request, "sample body");
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync(Uri.UriSchemeHttp, 64 * 1024, 64 * 1024).Result;
        }
        public void ReadAsHttpRequestMessageAsync_TwoHostHeaders_ThrowsIOException()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: somehost.com",
                @"Host: otherhost.com",
            };

            HttpContent content = CreateContent(true, request, null);

            Assert.Throws <IOException>(() => content.ReadAsHttpRequestMessageAsync().Result);
        }
Example #9
0
        public Task ReadAsHttpRequestMessageAsync_TwoHostHeaders_Throws()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: somehost.com",
                @"Host: otherhost.com",
            };

            HttpContent content = CreateContent(true, request, null);

            return(Assert.ThrowsAsync <InvalidOperationException>(() => content.ReadAsHttpRequestMessageAsync()));
        }
        public void ReadAsHttpRequestMessageAsync_Throws_TheHeaderSizeExceededTheDefaultLimit()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: msdn.microsoft.com",
                String.Format("Cookie: {0}={1}", new String('a', 16 * 1024), new String('b', 16 * 1024))
            };

            Assert.Throws <InvalidOperationException>(() =>
            {
                HttpContent content            = CreateContent(true, request, "sample body");
                HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;
            });
        }
        public void RoundtripClientRequest(IEnumerable <string> message)
        {
            HttpContent        content            = CreateContent(true, message, null);
            HttpRequestMessage httpRequest        = content.ReadAsHttpRequestMessageAsync().Result;
            HttpMessageContent httpMessageContent = new HttpMessageContent(httpRequest);

            MemoryStream destination = new MemoryStream();

            httpMessageContent.CopyToAsync(destination).Wait();
            destination.Seek(0, SeekOrigin.Begin);
            string destinationMessage = new StreamReader(destination).ReadToEnd();
            string sourceMessage      = content.ReadAsStringAsync().Result;

            Assert.Equal(sourceMessage, destinationMessage);
        }
        public void ReadAsHttpRequestMessageAsync_Opera_ShouldBeDeserializedCorrectly()
        {
            string[] request = new string[] {
                @"GET / HTTP/1.0",
                @"User-Agent: Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
                @"Host: msdn.microsoft.com",
                @"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1",
                @"Accept-Language: en-US,en;q=0.9",
                @"Accept-Encoding: gzip, deflate",
                @"Proxy-Connection: Keep-Alive",
            };

            HttpContent        content     = CreateContent(true, request, null);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.True(httpRequest.Headers.Contains("proxy-connection"));
        }
        public void ReadAsHttpRequestMessageAsync_Firefox_ShouldBeDeserializedCorrectly()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: msdn.microsoft.com",
                @"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0",
                @"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                @"Accept-Language: en-us,en;q=0.5",
                @"Accept-Encoding: gzip, deflate",
                @"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
                @"Proxy-Connection: keep-alive",
            };

            HttpContent        content     = CreateContent(true, request, null);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.True(httpRequest.Headers.Contains("proxy-connection"));
        }
        public void ReadAsHttpRequestMessageAsync_Chrome_ShouldBeDeserializedCorrectly()
        {
            string[] request = new string[] {
                @"GET / HTTP/1.1",
                @"Host: msdn.microsoft.com",
                @"Proxy-Connection: keep-alive",
                @"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30",
                @"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                @"Accept-Encoding: gzip,deflate,sdch",
                @"Accept-Language: en-US,en;q=0.8",
                @"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3",
            };

            HttpContent        content     = CreateContent(true, request, null);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.True(httpRequest.Headers.Contains("accept-charset"));
        }
        public void ReadAsHttpRequestMessageAsync_IE_ShouldBeDeserializedCorrectly()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Accept: text/html, application/xhtml+xml, */*",
                @"Accept-Language: en-US",
                @"User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)",
                @"Accept-Encoding: gzip, deflate",
                @"Proxy-Connection: Keep-Alive",
                @"Host: msdn.microsoft.com",
                @"Cookie: omniID=1297715979621_9f45_1519_3f8a_f22f85346ac6; WT_FPC=id=65.55.227.138-2323234032.30136233:lv=1309374389020:ss=1309374389020; A=I&I=AxUFAAAAAACNCAAADYEZ7CFPss7Swnujy4PXZA!!&M=1&CS=126mAa0002ZB51a02gZB51a; MC1=GUID=568428660ad44d4ab8f46133f4b03738&HASH=6628&LV=20113&V=3; WT_NVR_RU=0=msdn:1=:2=; MUID=A44DE185EA1B4E8088CCF7B348C5D65F; MSID=Microsoft.CreationDate=03/04/2011 23:38:15&Microsoft.LastVisitDate=06/20/2011 04:15:08&Microsoft.VisitStartDate=06/20/2011 04:15:08&Microsoft.CookieId=f658f3f2-e6d6-42ab-b86b-96791b942b6f&Microsoft.TokenId=ffffffff-ffff-ffff-ffff-ffffffffffff&Microsoft.NumberOfVisits=106&Microsoft.CookieFirstVisit=1&Microsoft.IdentityToken=AA==&Microsoft.MicrosoftId=0441-6141-1523-9969; msresearch=%7B%22version%22%3A%224.6%22%2C%22state%22%3A%7B%22name%22%3A%22IDLE%22%2C%22url%22%3Aundefined%2C%22timestamp%22%3A1299281911415%7D%2C%22lastinvited%22%3A1299281911415%2C%22userid%22%3A%2212992819114151265672533023080%22%2C%22vendorid%22%3A1%2C%22surveys%22%3A%5Bundefined%5D%7D; CodeSnippetContainerLang=C#; msdn=L=1033; ADS=SN=175A21EF; s_cc=true; s_sq=%5B%5BB%5D%5D; TocHashCookie=ms310241(n)/aa187916(n)/aa187917(n)/dd273952(n)/dd295083(n)/ff472634(n)/ee667046(n)/ee667070(n)/gg259047(n)/gg618436(n)/; WT_NVR=0=/:1=query|library|en-us:2=en-us/vcsharp|en-us/library",
            };

            HttpContent        content     = CreateContent(true, request, null);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.True(httpRequest.Headers.Contains("cookie"));
        }
        public void ReadAsHttpRequestMessageAsync_Safari_ShouldBeDeserializedCorrectly()
        {
            string[] request = new string[] {
                @"GET / HTTP/1.1",
                @"Host: msdn.microsoft.com",
                @"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1",
                @"Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
                @"Accept-Language: en-US",
                @"Accept-Encoding: gzip, deflate",
                @"Connection: keep-alive",
                @"Proxy-Connection: keep-alive",
            };

            HttpContent        content     = CreateContent(true, request, null);
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.True(httpRequest.Headers.Contains("proxy-connection"));
        }
        public void ReadAsHttpRequestMessageAsync_SortHeaders()
        {
            string[] request = new[] {
                @"GET / HTTP/1.1",
                @"Host: somehost.com",
                @"Content-Language: xx",
                @"Request-Header: zz",
            };

            HttpContent        content     = CreateContent(true, request, "sample body");
            HttpRequestMessage httpRequest = content.ReadAsHttpRequestMessageAsync().Result;

            Assert.Equal("xx", httpRequest.Content.Headers.ContentLanguage.ToString());

            IEnumerable <string> requestHeaderValues;

            Assert.True(httpRequest.Headers.TryGetValues("request-header", out requestHeaderValues));
            Assert.Equal("zz", requestHeaderValues.First());
        }