public async Task OkStatusShouldPassThrough() { var handler = CreateMockHttpHandler(new HttpResponseMessage(HttpStatusCode.OK)); var adapter = new HttpClientAdapter(handler); var httpRequestMessage = CreateRequest(HttpMethod.Get); var response = await adapter.SendAsync(httpRequestMessage, new CancellationToken()); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Same(response.RequestMessage, httpRequestMessage); }
public void SendAsync_WhenCalled_ShouldReturnHttpResponseMessage( HttpRequestMessage requestMessage) { // Arrange var sut = new HttpClientAdapter(); // Act var actual = sut.SendAsync(requestMessage); // Assert actual.Should().NotBeNull(); }
public async Task Status303ShouldRedirectChangeMethod() { var redirectResponse = new HttpResponseMessage(HttpStatusCode.SeeOther); redirectResponse.Headers.Location = new Uri("http://example.org/bar"); var handler = CreateMockHttpHandler(redirectResponse, new HttpResponseMessage(HttpStatusCode.OK)); var adapter = new HttpClientAdapter(handler); var httpRequestMessage = CreateRequest(HttpMethod.Post); var response = await adapter.SendAsync(httpRequestMessage, new CancellationToken()); Assert.Equal(HttpMethod.Get, response.RequestMessage.Method); Assert.NotSame(response.RequestMessage, httpRequestMessage); }
[InlineData(HttpStatusCode.TemporaryRedirect)] // 307 public async Task RedirectWithDifferentHostShouldLoseAuthHeader(HttpStatusCode statusCode) { var redirectResponse = new HttpResponseMessage(statusCode); redirectResponse.Headers.Location = new Uri("http://example.net/bar"); var handler = CreateMockHttpHandler(redirectResponse, new HttpResponseMessage(HttpStatusCode.OK)); var adapter = new HttpClientAdapter(handler); var httpRequestMessage = CreateRequest(HttpMethod.Get); httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue("fooAuth", "aparam"); var response = await adapter.SendAsync(httpRequestMessage, new CancellationToken()); Assert.NotSame(response.RequestMessage, httpRequestMessage); Assert.Null(response.RequestMessage.Headers.Authorization); }
public async Task Exceed3RedirectsShouldReturn() { var redirectResponse = new HttpResponseMessage(HttpStatusCode.Found); redirectResponse.Headers.Location = new Uri("http://example.org/bar"); var redirectResponse2 = new HttpResponseMessage(HttpStatusCode.Found); redirectResponse2.Headers.Location = new Uri("http://example.org/foo"); var handler = CreateMockHttpHandler(redirectResponse, redirectResponse2); var adapter = new HttpClientAdapter(handler); var httpRequestMessage = CreateRequest(HttpMethod.Get); await Assert.ThrowsAsync <InvalidOperationException>( () => adapter.SendAsync(httpRequestMessage, new CancellationToken())); }
[InlineData(HttpStatusCode.TemporaryRedirect)] // 307 public async Task Status301ShouldRedirectPOSTWithBody(HttpStatusCode statusCode) { var redirectResponse = new HttpResponseMessage(statusCode); redirectResponse.Headers.Location = new Uri("http://example.org/bar"); var handler = CreateMockHttpHandler(redirectResponse, new HttpResponseMessage(HttpStatusCode.OK)); var adapter = new HttpClientAdapter(handler); var httpRequestMessage = CreateRequest(HttpMethod.Post); httpRequestMessage.Content = new StringContent("Hello World"); var response = await adapter.SendAsync(httpRequestMessage, new CancellationToken()); Assert.Equal(response.RequestMessage.Method, httpRequestMessage.Method); Assert.NotSame(response.RequestMessage, httpRequestMessage); }
public async Task <bool> CallWebService(HttpClientAdapter httpClient, string dateOnly) { using (httpClient) { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri($"https://kayaposoft.com/enrico/json/v1.0/?action=isPublicHoliday&date={dateOnly}&country=usa")); request.Headers.Add("Connection", "close"); HttpResponseMessage response = await httpClient.SendAsync(request); if (response.StatusCode != HttpStatusCode.OK) { return(false); } EnricoResponse enricoResponse = DeserializeResponse <EnricoResponse>(await response.Content.ReadAsStringAsync()); return(enricoResponse.isPublicHoliday); } }
public Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { request.Headers.Add("Time-Zone", "UTC"); return(_client.SendAsync(request, cancellationToken)); }