ci: docker_tag=ext fix(back): map JSON parse errors to 400; bump 1.0.2; docs/tests updated
All checks were successful
build-and-push-ext / build_push (push) Successful in 24s

This commit is contained in:
dev4 2025-09-18 21:55:24 +00:00
parent 78b920a18b
commit bd042533b2
5 changed files with 45 additions and 1 deletions

View File

@ -3,3 +3,14 @@
- IdNot: lendpoint dauthentification accepte désormais le code en POST `/api/v1/idnot/auth` avec `{ code }` dans le corps.
- Handler compatible params/body, recommandation: body JSON.
- Rappel déploiement: image Docker consommée par `lecoffre_node` via tag `ext`.
## v1.0.2
- Erreurs de parsing JSON (body-parser) désormais mappées en 400 au lieu de 500 via `error-handler`.
- Clarification des statuts attendus:
- 400: JSON invalide ou code d'auth invalide
- 401: non autorisé (ex: email manquant)
- 403: utilisateur non rattaché à une étude
- 5xx: erreurs internes ou partenaires (non applicatives)
- Documentation et tests mis à jour pour couvrir “JSON invalide -> 400”.
- CI: utiliser `ci: docker_tag=ext` pour builder/pusher limage.

View File

@ -28,6 +28,14 @@ Analyse synthétique de `lecoffre-back-mini` (Express + TypeScript).
- Lendpoint dauthentification accepte désormais le code en POST corps JSON sur `/api/v1/idnot/auth` (au lieu dun segment dURL).
- Le handler supporte à la fois `req.params.code` et `req.body.code` pour compatibilité, mais lusage recommandé est `req.body.code`.
### Gestion des erreurs HTTP
- `400`:
- JSON invalide (erreur de parsing du corps) → mappé explicitement par `errorHandler`
- Code dautorisation IdNot invalide (ValidationError)
- `401`: non autorisé (ex: email manquant)
- `403`: utilisateur non rattaché à une étude (ForbiddenError)
- `5xx`: erreurs internes ou partenaires (ExternalServiceError)
### Dépendances clés
- **HTTP**: `express`, `cors`
- **Infra**: `pg`, `dotenv`

View File

@ -1,6 +1,6 @@
{
"name": "lecoffre-back-mini",
"version": "1.0.1",
"version": "1.0.2",
"description": "Mini serveur avec une route /api/ping",
"main": "dist/server.js",
"scripts": {

View File

@ -78,6 +78,30 @@ export const errorHandler = (
return;
}
// Handle JSON parsing errors (body-parser SyntaxError)
if (
error.name === 'SyntaxError' ||
(typeof (error as any)?.type === 'string' && (error as any).type === 'entity.parse.failed')
) {
const appError = new AppError(
ErrorCode.VALIDATION_ERROR,
'JSON invalide',
400,
true,
undefined,
requestId
);
Logger.error('JSON parse error', {
requestId,
originalError: (error as any)?.message,
stack: (error as any)?.stack
});
res.status(400).json(appError.toJSON());
return;
}
// Handle database errors
if (error.message?.includes('database') || error.message?.includes('connection')) {
const appError = new AppError(

View File

@ -17,4 +17,5 @@ Axes de tests pour `lecoffre-back-mini` (sans exemples dimplémentation).
### Auth IdNot
- Vérifier POST `/api/v1/idnot/auth` avec un code long dans le corps JSON (`{ code }`) retourne un statut applicatif (4xx/5xx) mais pas 502.
- Vérifier quun corps JSON invalide (ex: JSON mal formé) renvoie `400`.
- Vérifier quun GET/POST avec segment dURL trop long nest plus utilisé par le front.