public void Can_publish() { IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); NdmWebSocketsConsumerChannel channel = new NdmWebSocketsConsumerChannel(webSocketsClient); channel.PublishAsync(Keccak.Zero, "client", "data"); webSocketsClient.Received().SendAsync(Arg.Is <WebSocketsMessage>(ws => ws.Client == "client" && ws.Type == "data_received")); }
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(); }
public void Forwards_raw_messages_to_ws_client() { IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); webSocketsClient.Id.Returns(nameof(NdmWebSocketsClientTests) + "_id"); INdmDataPublisher dataPublisher = Substitute.For <INdmDataPublisher>(); NdmWebSocketsClient client = new NdmWebSocketsClient(webSocketsClient, dataPublisher); client.SendRawAsync("raw"); webSocketsClient.Received().SendRawAsync("raw"); }
public void Forwards_messages_to_ws_client() { IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); webSocketsClient.Id.Returns(nameof(NdmWebSocketsClientTests) + "_id"); INdmDataPublisher dataPublisher = Substitute.For <INdmDataPublisher>(); NdmWebSocketsClient client = new NdmWebSocketsClient(webSocketsClient, dataPublisher); WebSocketsMessage message = new WebSocketsMessage("type", "client", "data"); client.SendAsync(message); webSocketsClient.Received().SendAsync(message); }
public async Task Can_receive_whole_message() { Queue <WebSocketReceiveResult> receiveResult = new Queue <WebSocketReceiveResult>(); receiveResult.Enqueue(new WebSocketReceiveResult(4096, WebSocketMessageType.Text, false)); receiveResult.Enqueue(new WebSocketReceiveResult(4096, WebSocketMessageType.Text, false)); receiveResult.Enqueue(new WebSocketReceiveResult(1024, WebSocketMessageType.Text, true)); receiveResult.Enqueue(new WebSocketReceiveResult(0, WebSocketMessageType.Close, true)); WebSocketMock mock = new WebSocketMock(receiveResult); IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); await mock.ReceiveAsync(webSocketsClient); await webSocketsClient.Received().ReceiveAsync(Arg.Is <Memory <byte> >(ba => ba.Length == 2 * 4096 + 1024)); }
public async Task Can_receive_many_messages() { Queue <WebSocketReceiveResult> receiveResult = new Queue <WebSocketReceiveResult>(); for (int i = 0; i < 1000; i++) { receiveResult.Enqueue(new WebSocketReceiveResult(1234, WebSocketMessageType.Text, true)); } receiveResult.Enqueue(new WebSocketReceiveResult(0, WebSocketMessageType.Close, true)); WebSocketMock mock = new WebSocketMock(receiveResult); IWebSocketsClient webSocketsClient = Substitute.For <IWebSocketsClient>(); await mock.ReceiveAsync(webSocketsClient); await webSocketsClient.Received(1000).ReceiveAsync(Arg.Is <Memory <byte> >(ba => ba.Length == 1234)); }
public async Task Can_receive_whole_message_non_buffer_sizes() { Queue <WebSocketReceiveResult> receiveResult = new Queue <WebSocketReceiveResult>(); for (int i = 0; i < 6; i++) { receiveResult.Enqueue(new WebSocketReceiveResult(2000, 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>(); await mock.ReceiveAsync(webSocketsClient); await webSocketsClient.Received().ReceiveAsync(Arg.Is <Memory <byte> >(ba => ba.Length == 6 * 2000 + 1)); }