コード例 #1
0
            public async Task RunShouldThrowIfTheGatewayWasStopped(
                [Target] DefaultGatewayService gateway
                )
            {
                var cancellationToken = new CancellationToken(false);

                await gateway.StartAsync();

                await gateway.StopAsync();

                Func <Task> func = () => gateway.Run();
                await func.Should().ThrowAsync <OperationCanceledException>();
            }
コード例 #2
0
            public async Task RunShouldReceiveChunksFromTheWebSocket(
                [Frozen, Options] IOptions <GatewayOptions> options,
                [Frozen, Substitute] IClientWebSocket webSocket,
                [Frozen, Substitute] IGatewayRxWorker rxWorker,
                [Target] DefaultGatewayService gateway
                )
            {
                var cancellationToken = new CancellationToken(false);

                webSocket.Receive(Any <Memory <byte> >(), Any <CancellationToken>()).Returns(x => new ValueWebSocketReceiveResult(0, WebSocketMessageType.Text, true));

                await gateway.StartAsync();

                await gateway.Run(cancellationToken);

                await webSocket.Received().Receive(Any <Memory <byte> >(), Is(cancellationToken));
            }
コード例 #3
0
            public async Task RunShouldNotConnectToTheWebSocketServerIfAlreadyConnected(
                [Frozen, Options] IOptions <GatewayOptions> options,
                [Frozen, Substitute] IClientWebSocket webSocket,
                [Frozen, Substitute] IGatewayRxWorker rxWorker,
                [Target] DefaultGatewayService gateway
                )
            {
                var cancellationToken = new CancellationToken(false);

                webSocket.State.Returns(WebSocketState.Open);
                webSocket.Receive(Any <Memory <byte> >(), Any <CancellationToken>()).Returns(x => new ValueWebSocketReceiveResult(0, WebSocketMessageType.Text, true));

                await gateway.StartAsync();

                await gateway.Run(cancellationToken);

                await webSocket.DidNotReceive().Connect(Is(options.Value.Uri), Is(cancellationToken));
            }
コード例 #4
0
            public async Task RunShouldEmitMessageChunksToTheRxWorker(
                string messageChunk,
                [Frozen] CancellationTokenSource cancellationTokenSource,
                [Frozen, Options] IOptions <GatewayOptions> options,
                [Frozen, Substitute] IClientWebSocket webSocket,
                [Frozen, Substitute] IGatewayRxWorker rxWorker,
                [Target] DefaultGatewayService gateway
                )
            {
                var buffer            = new byte[messageChunk.Length];
                var memoryBuffer      = new Memory <byte>(buffer);
                var cancellationToken = new CancellationToken(false);

                gateway.SetPrivateField("buffer", buffer);
                gateway.SetPrivateField("memoryBuffer", memoryBuffer);

                webSocket.Receive(Any <Memory <byte> >(), Any <CancellationToken>()).Returns(x =>
                {
                    var buffer = x.ArgAt <Memory <byte> >(0);
                    ((Memory <byte>)Encoding.UTF8.GetBytes(messageChunk)).CopyTo(buffer);
                    return(new ValueWebSocketReceiveResult(messageChunk.Length, WebSocketMessageType.Text, true));
                });

                await gateway.StartAsync();

                await gateway.Run(cancellationToken);

                await rxWorker.Received().Emit(
                    Is <GatewayMessageChunk>(chunk =>
                                             Encoding.UTF8.GetString(chunk.Bytes.ToArray()) == messageChunk &&
                                             chunk.Count == messageChunk.Length &&
                                             chunk.EndOfMessage
                                             ),
                    Is(cancellationToken)
                    );
            }