class AttachmentTests3(KDBX3Tests): # get some things ready before testing def setUp(self): shutil.copy( os.path.join(base_dir, self.database), os.path.join(base_dir, 'test_attachment.kdbx') ) self.open() def open(self): self.kp = PyKeePass( os.path.join(base_dir, 'test_attachment.kdbx'), password=self.password, keyfile=os.path.join(base_dir, self.keyfile) ) def test_create_delete_attachment(self): attachment_id = self.kp.add_binary(b'Ronald McDonald Trump') self.kp.save() self.open() self.assertEqual(self.kp.binaries[-1], b'Ronald McDonald Trump') num_attach = len(self.kp.binaries) self.kp.delete_binary(len(self.kp.binaries) - 1) self.kp.save() self.open() self.assertEqual(len(self.kp.binaries), num_attach - 1) def test_attachment_reference_decrement(self): e = self.kp.entries[0] attachment_id1 = self.kp.add_binary(b'foobar') attachment_id2 = self.kp.add_binary(b'foobar2') attachment1 = e.add_attachment(attachment_id1, 'foo.txt') attachment2 = e.add_attachment(attachment_id2, 'foo.txt') self.kp.delete_binary(attachment_id1) self.assertEqual(attachment2.id, attachment_id2 - 1) def tearDown(self): os.remove(os.path.join(base_dir, 'test_attachment.kdbx'))
class AttachmentTests3(KDBX3Tests): # get some things ready before testing def setUp(self): shutil.copy( os.path.join(base_dir, self.database), os.path.join(base_dir, 'test_attachment.kdbx') ) self.open() def open(self): self.kp = PyKeePass( os.path.join(base_dir, 'test_attachment.kdbx'), password=self.password, keyfile=os.path.join(base_dir, self.keyfile) ) def test_create_delete_binary(self): with self.assertRaises(BinaryError): self.kp.delete_binary(999) with self.assertRaises(BinaryError): e = self.kp.entries[0] e.add_attachment(filename='foo.txt', id=123) e.attachments[0].binary binary_id = self.kp.add_binary(b'Ronald McDonald Trump') self.kp.save() self.open() self.assertEqual(self.kp.binaries[binary_id], b'Ronald McDonald Trump') self.assertEqual(len(self.kp.attachments), 1) num_attach = len(self.kp.binaries) self.kp.delete_binary(binary_id) self.kp.save() self.open() self.assertEqual(len(self.kp.binaries), num_attach - 1) def test_attachment_reference_decrement(self): e = self.kp.entries[0] binary_id1 = self.kp.add_binary(b'foobar') binary_id2 = self.kp.add_binary(b'foobar2') attachment1 = e.add_attachment(binary_id1, 'foo.txt') attachment2 = e.add_attachment(binary_id2, 'foo.txt') self.kp.delete_binary(binary_id1) self.assertEqual(attachment2.id, binary_id2 - 1) def test_fields(self): e = self.kp.entries[0] binary_id = self.kp.add_binary(b'foobar') a = e.add_attachment(filename='test.txt', id=binary_id) self.assertEqual(a.data, b'foobar') self.assertEqual(a.id, binary_id) self.assertEqual(a.filename, 'test.txt') def tearDown(self): os.remove(os.path.join(base_dir, 'test_attachment.kdbx'))