Skip to content

refactor(server-nestjs): uniformiser la vérification du type des erreurs dans les utils #2629

Description

@shikanime

Description

La vérification du type des erreurs est incohérente entre les modules du server-nestjs. Chaque module client teste ses erreurs de façon ad hoc :

  • gitlab centralise déjà ses gardes typées dans gitlab.utils.ts (isGitbeakerNotFound, hasGitbeakerCause).
  • keycloak utilise un helper partagé getErrorResponseStatus.
  • vault et nexus dispersent des vérifications instanceof VaultError && error.kind === 'NotFound' / instanceof NexusError && error.status === 404 en dur dans les services et clients (plusieurs occurrences chacun).
  • registry et nexus.service répètent la même vérification VaultError NotFound.
  • gitlab-client teste un 401 via instanceof GitbeakerRequestError && error.cause?.response.status === 401 sans garde centralisée.

Cette duplication rend les contrôles fragiles (la sémantique de la 404 / du conflit est réimplémentée à chaque site) et difficile à faire évoluer.

Comportement attendu

Uniformiser la vérification du type des erreurs en exposant, dans chaque util de module, une garde typée (même forme que isGitbeakerNotFound) :

  • vault.utils.ts : isVaultNotFound, isVaultBadRequest.
  • nexus.utils.ts : isNexusNotFound.
  • gitlab.utils.ts : isGitbeakerUnauthorized.

Chaque site d'appel utilise la garde du module au lieu de réimplémenter instanceof + champ.

Définition du fini

  • vault.utils.ts expose isVaultNotFound et isVaultBadRequest ; tous les appels instanceof VaultError de la 404/400 les utilisent.
  • nexus.utils.ts expose isNexusNotFound ; tous les appels 404 de nexus-client l'utilisent.
  • gitlab.utils.ts expose isGitbeakerUnauthorized ; le contrôle 401 de gitlab-client l'utilise.
  • Les occurrences de registry.service et nexus.service sur la 404 Vault utilisent isVaultNotFound.
  • Tests unitaires sur les nouvelles gardes.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions