krz/yoshi-cli

Archived

A password manager for the command line. cli password-manager terminal

Commit 83126f2a2b

83126f2a2b88bd0e231e8f49d0ca0cbd02f4326f

parent: d64de8f690

Verified · cmc

cmc <hello@cleberg.net> · 2024-11-07 03:06 UTC

fix pylint errors

Layout: unified · split

tests/test_crypto.py added +50
@@ -0,0 +1,50 @@
1# test_crypto.py
2import unittest
3from io import BytesIO
4from cryptography.fernet import Fernet
5from crypto import generate_key, load_key, encrypt, decrypt
6
7class TestCryptoFunctions(unittest.TestCase):
8
9 def setUp(self):
10 self.key = generate_key()
11 with open('vault.sqlite', 'wb') as vault:
12 vault.write(b'Hello, world!')
13
14 def tearDown(self):
15 try:
16 os.remove('vault.sqlite')
17 except FileNotFoundError:
18 pass
19
20 def test_generate_key(self):
21 new_key = generate_key()
22 self.assertNotEqual(new_key, self.key)
23
24 def test_load_key(self):
25 key_file = 'key.bin'
26 with open(key_file, 'wb') as key:
27 key.write(self.key)
28 loaded_key = load_key(key_file)
29 self.assertEqual(loaded_key, self.key)
30
31 def test_encrypt_decrypt(self):
32 encrypt(self.key, filename='vault.sqlite')
33 with open('vault.sqlite', 'rb') as vault:
34 encrypted_data = vault.read()
35 decrypt(self.key)
36 with open('vault.sqlite', 'rb') as vault:
37 decrypted_data = vault.read()
38 f = Fernet(self.key)
39 self.assertEqual(f.decrypt(encrypted_data), b'Hello, world!')
40
41 def test_load_invalid_key(self):
42 key_file = 'key.bin'
43 try:
44 load_key(key_file)
45 self.fail('Expected FileNotFoundError')
46 except FileNotFoundError:
47 pass
48
49if __name__ == '__main__':
50 unittest.main()