diff --git a/Frends.HTTP.Request/CHANGELOG.md b/Frends.HTTP.Request/CHANGELOG.md index 2848713..b8ca781 100644 --- a/Frends.HTTP.Request/CHANGELOG.md +++ b/Frends.HTTP.Request/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [1.9.0] - 2026-04-15 + +### Fixed + +- Fixed an issue where selecting JToken as the return format would throw an exception if the server returned a non-JSON response; the response body is now returned as a raw string instead, preserving the status code for flow control. + ## [1.8.0] - 2026-03-07 ### Fixed diff --git a/Frends.HTTP.Request/Frends.HTTP.Request.Tests/UnitTests.cs b/Frends.HTTP.Request/Frends.HTTP.Request.Tests/UnitTests.cs index 1b2c78f..c3dcf06 100644 --- a/Frends.HTTP.Request/Frends.HTTP.Request.Tests/UnitTests.cs +++ b/Frends.HTTP.Request/Frends.HTTP.Request.Tests/UnitTests.cs @@ -268,7 +268,7 @@ public async Task RestRequestShouldNotThrowIfReturnIsEmpty() } [TestMethod] - public void RestRequestShouldThrowIfReturnIsNotValidJson() + public async Task RestRequest_NonJsonResponse_ShouldReturnRawStringInsteadOfThrowing() { var input = new Input { @@ -285,12 +285,11 @@ public void RestRequestShouldThrowIfReturnIsNotValidJson() Token = "fooToken" }; - // _mockHttpMessageHandler.When(input.Url) - // .Respond("application/json", "failbar"); - var ex = Assert.ThrowsAsync(async () => - await HTTP.Request(input, options, CancellationToken.None)); + var result = await HTTP.Request(input, options, CancellationToken.None); - Assert.That(ex.Message.Contains("Unable to read response message as json")); + ClassicAssert.IsInstanceOf(result.Body); + ClassicAssert.IsTrue(((string)result.Body).Contains("