From 7fd7db9cd12d59f7c523dc2a1a167f7445e5b2f3 Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Mon, 4 May 2026 18:38:58 +0200 Subject: Add support for the %e{key} format and add support for type checkers (ty) --- tests/test_envtoolkit_instance_static.py | 80 ++++++++++++++------------------ 1 file changed, 36 insertions(+), 44 deletions(-) (limited to 'tests/test_envtoolkit_instance_static.py') diff --git a/tests/test_envtoolkit_instance_static.py b/tests/test_envtoolkit_instance_static.py index e13d439..8c21a0f 100644 --- a/tests/test_envtoolkit_instance_static.py +++ b/tests/test_envtoolkit_instance_static.py @@ -23,9 +23,10 @@ import etoolkit @unittest.mock.patch('getpass.getpass') -def test_confirm_password_prompt(getpass, password_hash, master_password): +def test_confirm_password_prompt( + getpass: unittest.mock.MagicMock, password_hash: str, master_password: str +) -> None: """Tests the static EtoolkitInstance.confirm_password_prompt method""" - getpass.return_value = master_password assert ( etoolkit.EtoolkitInstance.confirm_password_prompt(password_hash) @@ -37,9 +38,10 @@ def test_confirm_password_prompt(getpass, password_hash, master_password): ) -def test_decrypt_v1(master_password, short_encrypted_value_v1, short_value): +def test_decrypt_v1( + master_password: str, short_encrypted_value_v1: str, short_value: str +) -> None: """Tests the static EtoolkitInstance.decrypt method""" - assert ( etoolkit.EtoolkitInstance.decrypt( master_password, short_encrypted_value_v1 @@ -59,10 +61,9 @@ def test_decrypt_v1(master_password, short_encrypted_value_v1, short_value): def test_decrypt_v2_no_padding( - master_password, long_encrypted_value, long_value -): + master_password: str, long_encrypted_value: str, long_value: str +) -> None: """Tests the static EtoolkitInstance.decrypt method for v2 - no padding""" - assert ( etoolkit.EtoolkitInstance.decrypt( master_password, long_encrypted_value @@ -80,10 +81,9 @@ def test_decrypt_v2_no_padding( def test_decrypt_v2_with_padding( - master_password, short_encrypted_value, short_value -): + master_password: str, short_encrypted_value: str, short_value: str +) -> None: """Tests the static EtoolkitInstance.decrypt method for v2 with padding""" - assert ( etoolkit.EtoolkitInstance.decrypt( master_password, short_encrypted_value @@ -99,9 +99,8 @@ def test_decrypt_v2_with_padding( assert exc_info.value.args[0] == f'Invalid tag when decrypting: {edata}' -def test_encrypt_no_padding(master_password, long_value): +def test_encrypt_no_padding(master_password: str, long_value: str) -> None: """Tests the static EtoolkitInstance.encrypt method with a long string""" - edata = etoolkit.EtoolkitInstance.encrypt(master_password, long_value) assert edata.startswith('enc-val$2$') assert len(edata) == 131 @@ -111,9 +110,8 @@ def test_encrypt_no_padding(master_password, long_value): ) -def test_encrypt_with_padding(master_password, short_value): +def test_encrypt_with_padding(master_password: str, short_value: str) -> None: """Tests the static EtoolkitInstance.encrypt method with a short string""" - edata = etoolkit.EtoolkitInstance.encrypt(master_password, short_value) assert edata.startswith('enc-val$2$') assert len(edata) == 123 @@ -125,14 +123,13 @@ def test_encrypt_with_padding(master_password, short_value): @unittest.mock.patch('os.urandom') def test_encrypt_staticly_no_padding( - urandom, - master_password, - non_random_bytes_32, - long_encrypted_value, - long_value, -): + urandom: unittest.mock.MagicMock, + master_password: str, + non_random_bytes_32: bytes, + long_encrypted_value: str, + long_value: str, +) -> None: """Tests the EtoolkitInstance.encrypt method always with the same salt""" - urandom.return_value = non_random_bytes_32 edata = etoolkit.EtoolkitInstance.encrypt(master_password, long_value) assert edata == long_encrypted_value @@ -144,14 +141,13 @@ def test_encrypt_staticly_no_padding( @unittest.mock.patch('os.urandom') def test_encrypt_staticly_with_padding( - urandom, - master_password, - non_random_bytes_57, - short_encrypted_value, - short_value, -): + urandom: unittest.mock.MagicMock, + master_password: str, + non_random_bytes_57: bytes, + short_encrypted_value: str, + short_value: str, +) -> None: """Tests the EtoolkitInstance.encrypt method always with the same salt""" - urandom.return_value = non_random_bytes_57 edata = etoolkit.EtoolkitInstance.encrypt(master_password, short_value) assert edata == short_encrypted_value @@ -160,9 +156,8 @@ def test_encrypt_staticly_with_padding( ) -def test_get_new_password_hash(master_password): +def test_get_new_password_hash(master_password: str) -> None: """Tests the static EtoolkitInstance.get_new_password_hash method""" - new_hash = etoolkit.EtoolkitInstance.get_new_password_hash(master_password) # all pbkdf2 params are the same / hardcoded for the time being assert new_hash.startswith('pbkdf2_sha256$500000$') @@ -173,9 +168,8 @@ def test_get_new_password_hash(master_password): ) -def test_parse_value(): +def test_parse_value() -> None: """Tests the static EtoolkitInstance.parse_value method""" - assert ( etoolkit.EtoolkitInstance.parse_value('t%bs%t', {'%b': 'e', '%t': 't'}) == 'test' @@ -183,10 +177,9 @@ def test_parse_value(): def test_password_matches( - password_hash, master_password, wrong_master_password -): + password_hash: str, master_password: str, wrong_master_password: str +) -> None: """Tests the static EtoolkitInstance.password_matches method""" - assert etoolkit.EtoolkitInstance.password_matches( master_password, password_hash ) @@ -197,16 +190,15 @@ def test_password_matches( @unittest.mock.patch('os.urandom') def test_reencrypt_staticly_with_padding( - urandom, - master_password, - new_master_password, - non_random_bytes_57, - short_encrypted_value, - short_encrypted_value_v1, - short_value, -): + urandom: unittest.mock.MagicMock, + master_password: str, + new_master_password: str, + non_random_bytes_57: bytes, + short_encrypted_value: str, + short_encrypted_value_v1: str, + short_value: str, +) -> None: """Tests the EtoolkitInstance.reencrypt method always with the same salt""" - urandom.return_value = non_random_bytes_57 # reencrypt (migrate) v1 to current using the same password edata = etoolkit.EtoolkitInstance.reencrypt( -- cgit v1.3