AnemiaLens / backend /tests /test_security.py
asnannp's picture
sync: sync backend code, models, schemas, and API routers to Hugging Face Space cleanly
f559cc0
Raw
History Blame Contribute Delete
1.12 kB
from __future__ import annotations
import sys
from pathlib import Path
import bcrypt
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from app.utils.security import PASSWORD_HASH_PREFIX, hash_password, verify_password
def test_hash_password_supports_long_ascii_password() -> None:
password = "a" * 120
hashed = hash_password(password)
assert hashed.startswith(PASSWORD_HASH_PREFIX)
assert verify_password(password, hashed) is True
assert verify_password("b" * 120, hashed) is False
def test_hash_password_supports_long_unicode_password() -> None:
password = "🙂परीक्षण密碼" * 20
hashed = hash_password(password)
assert hashed.startswith(PASSWORD_HASH_PREFIX)
assert verify_password(password, hashed) is True
def test_verify_password_supports_legacy_bcrypt_hashes() -> None:
password = "legacy-password-" + ("x" * 90)
legacy_hash = bcrypt.hashpw(password.encode("utf-8")[:72], bcrypt.gensalt()).decode("utf-8")
assert verify_password(password, legacy_hash) is True
assert verify_password("wrong-password", legacy_hash) is False