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); }
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); }