Пример #1
0
 def test_create_reopen(self, mock_db, mock_tunnel):
     mock_db.return_value = MockDatabase()
     t = MockTunnel('host', 8080)
     mock_tunnel.return_value = t
     manager = TunnelManager()
     manager.create('host', 8080)
     t.stop()
     with capture_output() as (out, err):
         manager.create('host', 8080)
     output = out.getvalue().strip()
     assert 'reopening tunnel' in output
Пример #2
0
 def test_create_tunnel(self, mock_os, mock_sql):
     t = MockTunnel('host', 8080)
     t.start()
     mock_conn = Mock()
     mock_cursor = Mock()
     mock_sql.connect.return_value = mock_conn
     mock_conn.cursor.return_value = mock_cursor
     mock_os.path.exists.return_value = False
     mock_os.path.expanduser('/home/ubuntu')
     d = Database()
     d.create_tunnel(t)
     sql = ("INSERT INTO tunnel VALUES('host', 8080, "
            "8080, 'localhost', {})".format(t.pid))
     mock_cursor.execute.assert_called_with(sql)
Пример #3
0
 def test_reopen(self, mock_os, mock_sql):
     t = MockTunnel('host', 8080)
     t.start()
     mock_conn = Mock()
     mock_cursor = Mock()
     mock_sql.connect.return_value = mock_conn
     mock_conn.cursor.return_value = mock_cursor
     mock_cursor.fetchall.return_value = \
         [('host', 8080, 8080, t.name, t.pid)]
     mock_os.path.exists.return_value = False
     mock_os.path.expanduser('/home/ubuntu')
     d = Database()
     d.create_tunnel(t)
     db_tunnels = d.list()
     assert len(db_tunnels) == 1
     assert db_tunnels[0].pid == t.pid
     original_pid = t.pid
     print(original_pid)
     t.stop()
     t.start()
     print(t.pid)
     d.reopen(t)
     mock_cursor.fetchall.return_value = \
         [('host', 8080, 8080, t.name, t.pid)]
     db_tunnels = d.list()
     assert len(db_tunnels) == 1
     assert db_tunnels[0].pid != original_pid
     assert db_tunnels[0].pid == t.pid
Пример #4
0
 def test_remove(self, mock_os, mock_sql):
     t = MockTunnel('host', 8080)
     t.start()
     mock_conn = Mock()
     mock_cursor = Mock()
     mock_sql.connect.return_value = mock_conn
     mock_conn.cursor.return_value = mock_cursor
     mock_os.path.exists.return_value = False
     mock_os.path.expanduser('/home/ubuntu')
     d = Database()
     d.create_tunnel(t)
     d.remove(t)
     expected_sql = "DELETE FROM tunnel WHERE pid=?"
     expected_params = (t.pid,)
     mock_cursor.execute.assert_called_with(expected_sql, expected_params)
Пример #5
0
 def test_list(self, mock_db, mock_tunnel):
     mock_db.return_value = MockDatabase()
     t = MockTunnel('host', 8080)
     mock_tunnel.return_value = t
     manager = TunnelManager()
     manager.create('host', 8080)
     with capture_output() as (out, err):
         manager.list()
     output = out.getvalue().strip()
     assert '1: host 8080:8080' in output
     assert '1: host 8080:8080 (dead)' not in output
     t.stop()
     with capture_output() as (out, err):
         manager.list()
     output = out.getvalue().strip()
     assert '1: host 8080:8080 (dead)' in output
Пример #6
0
 def test_in_use(self, mock_os, mock_sql):
     t = MockTunnel('host', 8080)
     t.start()
     mock_conn = Mock()
     mock_cursor = Mock()
     mock_sql.connect.return_value = mock_conn
     mock_conn.cursor.return_value = mock_cursor
     mock_cursor.fetchone.return_value = t
     mock_os.path.exists.return_value = False
     mock_os.path.expanduser('/home/ubuntu')
     d = Database()
     d.create_tunnel(t)
     params = (t.server, t.remote, t.local, t.name)
     in_use = d.in_use(*params)
     sql = ("SELECT * FROM tunnel WHERE server=? AND "
            "remote=? AND local=? AND name=?")
     mock_cursor.execute.assert_called_with(sql, params)
     mock_cursor.fetchone.assert_called_once()
     assert in_use
Пример #7
0
 def test_stop(self, mock_db, mock_tunnel):
     mock_db.return_value = MockDatabase()
     t = MockTunnel('host', 8080)
     mock_tunnel.return_value = t
     manager = TunnelManager()
     manager.create('host', 8080)
     t2 = MockTunnel('host2', 8080)
     mock_tunnel.return_value = t2
     manager.create('host2', 8080)
     with capture_output() as (out, err):
         manager.list()
     output = out.getvalue().strip()
     assert '1: host 8080:8080' in output
     assert '2: host2 8080:8080' in output
     assert t in manager.db.list()
     assert t2 in manager.db.list()
     manager.stop(2)
     assert t in manager.db.list()
     assert t2 not in manager.db.list()
Пример #8
0
 def test_create_in_use(self, mock_db, mock_tunnel):
     mock_db.return_value = MockDatabase()
     t = MockTunnel('host', 8080)
     mock_tunnel.return_value = t
     manager = TunnelManager()
     manager.create('host', 8080)
     with capture_output() as (out, err):
         manager.create('host', 8080)
     output = out.getvalue().strip()
     assert 'Tunnel is already in use' in output
Пример #9
0
 def test_create_tunnel_no_pid(self, mock_os, mock_sql):
     t = MockTunnel('host', 8080)
     mock_conn = Mock()
     mock_cursor = Mock()
     mock_sql.connect.return_value = mock_conn
     mock_conn.cursor.return_value = mock_cursor
     mock_os.path.exists.return_value = False
     mock_os.path.expanduser('/home/ubuntu')
     d = Database()
     with pytest.raises(Exception):
         d.create_tunnel(t)
Пример #10
0
 def test_create(self, mock_db, mock_tunnel):
     mock_db.return_value = MockDatabase()
     t = MockTunnel('host', 8080)
     t2 = MockTunnel('host2', 8080)
     mock_tunnel.return_value = t
     manager = TunnelManager()
     manager.create('host', 8080)
     mock_tunnel.return_value = t2
     manager.create('host2', 8080)
     assert t.is_alive()
     assert t in manager.db.list()
     assert t2.is_alive()
     assert t2 in manager.db.list()
     assert len(manager.db.list()) == 2