public void Create_NullBaseUrl_ShouldThrowArgumentNullException() { // Act var ex = Record.Exception(() => WebRequestHttpClientFactory.Configure(null).Create()); // Assert ex.ShouldBeOfType <ArgumentNullException>(); }
public void Create_GivenHttpCache_ShouldSetHttpCacheForHttpClient() { var baseUri = new Uri("http://fake.api.com"); var timeout = TimeSpan.FromSeconds(20); var httpClient = WebRequestHttpClientFactory.Configure(baseUri).WithTimeout(timeout).Create(); httpClient.Client.Timeout.ShouldBe(timeout); }
public void Create_GivenTimeout_ShouldSetTimeoutForHttpClient() { // Arrange var baseUri = new Uri("http://fake.api.com"); var timeout = TimeSpan.FromSeconds(20); // Act var httpClient = WebRequestHttpClientFactory.Configure(baseUri).WithTimeout(timeout).Create(); // Assert httpClient.Client.Timeout.ShouldBe(timeout); }
public async Task GetResponseAsync_ShouldTimeoutOnSlowResponse() { // Arrange var httpClient = WebRequestHttpClientFactory.Configure(new Uri(Url)).WithTimeout(TimeSpan.FromMilliseconds(100)).Create(); var webRequester = new WebRequester(httpClient); // Act var exception = await Record.ExceptionAsync(async() => await webRequester.GetResponseAsync("/delay/250")); // Assert exception.ShouldBeOfType(typeof(TaskCanceledException)); }
public void Create_WithoutConnectionLeaseTimeout_ShouldGiveDefaultConnectionLeaseOnBaseUrl() { // Arrange var baseUri = new Uri("http://fake.api.com"); const int defaultConnectionLease = -1; // Act var httpClient = WebRequestHttpClientFactory.Configure(baseUri).Create(); // Assert var connectionLeaseTimeout = ServicePointManager.FindServicePoint(baseUri).ConnectionLeaseTimeout; connectionLeaseTimeout.ShouldBe(defaultConnectionLease); }
public void Create_GivenConnectionLeaseTimeout_ShouldSetConnectionLeaseOnBaseUrl() { // Arrange var baseUri = new Uri("http://fake.api.com"); const int oneMinute = 60 * 1000; // Act var httpClient = WebRequestHttpClientFactory.Configure(baseUri).WithConnectionLeaseTimeout(60 * 1000).Create(); // Assert var connectionLeaseTimeout = ServicePointManager.FindServicePoint(baseUri).ConnectionLeaseTimeout; connectionLeaseTimeout.ShouldBe(oneMinute); }
public void Create_GivenDefaultRequestHeaders_ShouldSetRequestHeadersForHttpClient() { // Arrange var baseUri = new Uri("http://fake.api.com"); var requestHeaders = new Dictionary <string, string> { { "headerKey", "headerValue" } }; // Act var httpClient = WebRequestHttpClientFactory.Configure(baseUri).WithDefaultRequestHeaders(requestHeaders).Create(); // Assert httpClient.Client.DefaultRequestHeaders.Contains("headerKey").ShouldBeTrue(); }
public async Task GetResponseAsync_ShouldSetDefaultHeaders() { // Arrange var httpClient = WebRequestHttpClientFactory.Configure(new Uri(Url)) .WithDefaultRequestHeaders(new Dictionary <string, string> { { "fakeHeader", "fakeValue" } }) .Create(); var webRequester = new WebRequester(httpClient); // Act var response = await webRequester.GetResponseAsStringAsync("/headers"); // Assert response.Contains("fakeHeader").ShouldBeTrue(); }
public async Task GetResponseAsync_GivenConfiguratorThatAllowsCookiesOnRequestMessage_ShouldSetExpectedHeaders() { // Arrange var httpClient = WebRequestHttpClientFactory.Configure(new Uri(Url)) .WithRequestHandlerConfigurator((handler) => handler.UseCookies = false) .WithDefaultRequestHeaders(new Dictionary <string, string> { { "Cookie", "foo=bar;bar=baz" } }) .Create(); var webRequester = new WebRequester(httpClient); // Act var headerResponse = await webRequester.GetResponseAsStringAsync("/get/headers"); var cookieResponse = await webRequester.GetResponseAsStringAsync("/get/cookies"); // Assert headerResponse.Contains("Cookie").ShouldBeTrue(); headerResponse.Contains("foo=bar;bar=baz").ShouldBeTrue(); cookieResponse.ShouldBe("{\"foo\":\"bar\",\"bar\":\"baz\"}"); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultHttpClient"/> class. /// </summary> /// <param name="httpClientFactory">The factory used to create this <see cref="IHttpClient"/> implementation</param> /// <param name="defaultHttpHeaders">The default HTTP headers</param> public DefaultHttpClient([NotNull] WebRequestHttpClientFactory httpClientFactory, [NotNull] IHttpHeaders defaultHttpHeaders) { _httpClientFactory = httpClientFactory; Timeout = TimeSpan.FromSeconds(100); DefaultRequestHeaders = defaultHttpHeaders; }
public WebRequesterIntegrationTests() { _webApp = WebApp.Start <Startup>(Url); _webRequester = new WebRequester(WebRequestHttpClientFactory.Configure(new Uri(Url)).Create()); }