Пример #1
0
        public void TestRefuseCreatingSameCID()
        {
            ClosePipeRPC close     = new ClosePipeRPC(100);
            uint         requestId = close.RequestID;
            //create the connection
            ControlPipe     c      = new ControlPipe(tunnel);
            EncryptedPacket packet = new EncryptedPacket(tunnel.ID, 0);

            packet.RPCs.Add(new CreateAnonymousPipe(PipeType.Duplex.ToString(), 100));
            c.HandlePacket(packet);

            tunnel.PacketInterceptor(p =>
            {
                Assert.That(p.RPCs.Count > 0);
                Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.RefusePipe);
                RefusePipe refuse = (RefusePipe)p.RPCs.First;
                Assert.IsTrue(refuse.Reason == (byte)RefusePipe.RefusalReason.ID_ALREADY_EXISTS);
            });

            tunnel.PipeInterceptor(connection =>
            {
                Assert.Fail("Connection request should never hit the tunnel");
            });

            packet = new EncryptedPacket(tunnel.ID, 0);
            packet.RPCs.Add(new CreateAnonymousPipe(PipeType.Duplex.ToString(), 100));
            c.HandlePacket(packet);
        }
Пример #2
0
        public void HandleClosePipeRequest()
        {
            ClosePipeRPC close     = new ClosePipeRPC(100);
            uint         requestId = close.RequestID;
            //create the connection
            ControlPipe     c      = new ControlPipe(tunnel);
            EncryptedPacket packet = new EncryptedPacket(tunnel.ID, 0);

            packet.RPCs.Add(new CreateAnonymousPipe(PipeType.Duplex.ToString(), 100));
            c.HandlePacket(packet);

            tunnel.PacketInterceptor(p =>
            {
                Assert.That(p.RPCs.Count > 0);
                Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.Ok);
                OkRPC ok = (OkRPC)p.RPCs.First;
                Assert.IsTrue(ok.RPCID == requestId);
            });

            tunnel.PipeInterceptor(connection =>
            {
                Assert.That(connection.ID == 100);
            });
            packet = new EncryptedPacket(tunnel.ID, 0);
            packet.RPCs.Add(close);
            c.HandlePacket(packet);
        }