Files
python-encrypt-code/tests/unit/password_provider_test.py
T
Brian Bjarke Jensen 422bad3fb8
Python Code Quality / python-code-quality (push) Successful in 11s
Python Test / python-test (push) Successful in 12s
first version
2026-01-07 17:59:16 +01:00

55 lines
1.9 KiB
Python

"""Definition of unit tests for PasswordProvider class."""
import os
import base64
import json
from python_encrypt_code.password_provider import PasswordProvider
def test_password_provider_generates_password() -> None:
"""Test that PasswordProvider generates a password correctly."""
# Generate password
password = PasswordProvider.generate_password()
# Verify password is a non-empty string
assert isinstance(password, str), "Generated password should be a string."
assert len(password) > 0, "Generated password should not be empty."
# Verify password is URL-safe base64
try:
decoded_bytes = base64.urlsafe_b64decode(
password.encode(PasswordProvider._encoding)
)
print(decoded_bytes)
assert len(decoded_bytes) == 32, "Decoded password should be 32 bytes long."
except Exception as e:
assert False, f"Generated password is not valid URL-safe base64: {e}"
def test_password_provider_get_decryption_keys() -> None:
"""Test that PasswordProvider.get_decryption_keys retrieves the keys correctly."""
# Set environment variable for get_decryption_keys test
expected_password = PasswordProvider.generate_password()
expected_aad = PasswordProvider._collect_metadata()
os.environ["PEC_PASSWORD"] = expected_password
os.environ["PEC_AAD"] = json.dumps(expected_aad)
# Retrieve keys
password, aad = PasswordProvider.get_decryption_keys()
# Verify retrieved password
assert isinstance(password, str), "Password should be a string."
assert len(password) > 0, "Password should not be empty."
assert password == expected_password, (
"get_decryption_keys should return the password from environment variable."
)
# Verify retrieved AAD
assert isinstance(aad, dict), "AAD should be a dictionary."
assert aad == expected_aad, (
"get_decryption_keys should return the AAD from environment variable."
)