loopbackio / loopbackio/loopback-next

ajv request body validation regression following an upgrade to @loopback/rest 15.0.3

Ouverte
#11,096 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
TypeScript
Étoiles
5.1k
Forks
1.1k
Merge moyen
2 j 21 h
PR mergées (30 j)
27

Description

Describe the bug

Since after upgrading to @loopback/rest 15.0.3 , ajv request body validation fail when the schema contain the "discriminator" key word.

Logs
equest POST /accounts/7342217301273/actions failed with status code 500. Error: strict mode: unknown keyword: "discriminator"
    at checkStrictMode (/home/fidgi/my-app/node_modules/ajv/lib/compile/util.ts:211:28)
    at checkUnknownRules (/home/fidgi/my-app/node_modules/ajv/lib/compile/util.ts:27:22)
    at checkKeywords (/home/fidgi/my-app/node_modules/ajv/lib/compile/validate/index.ts:153:20)
    at validateFunctionCode (/home/fidgi/my-app/node_modules/ajv/lib/compile/validate/index.ts:40:5)
    at Ajv.compileSchema (/home/fidgi/my-app/node_modules/ajv/lib/compile/index.ts:163:25)
    at Ajv._compileSchemaEnv (/home/fidgi/my-app/node_modules/ajv/lib/core.ts:737:24)
    at Ajv.compile (/home/fidgi/my-app/node_modules/ajv/lib/core.ts:389:34)
    at createValidator (/home/fidgi/my-app/node_modules/@loopback/rest/src/validation/request-body.validator.ts:236:18)
    at validateValueAgainstSchema (/home/fidgi/my-app/node_modules/@loopback/rest/src/validation/request-body.validator.ts:153:16)
    at validateRequestBody (/home/fidgi/my-app/node_modules/@loopback/rest/src/validation/request-body.validator.ts:76:9)
    at buildOperationArguments (/home/fidgi/my-app/node_modules/@loopback/rest/src/parser.ts:92:28)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async MySequence.handle (/home/fidgi/my-app/src/sequence.ts:51:20)
    at async HttpHandler._handleRequest (/home/fidgi/my-app/node_modules/@loopback/rest/src/http-handler.ts:115:5)
Additional information

This seems to be related to this commit

Reproduction

n/a

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le commit lié et le flux de validation dans @loopback/rest/src/validation/request-body.validator.ts, en particulier createValidator et validateValueAgainstSchema. Reproduisez l’échec du schéma de request-body avec le mot-clé discriminator, puis vérifiez que la validation ne le rejette plus une fois la régression corrigée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
api, backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.