import pytest

from backend.security import PasswordHasher, PasswordPolicyError


@pytest.mark.parametrize("password", ["onlyletters", "12345678", "short1!"])
def test_password_policy_rejects_weak_values(password: str) -> None:
    with pytest.raises(PasswordPolicyError):
        PasswordHasher().hash(password)


def test_password_hash_uses_independent_salts_and_verifies() -> None:
    hasher = PasswordHasher()
    first = hasher.hash("Valid-password-123!")
    second = hasher.hash("Valid-password-123!")

    assert first != second
    assert "Valid-password-123!" not in first
    assert hasher.verify("Valid-password-123!", first)
    assert not hasher.verify("Wrong-password-123!", first)
