Skip to content

test(server-nestjs): parité reconcile-only des rôles admin keycloak + garde d'émission - #2581

Draft
shikanime wants to merge 1 commit into
mainfrom
test/keycloak-admin-role-parity
Draft

test(server-nestjs): parité reconcile-only des rôles admin keycloak + garde d'émission#2581
shikanime wants to merge 1 commit into
mainfrom
test/keycloak-admin-role-parity

Conversation

@shikanime

Copy link
Copy Markdown
Member

Issues liées

#2574 #2576


Quel est le comportement actuel ?

Legacy déclenche hook.adminRole.upsert/delete à chaque create/patch/delete de rôle admin ; server-nestjs ne synchronise les groupes OIDC que via le cron reconcile, sans chemin évènementiel ni module admin-role.

Quel est le nouveau comportement ?

  • keycloak.service.spec.ts : +35 lignes — describe('migration parity: admin-role event path') : (a) verrouille la sync des groupes OIDC via cron uniquement, (b) garde négative « pas d'emitAdminRoleEvent » sur AppEventsService pour forcer tout futur chemin évènementiel à passer par l'audit de parité.

12/12 tests verts sur Node 24.

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

Blocant cutover latent tracé côté migration (matrice u5/u9).

@github-actions github-actions Bot added the built label Aug 25, 2026
@shikanime shikanime closed this Aug 28, 2026
@shikanime
shikanime deleted the test/keycloak-admin-role-parity branch August 28, 2026 15:49
@shikanime shikanime reopened this Aug 28, 2026
@shikanime
shikanime force-pushed the test/keycloak-admin-role-parity branch from f89913c to b768efb Compare August 31, 2026 10:09

@shikanime shikanime left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict : Changements demandés

Les gardes de parité (« cet évènement n'existe pas volontairement ») sont une bonne idée et les specs sont bien rédigées. En revanche la PR mélange trois sujets : la parité keycloak (le titre), l'audit migration-parité et la parité vault/zone + e2e, plus deux documents de notes internes. À scinder — le cœur keycloak est prêt.

- `adminRole.*`, `cluster.*` — no nestjs module yet; these are the next migration units, not bugs today.
3. **Redundant emission:** `projectMember.*` events have no consumer. Either add a thin `@OnEvent('projectMember.upsert')` that no-ops intentionally, or stop emitting. Not a bug; note for cleanup.

## In-progress work preserved (do NOT clobber)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[🔴 Bloquant] Ce fichier (et TESTING-CAMPAIGN.md) sont des notes de travail internes (« in-progress work preserved », « per user », état d'un checkout local) : à retirer de la PR — ils ne sont pas destinés au dépôt. Le contenu utile (audit de parité) a sa place dans les issues #2574/#2576 ou une documentation validée, pas en pièces jointes de commit.

await service.handleCron()

// Legacy fires `hook.adminRole.upsert(roleId)` on create/patch and
// `hook.adminRole.delete(role)` on delete (admin-role/business.ts).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[🟠 Important] Les commits de parité app-events, vault/zone et l'e2e vault sont hors périmètre du titre « parité reconcile-only des rôles admin keycloak ». Règle maison : PR minimale — isoler le travail keycloak (26ed9ec + b768efb) et proposer le reste en PR séparée ou en issues.

})
})

describe('migration parity: admin-role event path (legacy hook.adminRole.*)', () => {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[✨ Éloge] Les gardes négatives documentées (« pas d'emitAdminRoleEvent ») transforment un choix de migration en contrat testé — bon filet anti-régression pour le cutover.

@shikanime
shikanime force-pushed the test/keycloak-admin-role-parity branch from aa86db0 to 597423f Compare September 9, 2026 14:13
… garde d'émission

- keycloak.service.spec.ts : verrouille la synchronisation des groupes OIDC
  admin via le cron reconcile uniquement et ajoute une garde négative
  (pas d'emitAdminRoleEvent sur AppEventsService) pour forcer tout futur
  chemin évènementiel à passer par l'audit de parité.
- app-events.service.spec.ts : épingle la surface d'émission publique
  (emitProjectEvent/emitProjectMemberEvent/emitRepositoryEvent) et interdit
  l'apparition accidentelle d'un emitZoneEvent tant que la migration zone
  n'est pas passée par l'audit de parité.

Refs #2574 #2576

Signed-off-by: William Phetsinorath <[email protected]>
Change-Id: Ia5161f97df87545876558fcb51f463bb6a6a6964
@shikanime
shikanime force-pushed the test/keycloak-admin-role-parity branch from 597423f to 3c6b765 Compare September 9, 2026 14:20
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant