tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_socket_connection.py (3884B)


      1 #!/usr/bin/env python
      2 
      3 import mozunit
      4 import pytest
      5 from conftest import random_tcp_port
      6 
      7 
      8 @pytest.fixture(params=[f"tcp:{random_tcp_port()}" for _ in range(5)])
      9 def select_test_port(request):
     10    """Generate a list of ports to be used for testing."""
     11    yield request.param
     12 
     13 
     14 def test_list_socket_connections_reverse(mock_adb_object):
     15    assert [("['reverse',", "'--list']")] == mock_adb_object.list_socket_connections(
     16        "reverse"
     17    )
     18 
     19 
     20 def test_list_socket_connections_forward(mock_adb_object):
     21    assert [("['forward',", "'--list']")] == mock_adb_object.list_socket_connections(
     22        "forward"
     23    )
     24 
     25 
     26 def test_create_socket_connection_reverse(
     27    mock_adb_object, select_test_port, redirect_stdout_and_assert
     28 ):
     29    _expected = f"['reverse', '{select_test_port}', '{select_test_port}']"
     30    redirect_stdout_and_assert(
     31        mock_adb_object.create_socket_connection,
     32        direction="reverse",
     33        local=select_test_port,
     34        remote=select_test_port,
     35        text=_expected,
     36    )
     37 
     38 
     39 def test_create_socket_connection_forward(
     40    mock_adb_object, select_test_port, redirect_stdout_and_assert
     41 ):
     42    _expected = f"['forward', '{select_test_port}', '{select_test_port}']"
     43    redirect_stdout_and_assert(
     44        mock_adb_object.create_socket_connection,
     45        direction="forward",
     46        local=select_test_port,
     47        remote=select_test_port,
     48        text=_expected,
     49    )
     50 
     51 
     52 def test_create_socket_connection_forward_adb_assigned_port(
     53    mock_adb_object, select_test_port
     54 ):
     55    result = mock_adb_object.create_socket_connection(
     56        direction="forward", local="tcp:0", remote=select_test_port
     57    )
     58    assert isinstance(result, int) and result == 7777
     59 
     60 
     61 def test_remove_socket_connections_reverse(mock_adb_object, redirect_stdout_and_assert):
     62    _expected = "['reverse', '--remove-all']"
     63    redirect_stdout_and_assert(
     64        mock_adb_object.remove_socket_connections, direction="reverse", text=_expected
     65    )
     66 
     67 
     68 def test_remove_socket_connections_forward(mock_adb_object, redirect_stdout_and_assert):
     69    _expected = "['forward', '--remove-all']"
     70    redirect_stdout_and_assert(
     71        mock_adb_object.remove_socket_connections, direction="forward", text=_expected
     72    )
     73 
     74 
     75 def test_legacy_forward(mock_adb_object, select_test_port, redirect_stdout_and_assert):
     76    _expected = f"['forward', '{select_test_port}', '{select_test_port}']"
     77    redirect_stdout_and_assert(
     78        mock_adb_object.forward,
     79        local=select_test_port,
     80        remote=select_test_port,
     81        text=_expected,
     82    )
     83 
     84 
     85 def test_legacy_forward_adb_assigned_port(mock_adb_object, select_test_port):
     86    result = mock_adb_object.forward(local="tcp:0", remote=select_test_port)
     87    assert isinstance(result, int) and result == 7777
     88 
     89 
     90 def test_legacy_reverse(mock_adb_object, select_test_port, redirect_stdout_and_assert):
     91    _expected = f"['reverse', '{select_test_port}', '{select_test_port}']"
     92    redirect_stdout_and_assert(
     93        mock_adb_object.reverse,
     94        local=select_test_port,
     95        remote=select_test_port,
     96        text=_expected,
     97    )
     98 
     99 
    100 def test_validate_port_invalid_prefix(mock_adb_object):
    101    with pytest.raises(ValueError):
    102        mock_adb_object._validate_port("{}".format("invalid"), is_local=True)
    103 
    104 
    105 @pytest.mark.xfail
    106 def test_validate_port_non_numerical_port_identifier(mock_adb_object):
    107    with pytest.raises(AttributeError):
    108        mock_adb_object._validate_port(
    109            "{}".format("tcp:this:is:not:a:number"), is_local=True
    110        )
    111 
    112 
    113 def test_validate_port_identifier_length_short(mock_adb_object):
    114    with pytest.raises(ValueError):
    115        mock_adb_object._validate_port("{}".format("tcp"), is_local=True)
    116 
    117 
    118 def test_validate_direction(mock_adb_object):
    119    with pytest.raises(ValueError):
    120        mock_adb_object._validate_direction("{}".format("bad direction"))
    121 
    122 
    123 if __name__ == "__main__":
    124    mozunit.main()