Idioma: English Español
Las golden fixtures son archivos JSON en src/libs/sdk/contracts/fixtures/ que capturan payloads representativos de AuthorizationGraph cubriendo el espectro completo de comportamientos. Son el contrato ejecutable: cada SDK y el servidor UMS deben coincidir en cómo interpretarlas.
Cada fixture pasa por round-trip a través de cada artefacto que toca el schema:
auth-graph.schema.json.AuthorizationGraphBuilderService de UMS puede producir esta forma exacta dado el input equivalente.Ums.Sdk.Contracts, @ums/sdk-contracts la parsean sin pérdida.RequiresScope('STOCK_VIEW.VIEW')”), cada runtime retorna el mismo AuthorizationDecision.CI corre los cinco pasos en cada PR. Una falla en cualquier paso bloquea el PR.
| Archivo | Escenario | Usado para verificar |
|---|---|---|
local-auth-success.json |
Happy path auth Local (BCrypt), profile OrgWide, mezcla de Allow / NotGranted / Deny | Forma baseline, generación de scopes |
idp-auth-success.json |
Happy path auth IDP (Azure AD), profile BranchScoped, MFA requerido | Bloque authentication IDP, branch no nulo |
deny-wins.json |
La misma acción tiene Allow en un lugar y Deny en otro | Regla deny-precedence (Axioma A3) |
override-allow.json |
Override de profile cambia un Deny de Template a Allow | Regla override-takes-precedence |
empty-permissions.json |
Usuario tiene Profile pero sin permisos concedidos | scopes[], domainPermissions[] vacíos |
expired-graph.json |
validUntil < generatedAt + 1ms (expirado deliberadamente) |
Rechazo AUTH_201 por SDKs |
feature-flag-matched.json |
Flag coincide vía criteria BranchId |
isEnabled = true, matchedCriteriaType seteado |
feature-flag-missed-context.json |
Flag existe, pero el contexto no provee el campo requerido | isEnabled = false, matchedCriteriaType = null |
multi-tenant-rejection.json |
Grafo es para tenant A, usado para probe a cliente que espera tenant B | Mismatch de tenant AUTH_109 |
schema-unsupported-major.json |
schemaVersion: "2.0.0" (MAJOR futuro) |
SDK con compat <2.0.0 rechaza con AUTH_205 |
schema-minor-ahead.json |
schemaVersion: "1.99.0", contiene campo opcional desconocido |
Accept-with-warning, preservar en extensions |
schema-missing.json |
Payload sin schemaVersion |
Rechazo AUTH_204 |
auth-graph.md §8 (11111111-1111-... para tenants, 22222222-... para system suites, etc.). IDs predecibles hacen diffs legibles.LOGISTICS_CORE, ACME_RETAIL, EXAMPLE_BANK. Nunca nombres de clientes reales.firstname.lastname@<dominio-ficticio>.example. Usa .example por RFC 2606."PLACEHOLDER".src/libs/sdk/contracts/fixtures/<scenario-name>.json.Una fixture solo puede removerse si el escenario que representa ya no es alcanzable en ninguna versión de schema soportada. La remoción requiere:
Si una fixture queda outdated por un cambio MAJOR de schema, preferir migrarla (actualizarla para coincidir con el nuevo schema) en lugar de borrarla. Las fixtures históricas son útiles para análisis de regresión.
src/libs/sdk/contracts/fixtures/