Ctrl K
ComunidadGuías…

app/tests/test_principal_context.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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")