def test_short_file(self): # Setup packets = split_to_assembly_packets(self.short_f_data, FILE) # Test self.assertFalse(os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt')) self.assertFalse( os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt.1')) packet = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings) packet.long_active = True for p in packets: packet.add_packet(p) self.assertIsNone( packet.assemble_and_store_file(self.ts, self.onion_pub_key, self.window_list)) self.assertTrue(os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt')) for p in packets: packet.add_packet(p) self.assertIsNone( packet.assemble_and_store_file(self.ts, self.onion_pub_key, self.window_list)) self.assertTrue( os.path.isfile(f'{DIR_RECV_FILES}Alice/testfile.txt.1'))
def test_decryption_error_raises_fr(self): # Setup packet = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings) packet_list = assembly_packet_creator(MESSAGE, self.msg, tamper_ciphertext=True) for p in packet_list: packet.add_packet(p) # Test self.assert_fr("Error: Decryption of message failed.", packet.assemble_message_packet)
def test_long_command_compression_error_raises_fr(self): # Setup packet = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings) packet_list = assembly_packet_creator(COMMAND, os.urandom(500), tamper_compression=True) for p in packet_list: packet.add_packet(p) # Test self.assert_fr("Error: Decompression of command failed.", packet.assemble_command_packet) self.assertEqual(packet.log_masking_ctr, 0)
def test_long_command_hash_mismatch_raises_fr(self): # Setup packet = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings) packet_list = assembly_packet_creator(COMMAND, os.urandom(500), tamper_cmd_hash=True) for p in packet_list: packet.add_packet(p) # Test self.assert_fr("Error: Received an invalid command.", packet.assemble_command_packet) self.assertEqual(packet.log_masking_ctr, 0)
def test_short_command(self): # Setup packet = Packet(LOCAL_ID, ORIGIN_CONTACT_HEADER, COMMAND, self.contact, self.settings) packets = assembly_packet_creator(COMMAND, b'test_command') for p in packets: packet.add_packet(p) # Test self.assertEqual(packet.assemble_command_packet(), b'test_command') self.assertEqual(packet.log_masking_ctr, 0)
def test_long_file(self): # Setup packet = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings) packet.long_active = True packet_list = assembly_packet_creator(FILE) for p in packet_list: packet.add_packet(p) # Test self.assertIsNone(packet.assemble_and_store_file(self.ts, self.onion_pub_key, self.window_list)) self.assertEqual(os.path.getsize(f'{DIR_RECV_FILES}Alice/test_file.txt'), 10000)
def test_long_message(self): # Setup packet = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings) packet_list = assembly_packet_creator(MESSAGE, self.msg) for p in packet_list: packet.add_packet(p, packet_ct=b'test_ct') # Test message = packet.assemble_message_packet() self.assertEqual(message, self.whisper_header + PRIVATE_MESSAGE_HEADER + self.msg.encode()) self.assertEqual(packet.log_ct_list, 3 * [b'test_ct'])
def test_noise_packet_interrupts_file(self): # Setup packet = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings) packet_list = assembly_packet_creator(FILE)[:20] packet_list.append(byte_padding(P_N_HEADER)) # Add noise packet for p in packet_list: packet.add_packet(p) # Test self.assertEqual(len(packet.assembly_pt_list), 0) # Noise packet empties packet list self.assertFalse(packet.long_active) self.assertFalse(packet.is_complete) self.assertEqual(packet.log_masking_ctr, len(packet_list))
def test_compression_error_raises_soft_error(self) -> None: # Setup packet = Packet(self.onion_pub_key, ORIGIN_USER_HEADER, MESSAGE, self.contact, self.settings) packet_list = assembly_packet_creator(MESSAGE, self.short_msg, tamper_compression=True) for p in packet_list: packet.add_packet(p) # Test self.assert_se("Error: Decompression of message failed.", packet.assemble_message_packet)
def test_disabled_file_reception_raises_fr_with_end_packet(self): # Setup packet = Packet(self.onion_pub_key, ORIGIN_CONTACT_HEADER, FILE, self.contact, self.settings) packet.long_active = True packet_list = assembly_packet_creator(FILE) for p in packet_list[:-1]: self.assertIsNone(packet.add_packet(p)) packet.contact.file_reception = False # Test for p in packet_list[-1:]: self.assert_fr("Alert! File reception disabled mid-transfer.", packet.add_packet, p) self.assertEqual(packet.log_masking_ctr, len(packet_list))