public async Task HandshakeTest(KeyPair clientKeyPair, ApplicationState alphaState, Type expectedException)
        {
            Global.AppState.State = alphaState;

            var clientConnection = new AlphaWebSocketConnection(new FakeWebSocket(), "127.0.0.1");

            var message = new HandshakeInit {
                HandshakeData = clientConnection.HandshakeData
            };
            var envelope = message.CreateEnvelope();

            envelope.Sign(clientKeyPair);
            if (expectedException == null)
            {
                var isHandled = await MessageHandlers <AlphaWebSocketConnection> .HandleMessage(clientConnection, envelope);

                Assert.IsTrue(isHandled);
                Assert.AreEqual(clientConnection.ClientPubKey, new RawPubKey(clientKeyPair.AccountId));
                if (clientConnection.ClientPubKey.Equals((RawPubKey)TestEnvironment.Auditor1KeyPair))
                {
                    Assert.AreEqual(clientConnection.ConnectionState, ConnectionState.Validated);
                }
                else
                {
                    Assert.AreEqual(clientConnection.ConnectionState, ConnectionState.Ready);
                }
            }
            else
            {
                Assert.ThrowsAsync(expectedException, async() => await MessageHandlers <AlphaWebSocketConnection> .HandleMessage(clientConnection, envelope));
            }
        }
        public void HandshakeInvalidDataTest()
        {
            Global.AppState.State = ApplicationState.Ready;

            var clientConnection = new AlphaWebSocketConnection(new FakeWebSocket(), "127.0.0.1");

            var handshake = new HandshakeData();

            handshake.Randomize();

            var envelope = new HandshakeInit {
                HandshakeData = handshake
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.Client1KeyPair);

            Assert.ThrowsAsync <ConnectionCloseException>(async() => await MessageHandlers <AlphaWebSocketConnection> .HandleMessage(clientConnection, envelope));
        }
        public async Task HandshakeTest()
        {
            Global.AppState.State = ApplicationState.Running;

            var clientConnection = new AuditorWebSocketConnection(new FakeWebSocket(), null);

            var hd = new HandshakeData();

            hd.Randomize();

            var envelope = new HandshakeInit {
                HandshakeData = hd
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.AlphaKeyPair);
            var isHandled = await MessageHandlers <AuditorWebSocketConnection> .HandleMessage(clientConnection, envelope);

            Assert.IsTrue(isHandled);
        }
        public async Task HandshakeTest()
        {
            context.AppState.State = ApplicationState.Running;

            var clientConnection = new AuditorWebSocketConnection(context, new FakeAuditorConnectionInfo(new FakeWebSocket()));

            var hd = new HandshakeData();

            hd.Randomize();

            var envelope = new HandshakeInit {
                HandshakeData = hd
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.AlphaKeyPair);
            using var writer = new XdrBufferWriter();
            var inMessage = envelope.ToIncomingMessage(writer);
            var isHandled = await context.MessageHandlers.HandleMessage(clientConnection, inMessage);

            Assert.IsTrue(isHandled);
        }
        public void HandshakeInvalidDataTest()
        {
            context.AppState.State = ApplicationState.Ready;

            var clientConnection = new AlphaWebSocketConnection(context, new FakeWebSocket(), "127.0.0.1");

            var handshake = new HandshakeData();

            handshake.Randomize();

            var envelope = new HandshakeInit {
                HandshakeData = handshake
            }.CreateEnvelope();

            envelope.Sign(TestEnvironment.Client1KeyPair);

            using var writer = new XdrBufferWriter();
            var inMessage = envelope.ToIncomingMessage(writer);

            Assert.ThrowsAsync <ConnectionCloseException>(async() => await context.MessageHandlers.HandleMessage(clientConnection, inMessage));
        }