/// <summary>
 /// Helper for regression tests that URLs less than or equal to 2048 characters, or requests that are not GET,
 /// are not modified. If you are testing with GET, the length should be less than 2048.
 /// </summary>
 private void SubtestGetWithUrlOkayLengthByDefault(uint length, HttpMethod method)
 {
     var requestUri = "http://www.example.com/?q=" + new String('x', (int)length - 26);
     var request = new HttpRequestMessage(method, requestUri);
     var mockHandler = new MockMessageHandler();
     var handler = new ConfigurableMessageHandler(mockHandler);
     handler.ExecuteInterceptors.Add(new MaxUrlLengthInterceptor(DefaultMaxUrlLength));
     using (var httpClient = new HttpClient(handler))
     {
         httpClient.SendAsync(request);
         Assert.That(request.RequestUri.ToString().Length, Is.EqualTo(length));
         Assert.That(request.Method, Is.EqualTo(method));
         Assert.That(request.Headers.Contains("X-HTTP-Method-Override"), Is.False);
         Assert.That(request.Content, Is.Null);
         Assert.That(request.RequestUri, Is.EqualTo(new Uri(requestUri)));
     }
 }
 public void TestGetWithUrlTooLongByUserSpecified()
 {
     uint maxUrlLength = 1000;
     var query = "q=" + new String('x', 900) + "&x=" + new String('y', 72);
     var uri = "http://www.example.com/";
     var requestUri = uri + "?" + query;
     var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
     var mockHandler = new MockMessageHandler();
     var handler = new ConfigurableMessageHandler(mockHandler);
     handler.ExecuteInterceptors.Add(new MaxUrlLengthInterceptor(maxUrlLength));
     using (var httpClient = new HttpClient(handler))
     {
         httpClient.SendAsync(request);
         // Confirm the test URI is one character too long
         Assert.That(requestUri.Length, Is.EqualTo(maxUrlLength + 1));
         // Confirm the request was modified correctly:
         Assert.That(request.Method, Is.EqualTo(HttpMethod.Post));
         Assert.That(request.Headers.GetValues("X-HTTP-Method-Override").Single(), Is.EqualTo("GET"));
         Assert.That(request.Content.Headers.ContentType,
             Is.EqualTo(new MediaTypeHeaderValue("application/x-www-form-urlencoded")));
         Assert.That(request.RequestUri, Is.EqualTo(new Uri(uri)));
         Assert.That(mockHandler.RequestContent, Is.EqualTo(query));
     }
 }
        public void TestGetWithUrlMaxLengthDisabled()
        {
            var query = "q=" + new String('x', 5000) + "&x=" + new String('y', 6000);
            var uri = "http://www.example.com/";
            var requestUri = uri + "?" + query;
            var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
            var messageHandler = new MockMessageHandler();
            var initializer = (new BaseClientService.Initializer
            {
                HttpClientFactory = new MockHttpClientFactory(messageHandler),
                MaxUrlLength = 0
            });

            using (var service = new MockClientService(initializer))
            {
                service.HttpClient.SendAsync(request);
                // Confirm the request was not modified.
                Assert.That(request.RequestUri.ToString().Length, Is.EqualTo(requestUri.Length));
                Assert.That(request.Method, Is.EqualTo(HttpMethod.Get));
                Assert.That(request.Headers.Contains("X-HTTP-Method-Override"), Is.False);
                Assert.That(request.Content, Is.Null);
                Assert.That(request.RequestUri, Is.EqualTo(new Uri(requestUri)));
            }
        }
 public void TestGetPathQueryWithUrlOkayLengthByDefault()
 {
     uint maxUrlLength = 1000;
     var query = "q=" + new String('x', 1000);
     var uri = "http://www.googleapis.com/language/translate/v2";
     var requestUri = uri + "?" + query;
     var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
     var mockHandler = new MockMessageHandler();
     var handler = new ConfigurableMessageHandler(mockHandler);
     handler.AddExecuteInterceptor(new MaxUrlLengthInterceptor(maxUrlLength));
     using (var httpClient = new HttpClient(handler))
     {
         httpClient.SendAsync(request);
         // Confirm the request was modified correctly, and the uri was set correctly.
         Assert.That(request.RequestUri, Is.EqualTo(new Uri(uri)));
         Assert.That(mockHandler.RequestContent, Is.EqualTo(query));
     }
 }
 public void TestGetWithUrlTooLongByDefault()
 {
     // Build a query string such that the whole URI adds up to 2049 characters
     var query = "q=" + new String('x', 1020) + "&x=" + new String('y', 1000);
     var uri = "http://www.example.com/";
     var requestUri = uri + "?" + query;
     var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
     var messageHandler = new MockMessageHandler();
     using (var service = new MockClientService(new BaseClientService.Initializer()
         {
             HttpClientFactory = new MockHttpClientFactory(messageHandler)
         }))
     {
         service.HttpClient.SendAsync(request);
         // Confirm the test URI is one character too long.
         Assert.That(requestUri.Length, Is.EqualTo(DefaultMaxUrlLength + 1));
         // Confirm the request was modified correctly:
         Assert.That(request.Method, Is.EqualTo(HttpMethod.Post));
         Assert.That(request.Headers.GetValues("X-HTTP-Method-Override").Single(), Is.EqualTo("GET"));
         Assert.That(request.Content.Headers.ContentType,
             Is.EqualTo(new MediaTypeHeaderValue("application/x-www-form-urlencoded")));
         Assert.That(request.RequestUri, Is.EqualTo(new Uri(uri)));
         Assert.That(messageHandler.RequestContent, Is.EqualTo(query));
     }
 }