55 lines
1.9 KiB
Python
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."
|
|
)
|