Files
Aether/tests/services/test_provider_fingerprint.py

40 lines
1.4 KiB
Python
Raw Normal View History

from __future__ import annotations
from types import SimpleNamespace
from src.services.provider.fingerprint import (
CHROME_IMPERSONATE_PROFILES,
ensure_key_fingerprint,
generate_fingerprint,
load_fingerprint,
)
def test_generate_fingerprint_is_deterministic_with_seed() -> None:
first = generate_fingerprint(seed="key-123")
second = generate_fingerprint(seed="key-123")
assert first == second
def test_load_fingerprint_falls_back_for_invalid_impersonate() -> None:
profile = load_fingerprint({"impersonate": "invalid-profile"}, "key-abc")
assert profile.impersonate in CHROME_IMPERSONATE_PROFILES
def test_ensure_key_fingerprint_returns_profile_when_missing() -> None:
key = SimpleNamespace(id="key-xyz", fingerprint=None)
profile = ensure_key_fingerprint(key, persist_if_missing=False)
assert profile.impersonate in CHROME_IMPERSONATE_PROFILES
# Deterministic: same key_id produces same profile
profile2 = ensure_key_fingerprint(key, persist_if_missing=False)
assert profile.impersonate == profile2.impersonate
def test_ensure_key_fingerprint_uses_existing_fingerprint() -> None:
existing = generate_fingerprint(seed="key-existing")
key = SimpleNamespace(id="key-existing", fingerprint=existing)
profile = ensure_key_fingerprint(key, persist_if_missing=False)
assert profile.impersonate == existing["impersonate"]