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')
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')
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)
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()
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')
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"))
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'))