public static async Task GetResponseAsync_Returns_Empty_Response_If_Custom_Response_Headers_Using_Stream() { // Arrange var method = HttpMethod.Get; var uri = new Uri("https://google.com/"); var responseHeaders = new Dictionary <string, IEnumerable <string> >() { ["a"] = new[] { "b" }, ["c"] = new[] { "d", "e" }, }; var options = new HttpClientInterceptorOptions() .RegisterStream(method, uri, contentStream: EmptyStream, responseHeaders: responseHeaders); var request = new HttpRequestMessage(method, uri); // Act var actual = await options.GetResponseAsync(request); // Assert actual.ShouldNotBeNull(); actual.RequestMessage.ShouldBe(request); actual.Content.ShouldNotBeNull(); actual.Content.Headers.ContentLength.ShouldBe(0); actual.Headers.GetValues("a").ShouldBe(new[] { "b" }); actual.Headers.GetValues("c").ShouldBe(new[] { "d", "e" }); }
public static async Task GetResponseAsync_Returns_Empty_Response_If_Custom_Response_Header() { // Arrange var method = HttpMethod.Get; var uri = new Uri("https://google.com/"); var headers = new Dictionary <string, string>() { ["a"] = "b", ["c"] = "d", }; var options = new HttpClientInterceptorOptions() .RegisterByteArray(method, uri, contentFactory: Array.Empty <byte>, responseHeaders: headers); var request = new HttpRequestMessage(method, uri); // Act HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert actual.ShouldNotBeNull(); actual.RequestMessage.ShouldBe(request); actual.Content.ShouldNotBeNull(); actual.Content.Headers.ContentLength.ShouldBe(0); actual.Headers.GetValues("a").ShouldBe(new[] { "b" }); actual.Headers.GetValues("c").ShouldBe(new[] { "d" }); }
/// <inheritdoc /> protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (_options.OnSend != null) { await _options.OnSend(request).ConfigureAwait(false); } var response = await _options.GetResponseAsync(request, cancellationToken).ConfigureAwait(false); if (response == null && _options.OnMissingRegistration != null) { response = await _options.OnMissingRegistration(request).ConfigureAwait(false); } if (response != null) { return(response); } if (_options.ThrowOnMissingRegistration) { #pragma warning disable CA1062 throw new HttpRequestNotInterceptedException( $"No HTTP response is configured for {request.Method.Method} {request.RequestUri}.", request); #pragma warning restore CA1062 } return(await base.SendAsync(request, cancellationToken).ConfigureAwait(false)); }
public static async Task GetResponseAsync_Throws_If_Request_Is_Null() { // Arrange var options = new HttpClientInterceptorOptions(); HttpRequestMessage request = null; // Act and Assert await Should.ThrowAsync <ArgumentNullException>(() => options.GetResponseAsync(request), "request"); }
public static async Task GetResponseAsync_Returns_Null_If_Request_Not_Registered() { // Arrange var options = new HttpClientInterceptorOptions(); var request = new HttpRequestMessage(HttpMethod.Get, "https://google.com"); // Act HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert actual.ShouldBeNull(); }
public static async Task GetResponseAsync_Returns_Null_If_Request_Uri_Does_Not_Match_Blank_Request() { // Arrange var options = new HttpClientInterceptorOptions() .RegisterByteArray(HttpMethod.Get, new Uri("https://google.co.uk/"), contentFactory: EmptyContent); var request = new HttpRequestMessage(); // Act HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert actual.ShouldBeNull(); }
public static async Task GetResponseAsync_Throws_If_ContentStream_Cannot_Be_Created() { // Arrange var method = HttpMethod.Get; var uri = new Uri("https://google.com/"); var options = new HttpClientInterceptorOptions() .RegisterStream(method, uri, contentStream: () => throw new NotImplementedException()); using var request = new HttpRequestMessage(method, uri); // Act and Assert await Should.ThrowAsync <NotImplementedException>(() => options.GetResponseAsync(request)); }
public static async Task GetResponseAsync_Returns_Response_If_Request_Matches_Default_Constructor() { // Arrange var method = HttpMethod.Get; var uri = new Uri("https://google.com/"); var options = new HttpClientInterceptorOptions() .RegisterByteArray(method, uri, contentFactory: EmptyContent); var request = new HttpRequestMessage(method, uri); // Act HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert actual.ShouldNotBeNull(); actual.RequestMessage.ShouldBe(request); }
public static async Task GetResponseAsync_Returns_Response_If_Request_Matches(bool caseSensitive, bool expectNull) { // Arrange var method = HttpMethod.Get; var uriToRegister = new Uri("https://google.com/uk"); var uriToRequest = new Uri("https://google.com/UK"); var options = new HttpClientInterceptorOptions(caseSensitive) .RegisterByteArray(method, uriToRegister, contentFactory: EmptyContent); var request = new HttpRequestMessage(method, uriToRequest); // Act using HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert (actual == null).ShouldBe(expectNull); }
public static async Task GetResponseAsync_Returns_Empty_Response_If_ContentStream_Returns_Null_Asynchronous() { // Arrange var method = HttpMethod.Get; var uri = new Uri("https://google.com/"); var options = new HttpClientInterceptorOptions() .RegisterStream(method, uri, () => Task.FromResult <Stream>(null)); var request = new HttpRequestMessage(method, uri); // Act HttpResponseMessage actual = await options.GetResponseAsync(request); // Assert actual.ShouldNotBeNull(); actual.RequestMessage.ShouldBe(request); actual.Content.ShouldNotBeNull(); actual.Content.Headers?.ContentLength.ShouldBe(0); actual.Content.Headers?.ContentType?.MediaType.ShouldBe("application/json"); }