コード例 #1
0
    def test_add_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(software_operation='ut', m_number_of_accnts=20)
        master_k = MasterKey()
        contact_l = ContactList(master_k, settings)
        contact_l.contacts = [contact1, contact2]

        contact_l.add_contact('*****@*****.**', '*****@*****.**', 'Alice',
                              32 * b'\x03', 32 * b'\x04', True, True, True)
        contact_l.add_contact('*****@*****.**', '*****@*****.**', 'David',
                              32 * b'\x03', 32 * b'\x04', True, True, True)

        contact_l2 = ContactList(master_k, settings)
        c_alice = contact_l2.get_contact('Alice')
        c_david = contact_l2.get_contact('David')

        # Test
        self.assertIsInstance(c_alice, Contact)
        self.assertIsInstance(c_david, Contact)
        self.assertEqual(c_alice.tx_fingerprint, 32 * b'\x03')
        self.assertEqual(c_david.tx_fingerprint, 32 * b'\x03')
コード例 #2
0
ファイル: test_db_contacts.py プロジェクト: todun/tfc
class TestContact(unittest.TestCase):
    def setUp(self):
        """Pre-test actions."""
        self.contact = Contact(nick_to_pub_key('Bob'),
                               'Bob',
                               FINGERPRINT_LENGTH * b'\x01',
                               FINGERPRINT_LENGTH * b'\x02',
                               KEX_STATUS_UNVERIFIED,
                               log_messages=True,
                               file_reception=True,
                               notifications=True)

    def test_contact_serialization_length_and_type(self):
        serialized = self.contact.serialize_c()
        self.assertEqual(len(serialized), CONTACT_LENGTH)
        self.assertIsInstance(serialized, bytes)

    def test_uses_psk(self):
        for kex_status in [KEX_STATUS_NO_RX_PSK, KEX_STATUS_HAS_RX_PSK]:
            self.contact.kex_status = kex_status
            self.assertTrue(self.contact.uses_psk())

        for kex_status in [
                KEX_STATUS_NONE, KEX_STATUS_PENDING, KEX_STATUS_UNVERIFIED,
                KEX_STATUS_VERIFIED, KEX_STATUS_LOCAL_KEY
        ]:
            self.contact.kex_status = kex_status
            self.assertFalse(self.contact.uses_psk())
コード例 #3
0
    def test_dump_c(self):
        # Setup
        contact = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                          32 * b'\x01', 32 * b'\x02', True, True, True)
        bytestring = contact.dump_c()

        # Test
        self.assertEqual(len(bytestring), (3 * 1024 + 32 + 32 + 1 + 1 + 1))
        self.assertIsInstance(bytestring, bytes)
コード例 #4
0
 def setUp(self):
     self.contact = Contact(nick_to_pub_key('Bob'),
                            'Bob',
                            FINGERPRINT_LENGTH * b'\x01',
                            FINGERPRINT_LENGTH * b'\x02',
                            KEX_STATUS_UNVERIFIED,
                            log_messages=True,
                            file_reception=True,
                            notifications=True)
コード例 #5
0
ファイル: mock_classes.py プロジェクト: barleyj/tfc
 def add_contact(self, rx_account, tx_account, nick, tx_fingerprint, rx_fingerprint, log_messages, file_reception, notifications):
     if self.has_contact(rx_account):
         self.remove_contact(rx_account)
     contact = Contact(rx_account, tx_account, nick,
                       tx_fingerprint, rx_fingerprint,
                       log_messages, file_reception, notifications)
     self.contacts.append(contact)
     self.store_contacts()
コード例 #6
0
    def test_len_returns_number_of_contacts(self):
        # Setup
        contact = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                          32 * b'\x01', 32 * b'\x02', True, True, True)
        contact_l = ContactList(MasterKey(), Settings())
        contact_l.contacts = 5 * [contact]

        # Test
        self.assertEqual(len(contact_l), 5)
コード例 #7
0
ファイル: mock_classes.py プロジェクト: barleyj/tfc
def create_contact(nick='Alice',
                   user='******',
                   txfp=32 * b'\x01',
                   rxfp=32 * b'\x02',
                   l=True, f=True, n=True):
    """Create mock contact object."""
    account = 'local' if nick == 'local' else f'{nick.lower()}@jabber.org'
    user    = '******' if nick == 'local' else f'{user.lower()}@jabber.org'
    return Contact(account, user, nick, txfp, rxfp, l, f, n)
コード例 #8
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, '*****@*****.**')
コード例 #9
0
    def test_iterate_over_contacts(self):
        # Setup
        contact = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                          32 * b'\x01', 32 * b'\x02', True, True, True)
        contact_l = ContactList(MasterKey(), Settings())
        contact_l.contacts = 5 * [contact]

        # Test
        for c in contact_l:
            self.assertIsInstance(c, Contact)
コード例 #10
0
    def test_getters(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
        self.assertEqual(
            contact_l.contact_selectors(),
            ['*****@*****.**', '*****@*****.**', 'Alice', 'Charlie'])
        self.assertEqual(contact_l.get_list_of_accounts(),
                         ['*****@*****.**', '*****@*****.**'])
        self.assertEqual(contact_l.get_list_of_nicks(), ['Alice', 'Charlie'])
        self.assertEqual(contact_l.get_list_of_users_accounts(),
                         ['*****@*****.**'])
コード例 #11
0
    def test_remove_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)
        contact_l = ContactList(MasterKey(), Settings())
        contact_l.contacts = [contact1, contact2]

        # Test
        self.assertTrue(contact_l.has_contacts())
        self.assertTrue(contact_l.has_contact('Alice'))
        self.assertTrue(contact_l.has_contact('*****@*****.**'))

        contact_l.remove_contact('*****@*****.**')
        self.assertFalse(contact_l.has_contact('Alice'))
        self.assertFalse(contact_l.has_contact('*****@*****.**'))

        contact_l.remove_contact('Charlie')
        self.assertEqual(len(contact_l.contacts), 0)
        self.assertFalse(contact_l.has_contacts())
コード例 #12
0
def create_contact(nick          ='Alice',
                   user          ='******',
                   txfp          =FINGERPRINT_LEN * b'\x01',
                   rxfp          =FINGERPRINT_LEN * b'\x02',
                   log_messages  =True,
                   file_reception=True,
                   notifications =True):
    """Create mock contact object."""
    account = LOCAL_ID if nick == LOCAL_ID else f'{nick.lower()}@jabber.org'
    user    = LOCAL_ID if nick == LOCAL_ID else f'{user.lower()}@jabber.org'
    return Contact(account, user, nick,
                   txfp, rxfp,
                   log_messages, file_reception, notifications)
コード例 #13
0
def create_contact(nick: str,
                   tx_fingerprint: bytes = FINGERPRINT_LENGTH * b'\x01',
                   rx_fingerprint: bytes = FINGERPRINT_LENGTH * b'\x02',
                   kex_status: bytes = KEX_STATUS_VERIFIED,
                   log_messages: bool = True,
                   file_reception: bool = True,
                   notifications: bool = True) -> Contact:
    """Create a mock contact object."""
    if nick == LOCAL_ID:
        pub_key = LOCAL_PUBKEY
        nick = LOCAL_NICK
    else:
        pub_key = nick_to_pub_key(nick)

    return Contact(pub_key, nick, tx_fingerprint, rx_fingerprint, kex_status,
                   log_messages, file_reception, notifications)
コード例 #14
0
    def test_store_and_load_contacts(self):
        # Setup
        contact = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                          32 * b'\x01', 32 * b'\x02', True, True, True)
        settings = Settings()
        master_k = MasterKey()
        contact_l = ContactList(master_k, settings)
        contact_l.contacts = 5 * [contact]
        contact_l.store_contacts()

        # Test
        contact_l2 = ContactList(master_k, settings)
        self.assertEqual(len(contact_l2), 5)
        for c in contact_l2:
            self.assertIsInstance(c, Contact)

        self.assertTrue(os.path.isfile(f'{DIR_USER_DATA}/ut_contacts'))
        self.assertEqual(
            os.path.getsize(f'{DIR_USER_DATA}/ut_contacts'),
            24 + 20 * (1024 + 1024 + 1024 + 32 + 32 + 1 + 1 + 1) + 16)
        os.remove(f'{DIR_USER_DATA}/ut_contacts')
コード例 #15
0
    def test_local_contact(self):
        # Setup
        contact1 = Contact('*****@*****.**', '*****@*****.**', 'Alice',
                           32 * b'\x01', 32 * b'\x02', True, True, True)
        contact_l = ContactList(MasterKey(), Settings())
        contact_l.contacts = [contact1]
        o_get_tty_w = src.common.misc.get_tty_w
        src.common.misc.get_tty_w = lambda x: 1

        # Test
        self.assertFalse(contact_l.has_local_contact())

        contact_l.add_contact('local', 'local', 'local', 32 * b'\x03',
                              32 * b'\x04', True, True, True)

        self.assertTrue(contact_l.has_local_contact())
        self.assertIsNone(contact_l.print_contacts())
        self.assertIsNone(contact_l.print_contacts(spacing=True))

        # Teardown
        src.common.misc.get_tty_w = o_get_tty_w