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')
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())
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)
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)
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()
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)
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)
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, '*****@*****.**')
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)
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(), ['*****@*****.**'])
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())
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)
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)
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')
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