app/tests/test_principal_context.py
Rama main · réplica de lectura del repositorio original.
from app.identity import DefaultPrincipalResolver, PrincipalContext
def test_bearer_principal_never_contains_raw_credential() -> None:
resolver = DefaultPrincipalResolver("demo")
principal = resolver.resolve(
authorization="Bearer very-sensitive-tenant-key",
client_host="127.0.0.1",
)
assert "very-sensitive-tenant-key" not in repr(principal)
assert "very-sensitive-tenant-key" not in principal.vault_namespace
assert principal.application_id == "demo"
assert principal.authentication_method == "bearer"
def test_credentials_resolve_to_isolated_namespaces() -> None:
resolver = DefaultPrincipalResolver()
first = resolver.resolve(authorization="Bearer tenant-a", client_host=None)
same = resolver.resolve(authorization="bearer tenant-a", client_host=None)
second = resolver.resolve(authorization="Bearer tenant-b", client_host=None)
assert first == same
assert first.vault_namespace != second.vault_namespace
assert first.audit_id != second.audit_id
assert first.rate_limit_key != second.rate_limit_key
def test_principal_rejects_empty_context_fields() -> None:
try:
PrincipalContext("", "app", "subject", "bearer")
except ValueError as exc:
assert "tenant_id" in str(exc)
else:
raise AssertionError("empty tenant must fail closed")