Exemple #1
0
            public async Task WhenResponseContentTypeContainsCharsetThenCanDeserialize(string contentType, string content)
            {
                var expectedResponse = new HttpConnectResponse <TestType>(HttpStatusCode.OK);

                expectedResponse.Content = new HttpConnectResponseContent();
                expectedResponse.Content.Headers.ContentType = new ContentTypeHeader(contentType);
                expectedResponse.Content.Content             = content;
                expectedResponse.Data = new TestType {
                    Name = "openwrks"
                };
                expectedResponse.Status = HttpConnectResponseStatus.Completed;

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.GetAsync <TestType>(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.Should().BeEquivalentTo(expectedResponse);
            }
Exemple #2
0
            public async Task WhenDeserializationThrowsThenCapturedInResponseException(string contentType, string content)
            {
                var expectedResponse = new HttpConnectResponse <TestType>(HttpStatusCode.OK);

                expectedResponse.Content = new HttpConnectResponseContent();
                expectedResponse.Content.Headers.ContentType = new ContentTypeHeader(contentType);
                expectedResponse.Content.Content             = content;
                expectedResponse.Status = HttpConnectResponseStatus.Completed;

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.SendAsync <TestType>(
                    new HttpConnectRequest(HttpMethod.Get, new Uri("https://www.example.com")),
                    CancellationToken.None);

                actualResponse.IsSuccess.Should().BeFalse();
                actualResponse.Exception.Should().NotBeNull();
                actualResponse.Data.Should().BeNull();
            }
Exemple #3
0
            public async Task DoesNotSetContentInTheResponseWhenNoContentReturned()
            {
                HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = null
                };

                HttpConnectResponse httpConnectResponse = await _middleware.BuildHttpConnectResponseTester(httpResponseMessage);

                httpConnectResponse.Content.Should().BeNull();
            }
Exemple #4
0
            public async Task SetsContentInTheResponseWhenContentIsPresent()
            {
                HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new System.Net.Http.StringContent("{}", Encoding.UTF8, "application/json")
                };

                HttpConnectResponse httpConnectResponse = await _middleware.BuildHttpConnectResponseTester(httpResponseMessage);

                httpConnectResponse.Content.Should().NotBeNull();
                httpConnectResponse.Content.Content.Should().Be("{}");
            }
Exemple #5
0
            public async Task SetsTheContentInTheResponseWhenTheResponseIsGZipped()
            {
                HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new System.Net.Http.ByteArrayContent(TestZip("testData"))
                };

                httpResponseMessage.Content.Headers.TryAddWithoutValidation("Content-Encoding", "application/gzip");
                httpResponseMessage.Content.Headers.Add("Content-Type", "application/json");

                HttpConnectResponse httpConnectResponse = await _middleware.BuildHttpConnectResponseTester(httpResponseMessage);

                httpConnectResponse.Content.Should().NotBeNull();
                httpConnectResponse.Content.Content.Should().Be("testData");
            }
Exemple #6
0
            public async Task SetsStatusCodeInTheResponse(HttpStatusCode statusCode)
            {
                HttpResponseMessage httpResponseMessage = new HttpResponseMessage(statusCode)
                {
                    Content = new System.Net.Http.StringContent("{}"),
                    Headers =
                    {
                        { "peanut", "butter" },
                        { "ele",    "phant"  }
                    }
                };

                HttpConnectResponse httpConnectResponse = await _middleware.BuildHttpConnectResponseTester(httpResponseMessage);

                httpConnectResponse.StatusCode.Should().Be(statusCode);
            }
Exemple #7
0
            public async Task WhenBuiltWithSimpleMiddlewareThenReturnsExpectedResponse()
            {
                var expectedResponse = new HttpConnectResponse(HttpStatusCode.OK);
                var client           = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.GetAsync(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.Should().Be(expectedResponse);
            }
Exemple #8
0
            public async Task SetsHeadersInTheResponse()
            {
                HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Headers =
                    {
                        { "peanut", "butter" },
                        { "ele",    "phant"  }
                    }
                };

                HttpConnectResponse httpConnectResponse = await _middleware.BuildHttpConnectResponseTester(httpResponseMessage);

                httpConnectResponse.Headers.Should().HaveCount(2);
                httpConnectResponse.Headers.Single(h => h.Name == "peanut" && h.Value == "butter");
                httpConnectResponse.Headers.Single(h => h.Name == "ele" && h.Value == "phant");
            }
Exemple #9
0
            public async Task WhenMiddlewareReturnsNonSuccessStatusCodeThenResponseIsNotSuccessful(HttpStatusCode statusCode)
            {
                var expectedResponse = new HttpConnectResponse <int>(statusCode);

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.GetAsync <int>(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.IsSuccess.Should().BeFalse();
            }
Exemple #10
0
            public async Task WhenBuiltWithMiddlewareThatThrowsExceptionAfterResponseHasBeenSetThenOriginalResponseReturnedWithError()
            {
                HttpConnectResponse expectedResponse  = new HttpConnectResponse(HttpStatusCode.Unauthorized);
                Exception           expectedException = new Exception("test exception");
                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(next(ctx));
                    });
                    pipline.Use(next => ctx =>
                    {
                        throw expectedException;
                    });
                });

                var actualResponse = await client.GetAsync(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.Should().BeEquivalentTo(expectedResponse);
                actualResponse.Status.Should().Be(HttpConnectResponseStatus.Error);
            }
Exemple #11
0
            public async Task WhenMiddlewareReturnsNonSuccessResponseThenDoesNotDeserializeResponse(HttpStatusCode statusCode)
            {
                var expectedResponse = new HttpConnectResponse <int>(statusCode);

                expectedResponse.Content = new HttpConnectResponseContent();
                expectedResponse.Content.Headers.ContentType = new ContentTypeHeader("application/json");
                expectedResponse.Content.Content             = "{\"error\":\"test_error\"";
                expectedResponse.Data   = default;
                expectedResponse.Status = HttpConnectResponseStatus.Completed;

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.GetAsync <int>(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.Should().BeEquivalentTo(expectedResponse);
            }
Exemple #12
0
            public async Task WhenBuiltWithSimpleMiddlewareThenReturnsExpectedResponse()
            {
                var expectedResponse = new HttpConnectResponse <int>(HttpStatusCode.OK);

                expectedResponse.Content = new HttpConnectResponseContent();
                expectedResponse.Content.Headers.ContentType = new ContentTypeHeader("application/json");
                expectedResponse.Content.Content             = "1";
                expectedResponse.Data   = 1;
                expectedResponse.Status = HttpConnectResponseStatus.Completed;

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.GetAsync <int>(new Uri("https://www.example.com"), CancellationToken.None);

                actualResponse.Should().BeEquivalentTo(expectedResponse);
            }
Exemple #13
0
            public async Task WhenResponseContentTypeCannotBeDeserializedThenReturnsDefault(string contentType, string content)
            {
                var expectedResponse = new HttpConnectResponse <string>(HttpStatusCode.OK);

                expectedResponse.Content = new HttpConnectResponseContent();
                expectedResponse.Content.Headers.ContentType = new ContentTypeHeader(contentType);
                expectedResponse.Content.Content             = content;
                expectedResponse.Data   = null;
                expectedResponse.Status = HttpConnectResponseStatus.Completed;

                var client = new HttpConnectClient((pipline) =>
                {
                    pipline.Use(next => ctx =>
                    {
                        ctx.Response = expectedResponse;
                        return(Task.CompletedTask);
                    });
                });

                var actualResponse = await client.SendAsync <string>(new HttpConnectRequest(HttpMethod.Get, new Uri("https://www.example.com")), CancellationToken.None);

                actualResponse.Should().BeEquivalentTo(expectedResponse);
            }