From 0f594bf8f49be424f89271e0e20f4afa8b2e0e7a Mon Sep 17 00:00:00 2001 From: JKorf Date: Tue, 4 Dec 2018 10:15:43 +0100 Subject: [PATCH] Unit tests, fixed error response parsing --- .../RestClientTests.cs | 3 +- .../SocketClientTests.cs | 56 +++++++++++++++++++ CryptoExchange.Net/RestClient.cs | 7 ++- CryptoExchange.Net/Todo.txt | 3 - 4 files changed, 64 insertions(+), 5 deletions(-) delete mode 100644 CryptoExchange.Net/Todo.txt diff --git a/CryptoExchange.Net.UnitTests/RestClientTests.cs b/CryptoExchange.Net.UnitTests/RestClientTests.cs index b04f59f..cd28063 100644 --- a/CryptoExchange.Net.UnitTests/RestClientTests.cs +++ b/CryptoExchange.Net.UnitTests/RestClientTests.cs @@ -78,7 +78,8 @@ namespace CryptoExchange.Net.UnitTests 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}")); + Assert.IsTrue(result.Error.Message.Contains("Invalid request")); + Assert.IsTrue(result.Error.Message.Contains("123")); } [TestCase] diff --git a/CryptoExchange.Net.UnitTests/SocketClientTests.cs b/CryptoExchange.Net.UnitTests/SocketClientTests.cs index 0ca9f7c..37ae476 100644 --- a/CryptoExchange.Net.UnitTests/SocketClientTests.cs +++ b/CryptoExchange.Net.UnitTests/SocketClientTests.cs @@ -173,5 +173,61 @@ namespace CryptoExchange.Net.UnitTests // assert Assert.IsTrue(reconnected); } + + [TestCase()] + public void UnsubscribingStream_Should_CloseTheSocket() + { + // arrange + var client = new TestSocketClient(new SocketClientOptions() { ReconnectInterval = TimeSpan.Zero, LogVerbosity = LogVerbosity.Debug }); + var socket = client.CreateSocket(); + socket.CanConnect = true; + var sub = new SocketSubscription(socket); + client.ConnectSocketSub(sub); + var ups = new UpdateSubscription(sub); + + // act + client.Unsubscribe(ups).Wait(); + + // assert + Assert.IsTrue(socket.Connected == false); + } + + [TestCase()] + public void UnsubscribingAll_Should_CloseAllSockets() + { + // arrange + var client = new TestSocketClient(new SocketClientOptions() { ReconnectInterval = TimeSpan.Zero, LogVerbosity = LogVerbosity.Debug }); + var socket1 = client.CreateSocket(); + var socket2 = client.CreateSocket(); + socket1.CanConnect = true; + socket2.CanConnect = true; + var sub1 = new SocketSubscription(socket1); + var sub2 = new SocketSubscription(socket2); + client.ConnectSocketSub(sub1); + client.ConnectSocketSub(sub2); + + // act + client.UnsubscribeAll().Wait(); + + // assert + Assert.IsTrue(socket1.Connected == false); + Assert.IsTrue(socket2.Connected == false); + } + + [TestCase()] + public void FailingToConnectSocket_Should_ReturnError() + { + // arrange + var client = new TestSocketClient(new SocketClientOptions() { ReconnectInterval = TimeSpan.Zero, LogVerbosity = LogVerbosity.Debug }); + var socket = client.CreateSocket(); + socket.CanConnect = false; + var sub = new SocketSubscription(socket); + + // act + var connectResult = client.ConnectSocketSub(sub); + + // assert + Assert.IsFalse(connectResult.Success); + } } } diff --git a/CryptoExchange.Net/RestClient.cs b/CryptoExchange.Net/RestClient.cs index 81cf8b6..e2ef483 100644 --- a/CryptoExchange.Net/RestClient.cs +++ b/CryptoExchange.Net/RestClient.cs @@ -295,7 +295,12 @@ namespace CryptoExchange.Net } response.Close(); - return new CallResult(null, ParseErrorResponse(returnedData)); + + var jsonResult = ValidateJson(returnedData); + if (!jsonResult.Success) + return new CallResult(null, jsonResult.Error); + + return new CallResult(null, ParseErrorResponse(jsonResult.Data)); } catch (Exception) { diff --git a/CryptoExchange.Net/Todo.txt b/CryptoExchange.Net/Todo.txt deleted file mode 100644 index c475ecc..0000000 --- a/CryptoExchange.Net/Todo.txt +++ /dev/null @@ -1,3 +0,0 @@ -Documentation -Data interpreter for string data -Unit testing most socket stuff \ No newline at end of file