Skip to content

🐛 [BUG] - Test instable gitlab.service.spec : rotation du mirror token non déterministe (faker.date.past vs seuil 250j) #2706

Description

@shikanime

Description

Le test unitaire gitlabService > handleUpsert > proactively rotates the mirror token when the vault secret is older than the rotation threshold (apps/server-nestjs/src/modules/gitlab/gitlab.service.spec.ts) est instable : il échoue de manière intermittente en CI (ex. runs 34332426568, 34332788033) avec revokeProjectToken — Number of calls: 0, alors qu'il passe localement.

Cause racine : le test génère la date du secret Vault avec faker.date.past({ years: 2 }), soit un tirage uniforme dans [0 ; 730] jours. Le seuil de rotation par défaut vaut 250 jours (GITLAB_MIRROR_TOKEN_ROTATION_THRESHOLD_DAYS). Environ un tiers des tirages tombent sous le seuil : la branche de rotation ne se déclenche pas, revokeProjectToken n'est jamais appelé et l'assertion échoue.

Correctif attendu : borner la date du secret au-delà du seuil (par exemple faker.date.past({ years: 2 }) remplacé par une date fixe ou garanties > 250 jours) pour rendre le test déterministe.

Etapes de reproduction

  1. Lancer pnpm vitest run src/modules/gitlab/gitlab.service.spec.ts dans apps/server-nestjs sur une branche contenant le test (main inclus).
  2. Répéter jusqu'à observer l'échec (probabilité d'environ 1/3 par tirage de faker).
  3. Voir AssertionError: expected "vi.fn()" to be called with arguments: [ { id: 123, …(18) }, 11 ] — Number of calls: 0.

Captures d'écran

Logs

Navigateurs

OS

Version de la console impactée

main (depuis f0139b6 « feat(server-nestjs): proactive GitLab mirror token rotation with enforced headroom »)

Définition du fini

  • Le correctif est terminé
  • Les tests liés à ce correctif ont été ajoutés

Activity

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions