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);
        }
Example #7
0
        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);
            }
        }
Example #8
0
 public Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
 {
     request.Headers.Add("Time-Zone", "UTC");
     return(_client.SendAsync(request, cancellationToken));
 }