Projet

Général

Profil

Development #29060

Paramètre manquant sur le GET d'un endpoint non visible dans les logs

Ajouté par Emmanuel Cazenave il y a 3 mois. Mis à jour il y a 2 mois.

Statut:
Solution déployée
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 déc. 2018
Echéance:
% réalisé:

100%

Patch proposed:
Oui

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()'

Screenshot-2018-12-14 Passerelle.png Voir (4,69 ko) Emmanuel Cazenave, 14 déc. 2018 11:48

0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch Voir (1,88 ko) Benjamin Dauvergne, 12 jan. 2019 13:51

0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch Voir (2,82 ko) Benjamin Dauvergne, 14 jan. 2019 09:57

30130

Révisions associées

Révision 4bc3f0e1 (diff)
Ajouté par Benjamin Dauvergne il y a 2 mois

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)

Historique

#1 Mis à jour par Emmanuel Cazenave il y a 3 mois

En revanche la réponse est propre :

{"err_class": "passerelle.views.WrongParameter", "err_desc": "missing parameters: 'end_time'.", "data": null, "err": 1}

#2 Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Assigné à mis à Benjamin Dauvergne

#3 Mis à jour par Benjamin Dauvergne il y a 2 mois

#4 Mis à jour par Emmanuel Cazenave il y a 2 mois

Cool.
Un petit test pour aller avec le fix ?

#5 Mis à jour par Frédéric Péters il y a 2 mois

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).

#6 Mis à jour par Benjamin Dauvergne il y a 2 mois

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).

#7 Mis à jour par Emmanuel Cazenave il y a 2 mois

  • Statut changé de Solution proposée à Solution validée

#8 Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Statut changé de Solution validée à Résolu (à déployer)
  • % réalisé changé de 0 à 100

#9 Mis à jour par Frédéric Péters il y a 2 mois

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF