コード例 #1
0
ファイル: test_commands.py プロジェクト: barleyj/tfc
    def test_function(self):
        # Setup
        master_key = MasterKey()
        settings = Settings()
        ts = datetime.datetime.now()
        o_getpass = getpass.getpass
        window_list = WindowList()
        contact_list = ContactList()
        group_list = GroupList()
        key_list = KeyList()
        getpass.getpass = lambda x: 'a'

        write_log_entry(F_S_HEADER + bytes(255), '*****@*****.**', settings,
                        master_key)

        # Test
        self.assertEqual(master_key.master_key, bytes(32))
        self.assertIsNone(
            change_master_key(ts, window_list, contact_list, group_list,
                              key_list, settings, master_key))
        self.assertNotEqual(master_key.master_key, bytes(32))

        # Teardown
        getpass.getpass = o_getpass
        cleanup()
コード例 #2
0
 def setUp(self):
     """Pre-test actions."""
     self.contact_list = ContactList(nicks=['Alice'])
     self.group_list   = GroupList()
     self.settings     = Settings()
     self.queues       = gen_queue_dict()
     self.args         = self.contact_list, self.group_list, self.settings, self.queues
コード例 #3
0
    def test_normal_msg_from_user(self):
        # Setup
        ts = datetime.datetime.now()
        apct_list = self.create_message_apct(ORIGIN_USER_HEADER,
                                             b'testmessage')
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.tx_harac = 1
        keyset.tx_key = 32 * b'\x01'
        keyset.tx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertIsNone(
                process_message(ts, p, window_list, packet_list, contact_list,
                                key_list, group_list, settings, master_key))

        # Teardown
        cleanup()
コード例 #4
0
 def setUp(self):
     self.contact_list = ContactList(nicks=['Alice'])
     self.group_list = GroupList()
     self.settings = Settings()
     self.queues = gen_queue_dict()
     self.master_key = MasterKey()
     self.args = self.contact_list, self.group_list, self.settings, self.queues, self.settings
コード例 #5
0
    def test_file(self):
        # Setup
        ts = datetime.datetime.now()
        apct_list = self.create_file_apct()
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.rx_harac = 1
        keyset.rx_key = 32 * b'\x01'
        keyset.rx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertIsNone(
                process_message(ts, p, window_list, packet_list, contact_list,
                                key_list, group_list, settings, master_key))

        # Teardown
        shutil.rmtree('received_files/')
コード例 #6
0
 def setUp(self):
     self.contact_list = ContactList()
     self.group_list = GroupList()
     self.settings = Settings(disable_gui_dialog=True)
     self.queues = gen_queue_dict()
     self.onion_service = OnionService()
     self.args = self.contact_list, self.group_list, self.settings, self.queues, self.onion_service
コード例 #7
0
ファイル: test_contact.py プロジェクト: barleyj/tfc
    def test_contact_not_present_on_txm(self):
        # Setup
        o_input = builtins.input
        builtins.input = lambda x: 'Yes'
        user_input = UserInput('rm [email protected]')
        contact_list = ContactList(nicks=['Bob'])
        window = Window(window_contact=[contact_list.get_contact('Bob')],
                        type='group')
        group_list = GroupList(groups=[])
        settings = Settings()
        queues = {KEY_MANAGEMENT_QUEUE: Queue(), COMMAND_PACKET_QUEUE: Queue()}

        # Test
        self.assertIsNone(
            remove_contact(user_input, window, contact_list, group_list,
                           settings, queues))
        self.assertEqual(queues[COMMAND_PACKET_QUEUE].qsize(), 1)

        command_packet, settings_ = queues[COMMAND_PACKET_QUEUE].get()
        self.assertIsInstance(command_packet, bytes)
        self.assertIsInstance(settings_, Settings)

        # Teardown
        builtins.input = o_input

        queues[KEY_MANAGEMENT_QUEUE].close()
        queues[COMMAND_PACKET_QUEUE].close()
コード例 #8
0
class TestGroupRemove(TFCTestCase):
    def setUp(self) -> None:
        """Pre-test actions."""
        self.ts = datetime.datetime.now()
        self.window_list = WindowList()
        self.contact_list = ContactList(
            nicks=[f"contact_{n}" for n in range(21)])
        self.group_list = GroupList(groups=['test_group'])
        self.group = self.group_list.get_group('test_group')
        self.group.members = self.contact_list.contacts[:19]
        self.settings = Settings()

    def test_unknown_group_id_raises_se(self) -> None:
        # Setup
        group_list = GroupList(groups=['test_group'])
        contact_list = ContactList(nicks=[str(n) for n in range(21)])
        cmd_data = group_name_to_group_id('test_group2') + nick_to_pub_key(
            '20')

        # Test
        self.assert_se("Error: No group with ID '2e7mHQznTMsP6' found.",
                       group_remove, cmd_data, self.ts, self.window_list,
                       contact_list, group_list)

    def test_successful_member_removal(self) -> None:
        self.cmd_data = group_name_to_group_id('test_group') + b''.join(
            [nick_to_pub_key('contact_18'),
             nick_to_pub_key('contact_20')])
        self.assertIsNone(
            group_remove(self.cmd_data, self.ts, self.window_list,
                         self.contact_list, self.group_list))
コード例 #9
0
ファイル: test_contact.py プロジェクト: barleyj/tfc
    def test_successful_removal_of_contact(self):
        # Setup
        o_input = builtins.input
        builtins.input = lambda x: 'Yes'
        user_input = UserInput('rm Alice')
        contact_list = ContactList(nicks=['Alice'])
        window = Window(window_contacts=[contact_list.get_contact('Alice')],
                        type='contact')
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        queues = {KEY_MANAGEMENT_QUEUE: Queue(), COMMAND_PACKET_QUEUE: Queue()}

        # Test
        for g in group_list:
            self.assertIsInstance(g, Group)
            self.assertTrue(g.has_member('*****@*****.**'))

        self.assertIsNone(
            remove_contact(user_input, window, contact_list, group_list,
                           settings, queues))
        self.assertEqual(queues[COMMAND_PACKET_QUEUE].qsize(), 1)

        km_data = queues[KEY_MANAGEMENT_QUEUE].get()
        self.assertEqual(km_data, ('REM', '*****@*****.**'))
        self.assertFalse(contact_list.has_contact('*****@*****.**'))

        for g in group_list:
            self.assertIsInstance(g, Group)
            self.assertFalse(g.has_member('*****@*****.**'))

        # Teardown
        builtins.input = o_input
コード例 #10
0
 def test_successful_group_creation(self) -> None:
     # Setup
     group_list = GroupList(groups=['test_group'])
     cmd_data = group_name_to_group_id(
         'test_group') + b'test_group2' + US_BYTE + nick_to_pub_key('Bob')
     contact_list = ContactList(nicks=['Alice', 'Bob'])
     window_list = WindowList(nicks=['Alice', 'Bob'],
                              contact_list=contact_list,
                              group_lis=group_list,
                              packet_list=None,
                              settings=Settings)
     # Test
     self.assertIsNone(
         group_create(cmd_data, self.ts, window_list, contact_list,
                      group_list, self.settings))
     self.assertEqual(len(group_list.get_group('test_group')), 2)
コード例 #11
0
    def setUp(self) -> None:
        """Pre-test actions."""
        self.unit_test_dir = cd_unit_test()
        self.master_key = MasterKey()
        self.settings = Settings()
        self.time = STATIC_TIMESTAMP
        self.contact_list = ContactList(self.master_key, self.settings)
        self.group_list = GroupList(groups=['test_group'])
        self.file_name = f'{DIR_USER_DATA}{self.settings.software_operation}_logs'
        self.tmp_file_name = self.file_name + "_temp"
        self.tfc_log_database = MessageLog(self.file_name,
                                           self.master_key.master_key)
        self.args = self.contact_list, self.group_list, self.settings, self.master_key

        self.msg = (
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean condimentum consectetur purus quis"
            " dapibus. Fusce venenatis lacus ut rhoncus faucibus. Cras sollicitudin commodo sapien, sed bibendu"
            "m velit maximus in. Aliquam ac metus risus. Sed cursus ornare luctus. Integer aliquet lectus id ma"
            "ssa blandit imperdiet. Ut sed massa eget quam facilisis rutrum. Mauris eget luctus nisl. Sed ut el"
            "it iaculis, faucibus lacus eget, sodales magna. Nunc sed commodo arcu. In hac habitasse platea dic"
            "tumst. Integer luctus aliquam justo, at vestibulum dolor iaculis ac. Etiam laoreet est eget odio r"
            "utrum, vel malesuada lorem rhoncus. Cras finibus in neque eu euismod. Nulla facilisi. Nunc nec ali"
            "quam quam, quis ullamcorper leo. Nunc egestas lectus eget est porttitor, in iaculis felis sceleris"
            "que. In sem elit, fringilla id viverra commodo, sagittis varius purus. Pellentesque rutrum loborti"
            "s neque a facilisis. Mauris id tortor placerat, aliquam dolor ac, venenatis arcu."
        )
コード例 #12
0
class TestTabCompleteList(unittest.TestCase):
    def setUp(self):
        self.contact_list = ContactList(nicks=['Alice', 'Bob'])
        self.group_list = GroupList(groups=['test_group'])
        self.settings = Settings(key_list=['key1', 'key2'])
        self.gateway = Gateway()

    def test_get_tab_complete_list(self):
        tab_complete_list = [
            a + ' ' for a in self.contact_list.get_list_of_addresses()
        ]
        tab_complete_list += [
            i + ' ' for i in self.group_list.get_list_of_hr_group_ids()
        ]
        tab_complete_list += [s + ' ' for s in self.settings.key_list]
        tab_complete_list += [s + ' ' for s in self.gateway.settings.key_list]

        tc_list = get_tab_complete_list(self.contact_list, self.group_list,
                                        self.settings, self.gateway)
        self.assertTrue(set(tab_complete_list) < set(tc_list))
        self.assertIsInstance(
            get_tab_completer(self.contact_list, self.group_list,
                              self.settings, self.gateway), types.FunctionType)

        completer = get_tab_completer(self.contact_list, self.group_list,
                                      self.settings, self.gateway)
        options = completer('a', state=0)

        self.assertEqual(options, 'all')
        self.assertIsNone(completer('a', state=5))
コード例 #13
0
    def test_invalid_group_message_header(self):
        # Setup
        message = b'testgroup'
        ts = datetime.datetime.now()
        apct_list = self.create_message_apct(ORIGIN_CONTACT_HEADER,
                                             message,
                                             header=GROUP_MESSAGE_HEADER)
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.rx_harac = 1
        keyset.rx_key = 32 * b'\x01'
        keyset.rx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertFR("Received an invalid group message.",
                          process_message, ts, p, window_list, packet_list,
                          contact_list, key_list, group_list, settings,
                          master_key)
コード例 #14
0
    def test_invalid_window_raises_fr(self):
        # Setup
        message = b'testgroup'
        ts = datetime.datetime.now()
        timestamp = double_to_bytes(time.time() * 1000)
        header = GROUP_MESSAGE_HEADER + timestamp + b'test_group' + US_BYTE
        apct_list = self.create_message_apct(ORIGIN_CONTACT_HEADER,
                                             message,
                                             header=header)
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.rx_harac = 1
        keyset.rx_key = 32 * b'\x01'
        keyset.rx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertFR("Received message to unknown group.",
                          process_message, ts, p, window_list, packet_list,
                          contact_list, key_list, group_list, settings,
                          master_key)

        # Teardown
        cleanup()
コード例 #15
0
    def test_group_exit_msg(self):
        # Setup
        message = b'testgroup'
        ts = datetime.datetime.now()
        apct_list = self.create_message_apct(
            ORIGIN_CONTACT_HEADER, message, header=GROUP_MSG_EXIT_GROUP_HEADER)
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.rx_harac = 1
        keyset.rx_key = 32 * b'\x01'
        keyset.rx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertIsNone(
                process_message(ts, p, window_list, packet_list, contact_list,
                                key_list, group_list, settings, master_key))

        # Teardown
        cleanup()
コード例 #16
0
    def test_group_invitation_msg_from_user(self):
        # Setup
        message = b'testgroup' + US_BYTE + b'*****@*****.**' + US_BYTE + b'*****@*****.**'
        ts = datetime.datetime.now()
        apct_list = self.create_message_apct(
            ORIGIN_USER_HEADER, message, header=GROUP_MSG_INVITATION_HEADER)
        contact_list = ContactList(nicks=['Alice', 'Bob', 'local'])
        key_list = KeyList(nicks=['Alice', 'Bob', 'local'])
        keyset = key_list.get_keyset('*****@*****.**')
        keyset.tx_harac = 1
        keyset.tx_key = 32 * b'\x01'
        keyset.tx_hek = 32 * b'\x01'
        group_list = GroupList(groups=['testgroup'])
        settings = Settings()
        packet_list = PacketList(contact_list=contact_list, settings=settings)
        window_list = WindowList(contact_list=contact_list,
                                 group_list=group_list,
                                 packet_list=packet_list,
                                 settings=settings)
        master_key = MasterKey()

        # Test
        for p in apct_list:
            self.assertIsNone(
                process_message(ts, p, window_list, packet_list, contact_list,
                                key_list, group_list, settings, master_key))

        # Teardown
        cleanup()
コード例 #17
0
    def test_successful_group_add(self) -> None:
        # Setup
        contact_list  = ContactList(nicks=[str(n) for n in range(21)])
        group_lst     = GroupList(groups=['test_group'])
        group         = group_lst.get_group('test_group')
        group.members = contact_list.contacts[:19]
        cmd_data      = group_name_to_group_id('test_group') + nick_to_pub_key('20')

        # Test
        self.assertIsNone(group_add(cmd_data, self.ts, self.window_list, contact_list, group_lst, self.settings))

        group2 = group_lst.get_group('test_group')
        self.assertEqual(len(group2), 20)

        for c in group2:
            self.assertIsInstance(c, Contact)
コード例 #18
0
 def setUp(self):
     self.window = TxWindow()
     self.contact_list = ContactList()
     self.group_list = GroupList()
     self.settings = Settings()
     self.queues = gen_queue_dict()
     self.gateway = Gateway()
     self.args = self.window, self.contact_list, self.group_list, self.settings, self.queues, self.gateway
コード例 #19
0
ファイル: test_commands_g.py プロジェクト: purplesparkle/tfc
    def test_unknown_group_id_raises_soft_error(self) -> None:
        # Setup
        group_list = GroupList(groups=['test_group'])
        cmd_data   = group_name_to_group_id('test_group2')

        # Test
        self.assert_se("Error: No group with ID '2e7mHQznTMsP6' found.",
                       group_delete, cmd_data, self.ts, self.window_list, group_list)
コード例 #20
0
 def setUp(self):
     self.ts           = datetime.now()
     self.contact_list = ContactList(nicks=['Alice'])
     self.window_list  = WindowList(contact_list=self.contact_list)
     self.group_list   = GroupList()
     self.args         = self.ts, self.window_list, self.contact_list
     self.window       = self.window_list.get_window(nick_to_pub_key("Alice"))
     self.window.type  = WIN_TYPE_CONTACT
コード例 #21
0
ファイル: test_commands.py プロジェクト: AJMartel/tfc
 def setUp(self):
     self.o_input = builtins.input
     self.c_queue = Queue()
     self.window = TxWindow(uid='*****@*****.**', name='Alice')
     self.contact_list = ContactList()
     self.group_list = GroupList()
     self.settings = Settings()
     self.master_key = MasterKey()
コード例 #22
0
ファイル: test_commands_g.py プロジェクト: gtog/tfc
 def setUp(self):
     self.ts = datetime.datetime.now()
     self.group_list = GroupList(groups=['test_group'])
     self.window_list = WindowList()
     self.window = RxWindow()
     self.window_list.windows = [self.window]
     self.contact_list = ContactList(nicks=['alice'])
     self.args = self.ts, self.window_list, self.contact_list, self.group_list
コード例 #23
0
ファイル: test_commands_g.py プロジェクト: AJMartel/tfc
    def test_no_accounts_removes_group(self):
        # Setup
        group_list = GroupList(groups=['testgroup'])

        # Test
        self.assertFR("Removed group 'testgroup'", group_rm_member,
                      'testgroup', [], group_list, self.contact_list,
                      self.settings, self.queues, self.master_key)
コード例 #24
0
ファイル: test_commands_g.py プロジェクト: barleyj/tfc
    def test_remove_members_from_unknown_group(self):
        # Setup
        group_list = GroupList(groups=['testgroup2'])

        # Test
        self.assertFR("Group 'testgroup' does not exist.", group_rm_member,
                      'testgroup', ['*****@*****.**'], group_list, None,
                      None, None)
コード例 #25
0
ファイル: test_contact.py プロジェクト: savg110/tfc
 def setUp(self) -> None:
     """Pre-test actions."""
     self.contact_list  = ContactList(nicks=[LOCAL_ID])
     self.group_list    = GroupList()
     self.settings      = Settings(disable_gui_dialog=True)
     self.queues        = gen_queue_dict()
     self.onion_service = OnionService()
     self.args          = self.contact_list, self.group_list, self.settings, self.queues, self.onion_service
コード例 #26
0
ファイル: test_commands.py プロジェクト: barleyj/tfc
    def test_enable_logging_group(self):
        # Setup
        cmd_data = b'e' + US_BYTE + b'testgroup'
        ts = datetime.datetime.now()
        contact_list = ContactList(nicks=['Bob'])
        window_list = WindowList(windows=[
            RxMWindow(type='group', name='testgroup', uid='testgroup')
        ])
        group_list = GroupList(groups=['testgroup'])
        setting_type = 'L'

        # Test
        group_list.get_group('testgroup').log_messages = False
        self.assertIsNone(
            contact_setting(cmd_data, ts, window_list, contact_list,
                            group_list, setting_type))
        self.assertTrue(group_list.get_group('testgroup').log_messages)
コード例 #27
0
ファイル: test_commands.py プロジェクト: xprog12/tfc
 def setUp(self) -> None:
     """Pre-test actions."""
     self.unit_test_dir = cd_unit_test()
     self.win_name      = nick_to_pub_key("Alice")
     self.contact_list  = ContactList()
     self.group_list    = GroupList()
     self.settings      = Settings()
     self.master_key    = MasterKey()
コード例 #28
0
ファイル: test_input_loop.py プロジェクト: tannercollin/tfc
 def setUp(self):
     self.settings = Settings(disable_gui_dialog=True)
     self.gateway = Gateway()
     self.contact_list = ContactList()
     self.group_list = GroupList()
     self.master_key = MasterKey()
     self.onion_service = OnionService()
     self.queues = gen_queue_dict()
コード例 #29
0
    def test_missing_group_raises_fr(self):
        # Setup
        cmd_data      = b'testgroup_2'
        ts            = datetime.datetime.now()
        window_list   = WindowList()
        group_list    = GroupList(groups=['testgroup'])

        # Test
        self.assertFR("RxM has no group testgroup_2 to remove.", remove_group, cmd_data, ts, window_list, group_list)
コード例 #30
0
    def test_no_contact_raises_fr(self):
        # Setup
        contact_list = ContactList(nicks=['Alice'])
        group_list   = GroupList(groups=[])
        key_list     = KeyList(nicks=['Alice'])

        # Test
        self.assert_fr(f"Receiver has no account '{nick_to_short_address('Bob')}' to remove.",
                       contact_rem, *self.args, contact_list, group_list, key_list, self.settings, self.master_key)