Beispiel #1
0
    def test_remove_group_not_on_txm(self):
        # Setup
        o_input = builtins.input
        builtins.input = lambda x: 'Yes'
        queues = {COMMAND_PACKET_QUEUE: Queue()}
        settings = Settings()
        group_list = GroupList()

        # Test
        self.assertFR("TxM has no group testgroup to remove.", group_rm_member,
                      'testgroup', [], group_list, None, settings, queues)
        self.assertEqual(queues[COMMAND_PACKET_QUEUE].qsize(), 1)

        # Teardown
        builtins.input = o_input
        while not queues[COMMAND_PACKET_QUEUE].empty():
            queues[COMMAND_PACKET_QUEUE].get()
        time.sleep(0.2)
Beispiel #2
0
    def test_short_message(self):
        # Setup
        account  = '*****@*****.**'
        contact  = create_contact('Alice')
        origin   = ORIGIN_USER_HEADER
        type_    = 'message'
        settings = Settings()
        packet   = Packet(account, contact, origin, type_, settings)
        message  = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
        packets  = self.mock_message_preprocessor(message)

        # Test
        for p in packets:
            packet.add_packet(p)

        message = packet.assemble_message_packet()
        message = message[1:].decode()
        self.assertEqual(message, message)
Beispiel #3
0
    def setUp(self) -> None:
        """Pre-test actions."""
        self.unit_test_dir = cd_unit_test()
        self.ts = datetime.now()
        self.settings = Settings()
        self.master_key = MasterKey()
        self.group_list = GroupList()
        self.exit_queue = Queue()
        self.gateway = Gateway()
        self.window_list = WindowList(nicks=[LOCAL_ID])
        self.contact_list = ContactList(nicks=[LOCAL_ID])
        self.packet_list = PacketList(self.settings, self.contact_list)
        self.key_list = KeyList(nicks=[LOCAL_ID])
        self.key_set = self.key_list.get_keyset(LOCAL_PUBKEY)

        self.args = (self.window_list, self.packet_list, self.contact_list,
                     self.key_list, self.group_list, self.settings,
                     self.master_key, self.gateway, self.exit_queue)
Beispiel #4
0
    def test_cancel_file_during_traffic_masking(self) -> None:
        # Setup
        user_input = UserInput('cf')
        settings = Settings(traffic_masking=True)
        window = TxWindow()
        window.window_contacts = [create_contact('Alice')]

        self.queues[TM_FILE_PACKET_QUEUE].put(('testfile1', {
            nick_to_pub_key("Alice"): False
        }))
        self.queues[TM_FILE_PACKET_QUEUE].put(('testfile2', {
            nick_to_pub_key("Alice"): False
        }))

        # Test
        self.assertIsNone(
            cancel_packet(user_input, window, settings, self.queues))
        self.assertEqual(self.queues[TM_FILE_PACKET_QUEUE].qsize(), 1)
Beispiel #5
0
 def setUp(self) -> None:
     """Pre-test actions."""
     self.contact_list = ContactList(nicks=[LOCAL_ID, 'Alice'])
     self.key_list = KeyList(nicks=[LOCAL_ID, 'Alice'])
     self.window_list = WindowList(nicks=[LOCAL_ID, 'Alice'])
     self.settings = Settings()
     self.ts = datetime.now()
     self.kdk_hashes = list()
     self.packet_hashes = list()
     self.l_queue = Queue()
     self.key = os.urandom(SYMMETRIC_KEY_LENGTH)
     self.hek = os.urandom(SYMMETRIC_KEY_LENGTH)
     self.conf_code = os.urandom(CONFIRM_CODE_LENGTH)
     self.packet = encrypt_and_sign(self.key + self.hek + self.conf_code,
                                    key=self.kek)
     self.args = (self.window_list, self.contact_list, self.key_list,
                  self.settings, self.kdk_hashes, self.packet_hashes,
                  self.l_queue)
Beispiel #6
0
    def test_invalid_account_crashes(self):
        # Setup
        settings = Settings()
        gateway = Gateway()
        l_queue = Queue()
        key_list = KeyList()
        key_list.keysets = [create_keyset('Alice')]

        # Check that in case where internal error caused bytestring (possible key material)
        # to end up in account strings, System raises some error that prevents output of packet.
        # In this case the error comes from unsuccessful encoding of string (AttributeError)
        # or KeyList lookup error when bytes are used (StopIteration). These errors are not catched.
        with self.assertRaises(StopIteration):
            send_packet(bytes(256), key_list, settings, gateway, l_queue,
                        b'*****@*****.**', '*****@*****.**', True)
        with self.assertRaises(AttributeError):
            send_packet(bytes(256), key_list, settings, gateway, l_queue,
                        '*****@*****.**', b'*****@*****.**', True)
Beispiel #7
0
    def test_function(self):
        # Setup
        ts = datetime.datetime.now()
        no_msg = int_to_bytes(1)
        cmd_data = b'*****@*****.**' + US_BYTE + no_msg
        window_list = WindowList()
        contact_list = ContactList()
        settings = Settings()
        master_key = MasterKey()
        write_log_entry(F_S_HEADER + bytes(255), '*****@*****.**', settings,
                        master_key)

        # Test
        self.assertIsNone(
            export_logs(cmd_data, ts, window_list, contact_list, settings,
                        master_key))
        os.remove('Unittest - Plaintext log (None)')
        cleanup()
Beispiel #8
0
    def setUp(self):
        if 'TRAVIS' not in os.environ or not os.environ['TRAVIS'] == 'true':
            self.o_getrandom = os.getrandom
        self.o_input      = builtins.input
        self.o_urandom    = os.urandom
        self.gateway      = Gateway()
        self.settings     = Settings(disable_gui_dialog=True)
        self.contact_list = ContactList()
        self.group_list   = GroupList()
        self.master_key   = MasterKey()
        self.queues       = {MESSAGE_PACKET_QUEUE: Queue(),
                             FILE_PACKET_QUEUE:    Queue(),
                             COMMAND_PACKET_QUEUE: Queue(),
                             NH_PACKET_QUEUE:      Queue(),
                             LOG_PACKET_QUEUE:     Queue(),
                             EXIT_QUEUE:           Queue(),
                             NOISE_PACKET_QUEUE:   Queue(),
                             NOISE_COMMAND_QUEUE:  Queue(),
                             KEY_MANAGEMENT_QUEUE: Queue(),
                             WINDOW_SELECT_QUEUE:  Queue()}

        input_list     = ['',                           # NH Bypass start
                          '61',                         # Enter confirmation code
                          '',                           # NH Bypass end
                          '*****@*****.**',           # Enter rx-account for new contact
                          '*****@*****.**',             # Enter tx-account for new contact
                          '',                           # Enter for auto-nick
                          '',                           # Enter to default for X25519
                          '5JZB2s2RCtRUunKiqMbb6rAj3Z'  # Enter public key for contact
                          '7TkJwa8zknL1cfTFpWoQArd6n',
                          'Yes',                        # Accept key fingerprints for Alice
                          'Alice',                      # Select Alice as recipient
                          'Test',                       # Send test message
                          '/file',                      # Open file selection prompt
                          '',                           # Give empty string to abort
                          '/exit']                      # Enter exit command
        gen            = iter(input_list)
        builtins.input = lambda _: str(next(gen))
        if 'TRAVIS' not in os.environ or not os.environ['TRAVIS'] == 'true':
            os.getrandom = lambda n, flags: n * b'a'
        os.urandom     = lambda n:        n * b'a'

        self.o_exit_tfc          = src.tx.commands.exit_tfc
        src.tx.commands.exit_tfc = lambda *_: (_ for _ in ()).throw(SystemExit)
Beispiel #9
0
    def test_class(self):
        # Setup
        contact_list          = ContactList(nicks=['Alice', 'Bob', 'local'])
        contact               = contact_list.get_contact('Alice')
        contact.notifications = True
        group_list            = GroupList(groups=['testgroup'], contact_list=contact_list)
        settings              = Settings()

        window1 = Window('*****@*****.**', contact_list, group_list, settings)
        window2 = Window('local',            contact_list, group_list, settings)
        window3 = Window('testgroup',        contact_list, group_list, settings)

        # Test
        with self.assertRaises(ValueError):
            Window('charlie', contact_list, group_list, settings)

        self.assertEqual(len(window1), 0)

        window1.message_log = ['a', 'b']
        for m in window1:
            self.assertIsInstance(m, str)

        window3.remove_contacts(['*****@*****.**'])
        self.assertEqual(len(window3.window_contacts), 1)
        self.assertFalse(window3.has_contact('*****@*****.**'))
        window3.add_contacts(['*****@*****.**'])
        self.assertEqual(len(window3.window_contacts), 2)
        self.assertTrue(window3.has_contact('*****@*****.**'))

        self.assertIsNone(window1.clear_window())
        self.assertEqual(len(window1), 2)
        self.assertIsNone(window1.reset_window())
        self.assertEqual(len(window1), 0)

        ts = datetime.datetime.now()
        window3.previous_msg_ts = datetime.datetime.strptime('01/01/2017', '%d/%m/%Y')
        self.assertIsNone(window3.print_new(ts, 20 * 'test message', '*****@*****.**', print_=True))
        self.assertIsNone(window3.print_new(ts, 'test message', '*****@*****.**', print_=True))

        window2.is_active = True
        self.assertIsNone(window2.print_new(ts, 'test message', print_=True))
        window3.message_log = []
        self.assertIsNone(window2.redraw())
        self.assertIsNone(window3.redraw())
Beispiel #10
0
    def test_function_allows_control_of_noise_packets_based_on_log_setting_queue(
            self) -> None:
        # Setup
        settings = Settings(log_file_masking=True, traffic_masking=True)
        master_key = MasterKey()
        queues = gen_queue_dict()

        noise_tuple = (nick_to_pub_key('Alice'),
                       P_N_HEADER + bytes(PADDING_LENGTH), True, True,
                       master_key)

        def queue_delayer() -> None:
            """Place packets to log into queue after delay."""
            for _ in range(5):
                queues[LOG_PACKET_QUEUE].put(
                    noise_tuple
                )  # Not logged because logging_state is False by default
                time.sleep(SLEEP_DELAY)

            queues[LOG_SETTING_QUEUE].put(True)
            for _ in range(2):
                queues[LOG_PACKET_QUEUE].put(noise_tuple)  # Log two packets
                time.sleep(SLEEP_DELAY)

            queues[LOG_SETTING_QUEUE].put(False)
            for _ in range(3):
                queues[LOG_PACKET_QUEUE].put(
                    noise_tuple)  # Not logged because logging_state is False
                time.sleep(SLEEP_DELAY)

            queues[UNIT_TEST_QUEUE].put(EXIT)

            queues[LOG_SETTING_QUEUE].put(True)
            queues[LOG_PACKET_QUEUE].put(noise_tuple)  # Log third packet

        # Test
        threading.Thread(target=queue_delayer).start()

        self.assertIsNone(
            log_writer_loop(queues, settings, self.message_log,
                            unit_test=True))

        # Teardown
        tear_queues(queues)
Beispiel #11
0
    def test_class(self):
        # Setup
        o_input = builtins.input
        input_list = [
            '/', '', 'testmessage', '/file', '/nick Alice', 'testmessage',
            '/nick Alice', '  '
        ]
        gen = iter(input_list)

        def mock_input(_):
            return str(next(gen))

        builtins.input = mock_input

        window = Window(name='Alice',
                        type='contact',
                        window_contacts=[create_contact('Alice')])
        settings = Settings()

        # Test
        user_input = UserInput(window, settings)
        self.assertEqual(user_input.plaintext, 'testmessage')
        self.assertEqual(user_input.type, 'message')

        user_input = UserInput(window, settings)
        self.assertEqual(user_input.plaintext, '/file')
        self.assertEqual(user_input.type, 'file')

        user_input = UserInput(window, settings)
        self.assertEqual(user_input.plaintext, 'nick Alice')
        self.assertEqual(user_input.type, 'command')

        window = Window(name='Testgroup', type='group', window_contacts=[])

        user_input = UserInput(window, settings)
        self.assertEqual(user_input.plaintext, 'nick Alice')
        self.assertEqual(user_input.type, 'command')

        user_input = UserInput(window, settings)
        self.assertEqual(user_input.plaintext, 'clear')
        self.assertEqual(user_input.type, 'command')

        # Teardown
        builtins.input = o_input
Beispiel #12
0
    def test_normal_contact(self):
        # Setup
        settings = Settings()
        m_queue = Queue()
        window = Window(type='contact',
                        window_contacts=[create_contact('Alice')],
                        uid='*****@*****.**')

        # Short messages
        user_input = UserInput(
            plaintext=binascii.hexlify(os.urandom(125)).decode())
        self.assertIsNone(queue_message(user_input, window, settings, m_queue))

        p, s, ra, ta, ls, wu = m_queue.get()
        self.assertIsInstance(p, bytes)
        self.assertEqual(len(p), 256)

        self.assertIsInstance(s, Settings)
        self.assertEqual(ra, '*****@*****.**')
        self.assertEqual(ta, '*****@*****.**')
        self.assertEqual(ls, True)
        self.assertEqual(wu, '*****@*****.**')

        # Long messages
        user_input = UserInput(
            plaintext=binascii.hexlify(os.urandom(250)).decode())
        self.assertIsNone(queue_message(user_input, window, settings, m_queue))
        self.assertEqual(m_queue.qsize(), 2)

        while not m_queue.empty():
            p, s, ra, ta, ls, wu = m_queue.get()
            self.assertIsInstance(p, bytes)
            self.assertEqual(len(p), 256)

            self.assertIsInstance(s, Settings)
            self.assertEqual(ra, '*****@*****.**')
            self.assertEqual(ta, '*****@*****.**')
            self.assertEqual(ls, True)
            self.assertEqual(wu, '*****@*****.**')

        # Teardown
        time.sleep(0.2)
        m_queue.close()
Beispiel #13
0
    def test_invalid_long_file_header_raises_fr(self):
        # Setup
        account    = '*****@*****.**'
        contact    = create_contact('Alice')
        origin     = ORIGIN_CONTACT_HEADER
        type_      = 'file'
        settings   = Settings()
        packet     = Packet(account, contact, origin, type_, settings)
        file_data  = os.urandom(10000)
        compressed = zlib.compress(file_data, level=9)
        file_key   = os.urandom(32)
        encrypted  = encrypt_and_sign(compressed, key=file_key)
        encrypted += file_key
        encoded    = base64.b85encode(encrypted)
        file_data  = US_BYTE.join([b'testfile.txt', b'11.0B', encoded])
        packets    = self.mock_file_preprocessor(file_data)

        # Test
        self.assertFR("Received packet had an invalid header.", packet.add_packet, packets[0])
Beispiel #14
0
    def test_remove_group_and_notify(self):
        # Setup
        o_input = builtins.input
        builtins.input = lambda x: 'Yes'
        queues = {COMMAND_PACKET_QUEUE: Queue(), MESSAGE_PACKET_QUEUE: Queue()}
        settings = Settings()
        group_list = GroupList(groups=['testgroup'])

        # Test
        self.assertFR("Removed group testgroup.", group_rm_member, 'testgroup',
                      [], group_list, None, settings, queues)
        self.assertEqual(queues[COMMAND_PACKET_QUEUE].qsize(), 1)
        self.assertEqual(queues[MESSAGE_PACKET_QUEUE].qsize(), 2)

        # Teardown
        builtins.input = o_input
        while not queues[COMMAND_PACKET_QUEUE].empty():
            queues[COMMAND_PACKET_QUEUE].get()
        time.sleep(0.2)
Beispiel #15
0
    def test_get_contact(self):
        # Setup
        contact1 = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                           32 * b'\x01', 32 * b'\x02', True, True, True)
        contact2 = Contact('*****@*****.**', '*****@*****.**', 'Charlie',
                           32 * b'\x01', 32 * b'\x02', True, True, True)
        settings = Settings()
        master_k = MasterKey()
        contact_l = ContactList(master_k, settings)
        contact_l.contacts = [contact1, contact2]

        # Test
        co1 = contact_l.get_contact('*****@*****.**')
        self.assertIsInstance(co1, Contact)
        self.assertEqual(co1.rx_account, '*****@*****.**')

        co2 = contact_l.get_contact('Alice')
        self.assertIsInstance(co2, Contact)
        self.assertEqual(co2.rx_account, '*****@*****.**')
Beispiel #16
0
    def test_cancel_group_message_during_normal(self):
        # Setup
        window = Window(name='testgroup', type='group', uid='testgroup')
        user_input = UserInput('cm')
        window.window_contacts = [create_contact('Alice')]
        settings = Settings()
        queues = {MESSAGE_PACKET_QUEUE: Queue(), FILE_PACKET_QUEUE: Queue()}

        # Test
        queues[MESSAGE_PACKET_QUEUE].put(
            ('testmessage1', settings, '*****@*****.**', '*****@*****.**',
             False, 'testgroup'))
        queues[MESSAGE_PACKET_QUEUE].put(
            ('testmessage2', settings, '*****@*****.**', '*****@*****.**',
             False, 'testgroup'))
        time.sleep(0.2)
        self.assertIsNone(cancel_packet(user_input, window, settings, queues))
        time.sleep(0.2)
        self.assertEqual(queues[MESSAGE_PACKET_QUEUE].qsize(), 1)
Beispiel #17
0
    def test_cancel_message_during_trickle(self):
        # Setup
        user_input = UserInput('cm')
        window = Window()
        window.window_contacts = [create_contact('Alice')]
        settings = Settings(session_trickle=True)
        queues = {MESSAGE_PACKET_QUEUE: Queue(), FILE_PACKET_QUEUE: Queue()}

        # Test
        queues[MESSAGE_PACKET_QUEUE].put(('testmessage1', {
            '*****@*****.**': False
        }))
        queues[MESSAGE_PACKET_QUEUE].put(('testmessage2', {
            '*****@*****.**': False
        }))
        time.sleep(0.2)
        self.assertIsNone(cancel_packet(user_input, window, settings, queues))
        time.sleep(0.2)
        self.assertEqual(queues[MESSAGE_PACKET_QUEUE].qsize(), 1)
Beispiel #18
0
    def test_valid_message_packet(self):
        # Setup
        settings = Settings(long_packet_rand_d=True)
        gateway = Gateway()
        l_queue = Queue()
        key_list = KeyList(master_key=bytes(32))
        key_list.keysets = [
            create_keyset(tx_hek=32 * b'\x01', tx_key=32 * b'\x02', tx_harac=8)
        ]

        # Test
        self.assertIsNone(
            send_packet(bytes(256), key_list, settings, gateway, l_queue,
                        '*****@*****.**', '*****@*****.**', True))
        self.assertEqual(len(gateway.packets), 1)
        self.assertEqual(len(gateway.packets[0]), 396)

        time.sleep(0.2)
        self.assertFalse(l_queue.empty())
Beispiel #19
0
    def test_successful_group_add(self):
        # Setup
        ts            = datetime.datetime.now()
        contact_list  = ContactList(nicks=["contact_{}".format(n) for n in range(21)])
        group_list    = GroupList(groups=['testgroup'])
        group         = group_list.get_group('testgroup')
        group.members = contact_list.contacts[:19]
        settings      = Settings()
        cmd_data      = US_BYTE.join([b'testgroup', b'*****@*****.**'])
        window_list   = WindowList()

        # Test
        self.assertIsNone(group_add_member(cmd_data, ts, window_list, contact_list, group_list, settings))

        group2 = group_list.get_group('testgroup')
        self.assertEqual(len(group2), 20)

        for c in group2:
            self.assertIsInstance(c, Contact)
Beispiel #20
0
 def test_enable_notifications_for_user(self):
     # Setup
     user_input = UserInput('notify on')
     contact_list = ContactList(nicks=['Alice'])
     group_list = GroupList()
     settings = Settings()
     c_queue = Queue()
     contact = contact_list.get_contact('Alice')
     contact.notifications = False
     window = Window(uid='*****@*****.**',
                     type='contact',
                     contact=contact)
     # Test
     self.assertFalse(contact.notifications)
     self.assertIsNone(
         contact_setting(user_input, window, contact_list, group_list,
                         settings, c_queue))
     time.sleep(0.2)
     self.assertTrue(contact.notifications)
Beispiel #21
0
    def test_file_queue_long_normal(self):
        # Setup
        input_data = os.urandom(200000)
        with open('testfile.txt', 'wb+') as f:
            f.write(input_data)

        settings = Settings(session_trickle=False,
                            disable_gui_dialog=True,
                            confirm_sent_files=True)
        window = Window(name='Alice',
                        type='contact',
                        uid='*****@*****.**',
                        window_contacts=[create_contact('Alice')])
        gateway = Gateway(delay=0.02)
        f_queue = Queue()

        input_list = ['./testfile.txt', 'Yes']
        gen = iter(input_list)

        def mock_input(_):
            return str(next(gen))

        builtins.input = mock_input

        # Test
        self.assertIsNone(queue_file(window, settings, f_queue, gateway))
        time.sleep(1)
        self.assertEqual(f_queue.qsize(), 982)

        while not f_queue.empty():
            p, s, ra, ta, lm, wu = f_queue.get()
            self.assertIsInstance(p, bytes)
            self.assertIsInstance(s, Settings)
            self.assertEqual(ra, '*****@*****.**')
            self.assertEqual(ta, '*****@*****.**')
            self.assertEqual(wu, '*****@*****.**')
            self.assertTrue(lm)

        # Teardown
        os.remove('testfile.txt')
        time.sleep(0.5)
        f_queue.close()
        time.sleep(0.5)
Beispiel #22
0
    def test_rxm_command(self):
        # Setup
        user_input = UserInput("passwd rx")
        contact_list = ContactList()
        group_list = GroupList()
        settings = Settings()
        queues = {COMMAND_PACKET_QUEUE: Queue()}
        master_key = MasterKey()

        # Test
        self.assertIsNone(
            change_master_key(user_input, contact_list, group_list, settings,
                              queues, master_key))

        # Teardown
        while not queues[COMMAND_PACKET_QUEUE].empty():
            queues[COMMAND_PACKET_QUEUE].get()

        time.sleep(0.2)
Beispiel #23
0
    def test_loop(self):
        # Setup
        queues = gen_queue_dict()
        settings = Settings(traffic_masking=True,
                            tm_static_delay=0.001,
                            tm_random_delay=0.001)
        gateway = Gateway()
        key_list = KeyList(nicks=['Alice', LOCAL_ID])
        window = TxWindow(log_messages=True)
        contact_list = ContactList(nicks=['Alice', LOCAL_ID])
        window.contact_list = contact_list
        window.window_contacts = [
            contact_list.get_contact_by_address_or_nick('Alice')
        ]
        user_input = UserInput(plaintext='test')

        def queue_delayer():
            """Place packets to queue after delay."""
            time.sleep(0.01)
            queues[WINDOW_SELECT_QUEUE].put(window.window_contacts)
            time.sleep(0.01)
            queue_command(b'test', settings, queues)  # 1
            queue_message(user_input, window, settings, queues)  # 2
            queue_message(user_input, window, settings, queues)  # 3
            queue_command(b'test', settings, queues)  # 4
            queues[TM_NOISE_COMMAND_QUEUE].put(
                (C_N_HEADER + bytes(PADDING_LENGTH)))  # 5
            queue_to_nc(UNENCRYPTED_DATAGRAM_HEADER + UNENCRYPTED_EXIT_COMMAND,
                        queues[RELAY_PACKET_QUEUE])  # 6
            queue_to_nc(UNENCRYPTED_DATAGRAM_HEADER + UNENCRYPTED_WIPE_COMMAND,
                        queues[RELAY_PACKET_QUEUE])  # 7
            queues[SENDER_MODE_QUEUE].put(settings)

        # Test
        threading.Thread(target=queue_delayer).start()
        self.assertIsInstance(
            traffic_masking_loop(queues, settings, gateway, key_list),
            Settings)
        self.assertEqual(len(gateway.packets), 7)

        # Teardown
        tear_queues(queues)
Beispiel #24
0
    def test_function(self):
        # Setup
        user_input = UserInput('about')
        window = Window()
        settings = Settings()
        queues = {COMMAND_PACKET_QUEUE: Queue()}
        contact_list = ContactList()
        group_list = GroupList()
        gateway = Gateway()
        master_key = MasterKey()

        # Test
        self.assertIsNone(
            process_command(user_input, window, settings, queues, contact_list,
                            group_list, gateway, master_key))

        user_input = UserInput('abou')
        self.assertFR("Invalid command 'abou'.", process_command, user_input,
                      window, settings, queues, contact_list, group_list,
                      gateway, master_key)
Beispiel #25
0
    def test_log_printing_all(self):
        # Test
        user_input = UserInput("history")
        window = Window(uid='*****@*****.**')
        contact_list = ContactList()
        settings = Settings()
        c_queue = Queue()
        master_key = MasterKey()

        # Test
        self.assertFR("Error: Could not find 'user_data/ut_logs'.", print_logs,
                      user_input, window, contact_list, settings, c_queue,
                      master_key)
        self.assertEqual(c_queue.qsize(), 1)

        # Teardown
        while not c_queue.empty():
            c_queue.get()
        time.sleep(0.2)
        cleanup()
Beispiel #26
0
    def test_keyboard_interrupt_raises_fr(self, *_):
        # Setup
        input_data = os.urandom(2000)
        with open('testfile.txt', 'wb+') as f:
            f.write(input_data)

        window   = TxWindow(name='Alice',
                            type=WIN_TYPE_CONTACT,
                            type_print='contact',
                            uid=nick_to_pub_key("Alice"),
                            window_contacts=[create_contact('Alice')],
                            log_messages=True)
        settings = Settings(traffic_masking=True,
                            disable_gui_dialog=True,
                            confirm_sent_files=True,
                            multi_packet_random_delay=True)

        # Test
        self.assert_fr("File selection aborted.", queue_file, window, settings, self.queues)
        self.assertEqual(self.queues[RELAY_PACKET_QUEUE].qsize(), 0)
Beispiel #27
0
 def test_disable_notifications_for_group(self):
     # Setup
     user_input = UserInput('notify off')
     contact_list = ContactList(nicks=['Alice'])
     group_list = GroupList(groups=['testgroup'])
     settings = Settings()
     c_queue = Queue()
     group = group_list.get_group('testgroup')
     group.notifications = True
     window = Window(uid='testgroup',
                     type='group',
                     group=group,
                     window_contacts=group.members)
     # Test
     self.assertTrue(group.notifications)
     self.assertIsNone(
         contact_setting(user_input, window, contact_list, group_list,
                         settings, c_queue))
     time.sleep(0.2)
     self.assertFalse(group.notifications)
Beispiel #28
0
 def test_disable_file_reception_for_user(self):
     # Setup
     user_input = UserInput('store off')
     contact_list = ContactList(nicks=['Alice'])
     group_list = GroupList()
     settings = Settings()
     c_queue = Queue()
     contact = contact_list.get_contact('Alice')
     contact.file_reception = True
     window = Window(uid='*****@*****.**',
                     type='contact',
                     contact=contact,
                     window_contacts=[contact])
     # Test
     self.assertTrue(contact.file_reception)
     self.assertIsNone(
         contact_setting(user_input, window, contact_list, group_list,
                         settings, c_queue))
     time.sleep(0.2)
     self.assertFalse(contact.file_reception)
Beispiel #29
0
 def test_enable_logging_for_group(self):
     # Setup
     user_input = UserInput('logging on')
     contact_list = ContactList(nicks=['Alice'])
     group_list = GroupList(groups=['testgroup'])
     settings = Settings()
     c_queue = Queue()
     group = group_list.get_group('testgroup')
     group.log_messages = False
     window = Window(uid='testgroup',
                     type='group',
                     group=group,
                     window_contacts=group.members)
     # Test
     self.assertFalse(group.log_messages)
     self.assertIsNone(
         contact_setting(user_input, window, contact_list, group_list,
                         settings, c_queue))
     time.sleep(0.2)
     self.assertTrue(group.log_messages)
Beispiel #30
0
    def test_file_queue_long_normal(self, *_: Any) -> None:
        # Setup
        input_data = os.urandom(2000)
        with open('testfile.txt', 'wb+') as f:
            f.write(input_data)

        window   = TxWindow(name='Alice',
                            type=WIN_TYPE_CONTACT,
                            type_print='contact',
                            uid=nick_to_pub_key("Alice"),
                            window_contacts=[create_contact('Alice')],
                            log_messages=True)
        settings = Settings(traffic_masking=False,
                            disable_gui_dialog=True,
                            confirm_sent_files=True,
                            multi_packet_random_delay=True)

        # Test
        self.assertIsNone(queue_file(window, settings, self.queues))
        self.assertEqual(self.queues[RELAY_PACKET_QUEUE].qsize(), 1)