Skip to content

Commit d664b89

Browse files
committed
add exception handling test for StartPingAsync in EngineIO3Adapter
1 parent f530ada commit d664b89

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/SocketIOClient/V2/Session/EngineIOHttpAdapter/EngineIO3Adapter.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ await _retryPolicy.RetryAsync(3, async () =>
147147
await _protocolAdapter.SendAsync(ping, cts.Token);
148148
});
149149
_stopwatch.Restart();
150-
// TODO: add test case to cover this
151150
_ = NotifyObserversAsync(new PingMessage());
152151
}
153152
}

tests/SocketIOClient.UnitTests/V2/Session/EngineIOHttpAdapter/EngineIO3AdapterTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using FluentAssertions;
22
using JetBrains.Annotations;
33
using NSubstitute;
4+
using NSubstitute.ExceptionExtensions;
45
using NSubstitute.ReceivedExtensions;
56
using SocketIOClient.Core;
67
using SocketIOClient.Core.Messages;
@@ -202,4 +203,31 @@ await observer
202203
.Received(1)
203204
.OnNextAsync(Arg.Is<IMessage>(m => ((PongMessage)m).Duration == TimeSpan.FromSeconds(1)));
204205
}
206+
207+
[Fact]
208+
public async Task StartPingAsync_ObserverThrowException_ContinuePing()
209+
{
210+
var ping = new ProtocolMessage
211+
{
212+
Text = "2",
213+
};
214+
_serializer.NewPingMessage().Returns(ping);
215+
var observer = Substitute.For<IMyObserver<IMessage>>();
216+
observer.OnNextAsync(Arg.Any<IMessage>()).ThrowsAsync(new Exception());
217+
_adapter.Subscribe(observer);
218+
219+
await _adapter.ProcessMessageAsync(new OpenedMessage
220+
{
221+
PingInterval = 10,
222+
});
223+
await _adapter.ProcessMessageAsync(new ConnectedMessage());
224+
225+
await Task.Delay(100);
226+
227+
var range = Quantity.Within(9, 11);
228+
await _retryPolicy.Received().RetryAsync(3, Arg.Any<Func<Task>>());
229+
await observer
230+
.Received(range)
231+
.OnNextAsync(Arg.Is<IMessage>(m => m.Type == MessageType.Ping));
232+
}
205233
}

0 commit comments

Comments
 (0)