diff --git a/CryptoExchange.Net.UnitTests/RestClientTests.cs b/CryptoExchange.Net.UnitTests/RestClientTests.cs index 988e22d..bf67ba8 100644 --- a/CryptoExchange.Net.UnitTests/RestClientTests.cs +++ b/CryptoExchange.Net.UnitTests/RestClientTests.cs @@ -60,6 +60,23 @@ namespace CryptoExchange.Net.UnitTests Assert.IsTrue(result.Error != null); } + [TestCase] + public void ReceivingErrorAndNotParsingError_Should_ResultInFlatError() + { + // arrange + var client = new TestRestClient(); + client.SetErrorWithResponse("{\"errorMessage\": \"Invalid request\", \"errorCode\": 123}", System.Net.HttpStatusCode.BadRequest); + + // act + var result = client.Request().Result; + + // assert + Assert.IsFalse(result.Success); + Assert.IsTrue(result.Error != null); + Assert.IsTrue(result.Error is ServerError); + Assert.IsTrue(result.Error.Message.Contains("{\"errorMessage\": \"Invalid request\", \"errorCode\": 123}")); + } + [TestCase] public void ReceivingErrorAndParsingError_Should_ResultInParsedError() { diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs index e9248af..d34c972 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs @@ -54,13 +54,10 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations typeof(HttpWebResponse).GetField("_httpResponseMessage", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(r, re); typeof(WebException).GetField("_message", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, message); typeof(WebException).GetField("_response", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, r); - - var response = new Mock(); - response.Setup(c => c.GetResponseStream()).Throws(we); - + var request = new Mock(); request.Setup(c => c.Headers).Returns(new WebHeaderCollection()); - request.Setup(c => c.GetResponse()).Returns(Task.FromResult(response.Object)); + request.Setup(c => c.GetResponse()).Throws(we); var factory = Mock.Get(RequestFactory); factory.Setup(c => c.Create(It.IsAny())) @@ -74,21 +71,13 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations responseStream.Write(expectedBytes, 0, expectedBytes.Length); responseStream.Seek(0, SeekOrigin.Begin); - var we = new WebException(); - var r = new HttpWebResponse(); - var re = new HttpResponseMessage(); - - typeof(HttpResponseMessage).GetField("_statusCode", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(re, code); - typeof(HttpWebResponse).GetField("_httpResponseMessage", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(r, re); - typeof(WebException).GetField("_message", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, ""); - typeof(WebException).GetField("_response", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, r); - - var response = new Mock(); - response.Setup(c => c.GetResponseStream()).Returns(responseStream); - + var r = new Mock(); + r.Setup(x => x.GetResponseStream()).Returns(responseStream); + var we = new WebException("", null, WebExceptionStatus.Success, r.Object); + var request = new Mock(); request.Setup(c => c.Headers).Returns(new WebHeaderCollection()); - request.Setup(c => c.GetResponse()).Returns(Task.FromResult(response.Object)); + request.Setup(c => c.GetResponse()).Throws(we); var factory = Mock.Get(RequestFactory); factory.Setup(c => c.Create(It.IsAny()))