diff --git a/CSharpHTTPClient/Client.cs b/CSharpHTTPClient/Client.cs index f54da8a..872b45e 100644 --- a/CSharpHTTPClient/Client.cs +++ b/CSharpHTTPClient/Client.cs @@ -356,16 +356,15 @@ private async Task RequestAsync(string method, string requestBody = nu RequestUri = new Uri(endpoint), Content = content }; - return await MakeRequest(client, request).ConfigureAwait(false); + return await MakeRequest(client, request).ConfigureAwait(false); } catch (Exception ex) { - HttpResponseMessage response = new HttpResponseMessage(); - string message; - message = (ex is HttpRequestException) ? ".NET HttpRequestException" : ".NET Exception"; - message = message + ", raw message: \n\n"; - response.Content = new StringContent(message + ex.Message); + var response = new HttpResponseMessage(HttpStatusCode.InternalServerError); + var message = ex is HttpRequestException ? ".NET HttpRequestException" : ".NET Exception"; + response.Content = new StringContent($"{message}\n{ex}"); + return new Response(response.StatusCode, response.Content, response.Headers); } } diff --git a/UnitTest/UnitTest.cs b/UnitTest/UnitTest.cs index f8c1a2c..6a44386 100644 --- a/UnitTest/UnitTest.cs +++ b/UnitTest/UnitTest.cs @@ -26,6 +26,18 @@ public async override Task MakeRequest(HttpClient client, HttpRequestM } } + public class MockFailingClient : Client + { + public MockFailingClient(string host, Dictionary requestHeaders = null, string version = null, string urlPath = null) : base(host, requestHeaders, version, urlPath) + { + } + + public async override Task MakeRequest(HttpClient client, HttpRequestMessage request) + { + throw new HttpRequestException("Testing failures"); + } + } + [TestFixture] public class TestClient { @@ -74,5 +86,16 @@ public async void TestMethodCall() var content = new StringContent("{'test': 'test_content'}", Encoding.UTF8, "application/json"); Assert.AreEqual(response.Body.ReadAsStringAsync().Result, content.ReadAsStringAsync().Result); } + + [Test] + public async void TestFailingMethodCall() + { + var host = "http://api.test.com"; + dynamic test_client = new MockFailingClient(host: host); + Response response = await test_client.get(); + Assert.IsNotNull(response); + Assert.AreEqual(response.StatusCode, HttpStatusCode.InternalServerError); + Assert.True(response.Body.ReadAsStringAsync().Result.Contains(".NET HttpRequestException")); + } } }