Skip to content

fix(shared): accept a private repository carrying a single credential - #2444

Merged
KepoParis merged 1 commit into
mainfrom
fix/repository-v2-private-credentials
Aug 7, 2026
Merged

fix(shared): accept a private repository carrying a single credential#2444
KepoParis merged 1 commit into
mainfrom
fix/repository-v2-private-credentials

Conversation

@KepoParis

@KepoParis KepoParis commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Issues liées

Issues numéro:


Quel est le comportement actuel ?

Depuis la migration des dépôts vers l'API v2, CreateRepositorySchema déclare
externalUserName et externalToken en .min(1) sur la branche isPrivate: true
de l'union discriminée : les deux credentials sont donc obligatoires.

L'API v1 (CreateRepoFormSchema), elle, n'a jamais exigé que l'un des deux — c'est
aussi ce que valide encore le formulaire client (RepoForm.vue). Créer un dépôt privé
avec un token seul (ou un nom d'utilisateur seul) passe la validation du front, puis
échoue côté serveur :

POST /api/v2/projects/:projectId/repositories400 Bad Request

{
  "formErrors": [],
  "fieldErrors": {
    "externalUserName": [
      "Si le dépôt est privé, vous devez renseigner au moins le nom d'utilisateur ou le token"
    ]
  }
}

Le message renvoyé contredit d'ailleurs la règle réellement appliquée. Deux tests e2e
échouent en CI sur ce 400 : Should add an external private repo (token seul) et
Should add an external private infra repo (nom d'utilisateur seul).

Quel est le nouveau comportement ?

Un dépôt privé n'exige plus qu'au moins un des deux credentials, comme en v1 :

  • externalUserName et externalToken passent à z.string().default('') ;
  • un .refine() porté par l'union impose la présence d'au moins l'un des deux.

Le type de sortie CreateRepository est inchangé (les deux champs restent des string
non optionnelles pour un dépôt privé), donc aucun impact sur le service ni sur le mapping
côté serveur.

Tests unitaires du schéma mis à jour en conséquence : token seul accepté, nom
d'utilisateur seul accepté, aucun credential rejeté, les deux vides rejetés.

Cette PR introduit-elle un breaking change ?

Non. La validation est assouplie : toutes les charges utiles acceptées auparavant le
restent. Aucun test e2e n'a été modifié — les deux tests qui échouaient passent désormais
sans changement.

Autres informations

Screenshot 2026-08-07 at 16 55 43

@KepoParis KepoParis self-assigned this Aug 7, 2026
@KepoParis KepoParis added the bug Something isn't working label Aug 7, 2026
@KepoParis KepoParis added this to the 9.24.0 milestone Aug 7, 2026
@KepoParis
KepoParis requested a review from a team August 7, 2026 15:15
@github-actions github-actions Bot added the built label Aug 7, 2026
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

@KepoParis
KepoParis added this pull request to the merge queue Aug 7, 2026
Merged via the queue into main with commit 15c1ffa Aug 7, 2026
61 of 63 checks passed
@KepoParis
KepoParis deleted the fix/repository-v2-private-credentials branch August 7, 2026 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working built

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants