示例#1
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Initialise les différents serveurs pour le test
        /// </summary>
        /// <typeparam name="T">le protocole à utiliser</typeparam>
        /// <param name="port">le port de base pour le remoting</param>
        /// <param name="server">le serveur (tunnel)</param>
        /// <param name="client">le client (tunnel)</param>
        /// <param name="echo">le serveur d'echo</param>
        /// <param name="gw">la passerelle</param>
        /// -----------------------------------------------------------------------------
        private void Initialize <T>(int port, out BdtServer server, out BdtClient client, out EchoServer echo, out GatewayServer gw) where T : GenericProtocol
        {
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 0);
            var config = new TestConfigPackage(typeof(T).FullName, port);

            server = new TestServer(TestContext, config);
            client = new TestClient(TestContext, config);

            var args = new String[] { };

            server.LoadConfiguration(args);
            client.LoadConfiguration(args);

            Tunnel.Configuration = server.Configuration;
            Tunnel.Logger        = LoggedObject.GlobalLogger;
            server.Protocol.ConfigureServer(typeof(Tunnel));

            client.StartClient();

            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 2);

            echo = new EchoServer(port + EchoOffset, false);
            Servers.Add(echo);

            gw = new GatewayServer(port + GatewayOffset, false, port + EchoOffset, "localhost", client.Tunnel, client.Sid);
            Servers.Add(gw);
        }
示例#2
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Destruction des entités de test
        /// </summary>
        /// <param name="server">le serveur (tunnel)</param>
        /// <param name="client">le client (tunnel)</param>
        /// <param name="echo">le serveur d'echo</param>
        /// <param name="gw">la passerelle</param>
        /// -----------------------------------------------------------------------------
        private void Finalize(ref BdtServer server, ref BdtClient client, ref EchoServer echo, ref GatewayServer gw)
        {
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 2);
            client.StopClient();

            Tunnel.DisableChecking();
            server.Protocol.UnConfigureServer();

            server.UnLoadConfiguration();
            client.UnLoadConfiguration();

            server = null;
            client = null;
            Assert.AreEqual(ChannelServices.RegisteredChannels.Length, 0);

            echo.CloseServer();
            Servers.Remove(echo);
            echo = null;

            gw.CloseServer();
            Servers.Remove(gw);
            gw = null;
        }
示例#3
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Test de suppression de sessions et connexions
        /// </summary>
        /// <param name="client">Le client du tunnel</param>
        /// <param name="port">Le port de base</param>
        /// -----------------------------------------------------------------------------
        private static void TestKill(BdtClient client, int port)
        {
            // Create valid session
            var lambdaloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserLambdaLogin, TestConfigPackage.UserLambdaPassword));

            Assert.IsTrue(lambdaloginr.Success);

            // Create valid connection
            var conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "localhost", port + GatewayOffset));

            Assert.IsTrue(conr.Success);
            Assert.IsTrue(conr.Connected);

            // Kill connection
            var killcr = client.Tunnel.KillConnection(new KillConnectionRequest(lambdaloginr.Sid, client.Sid, conr.Cid));

            Assert.IsTrue(killcr.Success);
            Assert.IsFalse(killcr.Connected);
            Assert.IsFalse(killcr.DataAvailable);

            // Monitor connection
            var monr = client.Tunnel.Monitor(new SessionContextRequest(client.Sid));

            Assert.IsTrue(monr.Success);
            Assert.AreEqual(0, (from s in monr.Sessions where s.Sid == lambdaloginr.Sid.ToString("x") select s).First().Connections.Length, "Connection is not killed");

            // Kill session
            var killsr = client.Tunnel.KillSession(new KillSessionRequest(lambdaloginr.Sid, client.Sid));

            Assert.IsTrue(killsr.Success);

            // Monitor session
            monr = client.Tunnel.Monitor(new SessionContextRequest(client.Sid));
            Assert.IsTrue(monr.Success);
            Assert.AreEqual(0, (from s in monr.Sessions where s.Sid == lambdaloginr.Sid.ToString("x") select s).Count(), "Session is not killed");
        }
示例#4
0
 public MainComponent(BdtClient client)
 {
     _client = client;
     InitializeComponent();
 }
示例#5
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Test de valeurs incorrectes
        /// </summary>
        /// <param name="client">Le client du tunnel</param>
        /// <param name="port">Le port de base</param>
        /// -----------------------------------------------------------------------------
        private static void TestBadValues(BdtClient client, int port)
        {
            // Test Login method with bad values - access denied
            var bloginr = client.Tunnel.Login(new LoginRequest("foo", "foo"));

            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED, "foo")), "Deny access to non-user");

            // Test Login method with bad values - access denied (disabled)
            bloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserDisabledLogin, TestConfigPackage.UserDisabledPassword));
            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED, TestConfigPackage.UserDisabledLogin)), "Deny access to disabled-user");

            // Test Login method with bad values - access denied (bad password)
            bloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserLambdaLogin, "foo"));
            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(bloginr.Message.Contains(String.Format(Server.Resources.Strings.ACCESS_DENIED_BAD_PASSWORD, TestConfigPackage.UserLambdaLogin)), "Deny access - bad password");

            // Test logout method with bad values (bad sid)
            var blogoutr = client.Tunnel.Logout(new SessionContextRequest(-1));

            Assert.IsFalse(bloginr.Success);
            Assert.IsTrue(blogoutr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid Logout");

            // Test monitor method with bad values (bad sid)
            var bmonr = client.Tunnel.Monitor(new SessionContextRequest(-1));

            Assert.IsFalse(bmonr.Success);
            Assert.IsTrue(bmonr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid Monitor");
            Assert.IsNull(bmonr.Sessions);

            // Create valid session
            var lambdaloginr = client.Tunnel.Login(new LoginRequest(TestConfigPackage.UserLambdaLogin, TestConfigPackage.UserLambdaPassword));

            Assert.IsTrue(lambdaloginr.Success);

            // Test monitor method with bad values (admin privileges required)
            bmonr = client.Tunnel.Monitor(new SessionContextRequest(lambdaloginr.Sid));
            Assert.IsFalse(bmonr.Success);
            Assert.IsTrue(bmonr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny Monitor to non-admin user");
            Assert.IsNull(bmonr.Sessions);

            // Test killsession method with bad values (admin privileges required)
            var killsr = client.Tunnel.KillSession(new KillSessionRequest(lambdaloginr.Sid, lambdaloginr.Sid));

            Assert.IsFalse(killsr.Success);
            Assert.IsTrue(killsr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny KillSession to non-admin user");

            // Test killsession method with bad values (bad sid)
            killsr = client.Tunnel.KillSession(new KillSessionRequest(-1, -1));
            Assert.IsFalse(killsr.Success);
            Assert.IsTrue(killsr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid KillSession");

            // Test killconnection method with bad values (bad cid)
            var killcr = client.Tunnel.KillConnection(new KillConnectionRequest(lambdaloginr.Sid, lambdaloginr.Sid, -1));

            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.CID_NOT_FOUND), "Cid KillConnection");

            // Test killconnection method with bad values (bad sid)
            killcr = client.Tunnel.KillConnection(new KillConnectionRequest(-1, -1, -1));
            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.SID_NOT_FOUND), "Sid KillConnection");

            // Test connect method with bad values (unknown host)
            var conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "host.unknown", port + GatewayOffset));

            Assert.IsFalse(conr.Success);
            Assert.IsFalse(conr.Connected);

            // Test connect method with bad values (port not listening)
            conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "localhost", 1));
            Assert.IsFalse(conr.Success);
            Assert.IsFalse(conr.Connected);

            // Create valid connection
            conr = client.Tunnel.Connect(new ConnectRequest(lambdaloginr.Sid, "localhost", port + GatewayOffset));
            Assert.IsTrue(conr.Success);
            Assert.IsTrue(conr.Connected);

            // Test killconnection method with bad values (admin privileges required)
            killcr = client.Tunnel.KillConnection(new KillConnectionRequest(lambdaloginr.Sid, lambdaloginr.Sid, conr.Cid));
            Assert.IsFalse(killcr.Success);
            Assert.IsTrue(killcr.Message.Contains(Server.Resources.Strings.ADMIN_REQUIRED), "Deny KillConnection to non-admin user");

            // Dispose valid connection
            var disr = client.Tunnel.Disconnect(new ConnectionContextRequest(lambdaloginr.Sid, conr.Cid));

            Assert.IsTrue(disr.Success);
            Assert.IsFalse(disr.Connected);

            // Dispose valid session
            MinimalResponse lambdalogoutr = client.Tunnel.Logout(new SessionContextRequest(lambdaloginr.Sid));

            Assert.IsTrue(lambdalogoutr.Success);
        }