Development #29060
Paramètre manquant sur le GET d'un endpoint non visible dans les logs
100%
Description
Faire un GET dans un endpoint en omettant un paramètre obligatoire dans la query string,
cliquer sur le log record concerné, on obtiens la capture d'écran ci-joint, pas d'info sur le paramètre oublié.
Dans passerelle/utils/jsonresponse.py::to_json.api
, il y a un extras = {'method': req.method, 'exception': repr(e)}
qui fait perdre l'information dont on aurait besoin :
ipdb> str(e) "missing parameters: 'end_time'." ipdb> repr(e) 'WrongParameter()'
Fichiers
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
En revanche la réponse est propre :
{"err_class": "passerelle.views.WrongParameter", "err_desc": "missing parameters: 'end_time'.", "data": null, "err": 1}
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch 0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Emmanuel Cazenave il y a environ 5 ans
Cool.
Un petit test pour aller avec le fix ?
Mis à jour par Frédéric Péters il y a environ 5 ans
import six
importer six depuis la copie intégrée à django, plutôt. (même si je vois que actesweb et atos_genesys ne le font pas).
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch 0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch ajouté
Pour le test j'ai fait dans la facilité (pas voulu trouver comment déclarer un modèle "dummyresource" juste pour mes tests, mais ce serait bien pour tester la plomberie, faudrait un passerelle.contrib.test.models).
Mis à jour par Emmanuel Cazenave il y a environ 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit 4bc3f0e1dd2ab9e3b36195086064f4f7d3a047e9.
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Statut changé de Solution déployée à Fermé
jsonresponse: use string conversion on exceptions (fixes #29060)
- introduce exception_to_text():
- first try to use unicode/str on exception
- then try to use repr,
- finally only render class name and e.args (if present)