public async Task Throws_on_too_long_message() { Queue <WebSocketReceiveResult> receiveResult = new Queue <WebSocketReceiveResult>(); for (int i = 0; i < 1024; i++) { receiveResult.Enqueue(new WebSocketReceiveResult(1024, WebSocketMessageType.Text, false)); } receiveResult.Enqueue(new WebSocketReceiveResult(1, WebSocketMessageType.Text, true)); receiveResult.Enqueue(new WebSocketReceiveResult(0, WebSocketMessageType.Close, true)); WebSocketMock mock = new WebSocketMock(receiveResult); IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); Assert.ThrowsAsync <InvalidOperationException>(async() => await mock.ReceiveAsync(webSocketsClient)); await webSocketsClient.DidNotReceive().ReceiveAsync(Arg.Any <Memory <byte> >()); }
public void Can_publish_on_various_channel_types() { NdmConsumerChannelManager manager = new NdmConsumerChannelManager(); IWebSocketsClient client = Substitute.For <IWebSocketsClient>(); INdmConsumerChannel[] channels = new INdmConsumerChannel[] { new JsonRpcNdmConsumerChannel(LimboLogs.Instance), new GrpcNdmConsumerChannel(Substitute.For <IGrpcServer>()), new NdmWebSocketsConsumerChannel(client), }; ((JsonRpcNdmConsumerChannel)channels[0]).Pull(Keccak.Zero).Should().BeNull(); for (int i = 0; i < 3; i++) { manager.Add(channels[i]); } channels[0].Type.Should().Be(NdmConsumerChannelType.JsonRpc); channels[1].Type.Should().Be(NdmConsumerChannelType.Grpc); manager.PublishAsync(Keccak.Zero, "client1", "data1"); manager.PublishAsync(Keccak.Zero, "client2", "data2"); for (int i = 0; i < 3; i++) { manager.Remove(channels[i]); } manager.PublishAsync(Keccak.Zero, "client3", "data3"); for (int i = 0; i < 3; i++) { client.Received().SendAsync(Arg.Is <WebSocketsMessage>(wm => wm.Client == "client1")); client.Received().SendAsync(Arg.Is <WebSocketsMessage>(wm => wm.Client == "client2")); client.DidNotReceive().SendAsync(Arg.Is <WebSocketsMessage>(wm => wm.Client == "client3")); } ((JsonRpcNdmConsumerChannel)channels[0]).Pull(Keccak.Zero).Should().NotBeNull(); ((JsonRpcNdmConsumerChannel)channels[0]).Pull(Keccak.Zero).Should().NotBeNull(); ((JsonRpcNdmConsumerChannel)channels[0]).Pull(Keccak.Zero).Should().BeNull(); }