29 lines
842 B
Python
29 lines
842 B
Python
from app.security.passwords import hash_password, verify_password
|
|
from app.security.totp import (
|
|
decrypt_totp_secret,
|
|
encrypt_totp_secret,
|
|
generate_totp_secret,
|
|
verify_totp_code,
|
|
)
|
|
import pyotp
|
|
|
|
|
|
def test_password_hash_roundtrip():
|
|
h = hash_password("Sup3rSecret!Passphrase")
|
|
assert verify_password(h, "Sup3rSecret!Passphrase")
|
|
assert not verify_password(h, "wrong-password")
|
|
|
|
|
|
def test_totp_secret_encryption_roundtrip():
|
|
secret = generate_totp_secret()
|
|
enc = encrypt_totp_secret(secret)
|
|
assert enc != secret.encode()
|
|
assert decrypt_totp_secret(enc) == secret
|
|
|
|
|
|
def test_totp_verification():
|
|
secret = generate_totp_secret()
|
|
code = pyotp.TOTP(secret).now()
|
|
assert verify_totp_code(secret, code)
|
|
assert not verify_totp_code(secret, "000000") or pyotp.TOTP(secret).now() == "000000"
|