"""Tests for hashing utilities."""
from src.core.security.hashing import (
    digest_token_for_lookup,
    generate_magic_link_token,
    generate_refresh_token,
    generate_secure_token,
    hash_token,
    verify_token_hash,
)


def test_hash_and_verify():
    token = "test-token-12345"
    hashed = hash_token(token)
    assert hashed != token
    assert verify_token_hash(token, hashed) is True


def test_verify_wrong_token():
    hashed = hash_token("correct-token")
    assert verify_token_hash("wrong-token", hashed) is False


def test_generate_secure_token_length():
    token = generate_secure_token(32)
    assert len(token) > 20


def test_generate_refresh_token():
    token = generate_refresh_token()
    assert len(token) > 40


def test_generate_magic_link_token():
    token = generate_magic_link_token()
    assert len(token) > 20


def test_digest_token_for_lookup_deterministic():
    """Magic link lookup requires deterministic digest (Argon2 is not)."""
    token = "zE1CCuffWlWatKIVI2dob_W9wxFnQMV5xJdw3ojZurQ"
    d1 = digest_token_for_lookup(token)
    d2 = digest_token_for_lookup(token)
    assert d1 == d2
    assert len(d1) == 64  # SHA256 hex
