Exemple #1
0
    def test_local_testing_write(self, *_: Any) -> None:
        gateway = Gateway(operation=TX, local_test=True, dd_sockets=False)

        self.assertIsNone(gateway.write(b'data'))

        with self.assertRaises(SystemExit):
            gateway.write(b'data')
Exemple #2
0
    def test_class(self):
        # Setup
        settings = Settings()
        gateway = Gateway(settings)

        # Test
        self.assertIsNone(gateway.write(b'test'))
        self.assertEqual(gateway.search_serial_interface(), '/dev/ttyS0')
Exemple #3
0
 def test_qubes_send_to_destinationVM(self, mock_popen) -> None:
     gateway = Gateway(operation=NC,
                       local_test=False,
                       dd_sockets=False,
                       qubes=True)
     self.assertIsInstance(gateway, Gateway)
     self.assertIsNone(gateway.write(b'data'))
     mock_popen.assert_called_with([
         '/usr/bin/qrexec-client-vm', QUBES_DST_VM_NAME,
         QUBES_NET_DST_POLICY
     ],
                                   stderr=-3,
                                   stdin=-1,
                                   stdout=-3)
Exemple #4
0
class TestGatewaySerial(unittest.TestCase):
    class MockSerial(object):
        def __init__(self, iface_name, baudrate, timeout):
            self.iface = iface_name
            self.baudrate = baudrate
            self.timeout = timeout
            self.written = []
            output_list = [b'', bytearray(b'a'), bytearray(b'b'), b'']
            self.gen = iter(output_list)

        def write(self, output):
            self.written.append(output)

        def read(self, _):
            time.sleep(0.1)
            return next(self.gen)

        def flush(self):
            pass

    def setUp(self):
        self.settings = Settings(session_usb_serial_adapter=True)
        self.o_listdir = os.listdir
        self.o_serial = serial.Serial

        input_list = ['ttyUSB0', 'ttyS0', 'ttyUSB0', 'ttyS0', 'ttyUSB0']
        gen = iter(input_list)
        os.listdir = lambda _: [next(gen)]
        serial.Serial = TestGatewaySerial.MockSerial
        self.gateway = Gateway(self.settings)

    def tearDown(self):
        os.listdir = self.o_listdir
        serial.Serial = self.o_serial

    def test_serial(self):
        self.assertIsNone(self.gateway.write(b'test'))
        self.assertEqual(self.gateway.search_serial_interface(),
                         '/dev/ttyUSB0')
        self.assertEqual(self.gateway.read(), b'ab')

        self.gateway.settings.session_usb_serial_adapter = False
        self.assertEqual(self.gateway.search_serial_interface(), '/dev/ttyS0')

        with self.assertRaises(SystemExit):
            self.gateway.search_serial_interface()
Exemple #5
0
class TestMultiProcessingClient(unittest.TestCase):
    class MockMultiprocessingClient(object):
        def __init__(self, args):
            self.hostname = args[0]
            self.socket_no = args[1]
            self.written = []

        def send(self, output):
            self.written.append(output)

    def setUp(self):
        self.settings = Settings(software_operation=TX,
                                 local_testing_mode=True)
        multiprocessing.connection.Client = TestMultiProcessingClient.MockMultiprocessingClient
        self.gateway = Gateway(self.settings)

    def test_socket(self):
        self.assertEqual(self.gateway.interface.socket_no, NH_LISTEN_SOCKET)
        self.assertEqual(self.gateway.interface.hostname, 'localhost')
        self.assertIsNone(self.gateway.write(b'test'))
        self.assertEqual(self.gateway.interface.written[0], b'test')
Exemple #6
0
 def test_write_serial_(self, *_: Any) -> None:
     gateway = Gateway(operation=RX, local_test=False, dd_sockets=False, qubes=False)
     self.assertIsNone(gateway.write(b"message"))
Exemple #7
0
 def test_qubes_socket_client(self, *_: Any) -> None:
     gateway = Gateway(operation=TX, local_test=False, dd_sockets=False, qubes=True)
     self.assertIsInstance(gateway, Gateway)
     self.assertIsNone(gateway.write(b'data'))