public async Task CloseAsyncWithTimeoutThrowsOperationCanceledExceotion() { // ARRANGE var mock = new HassWebSocketMock(); // Get the connected hass client await using var hassClient = await mock.GetHassConnectedClient().ConfigureAwait(false); mock.Setup(x => x.CloseAsync(It.IsAny <WebSocketCloseStatus>(), It.IsAny <string>(), It.IsAny <CancellationToken>())) .Returns(Task.FromException <OperationCanceledException>(new OperationCanceledException("Fake close"))); hassClient.SocketTimeout = 20; // ACT await hassClient.CloseAsync().ConfigureAwait(false); // ASSERT mock.Logger.AssertLogged(LogLevel.Trace, Times.AtLeastOnce()); }
public async Task ReceiveAsyncThrowsExceptionProcessMessageShouldHandleException() { // ARRANGE var mock = new HassWebSocketMock(); // Get the connected hass client await using var hassClient = await mock.GetHassConnectedClient().ConfigureAwait(false); mock.Setup(x => x.ReceiveAsync(It.IsAny <Memory <byte> >(), It.IsAny <CancellationToken>())) .Returns((Memory <byte> buffer, CancellationToken token) => { throw new Exception("Unexpected!"); }); // ACT AND ASSERT var subscribeTask = hassClient.SubscribeToEvents(); await Task.Delay(100).ConfigureAwait(false); // Service call successful mock.AddResponse(@"{ ""id"": 2, ""type"": ""result"", ""success"": true, ""result"": { ""context"": { ""id"": ""55cf75a4dbf94680804ef022aa0c67b4"", ""parent_id"": null, ""user_id"": ""63b2952cb986474d84be46480c8aaad3"" } } }"); await subscribeTask.ConfigureAwait(false); await Task.Delay(100).ConfigureAwait(false); mock.Logger.AssertLogged(LogLevel.Error, Times.Once()); }