/// <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)); } }