Project

General

Profile

Development #29060

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

Added by Emmanuel Cazenave 6 months ago. Updated 2 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
14 Dec 2018
Due date:
% Done:

100%

Patch proposed:
Yes
Planning:
No

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 View (4.69 KB) Emmanuel Cazenave, 14 Dec 2018 11:48 AM

0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch View (1.88 KB) Benjamin Dauvergne, 12 Jan 2019 01:51 PM

0001-jsonresponse-use-string-conversion-on-exceptions-fix.patch View (2.82 KB) Benjamin Dauvergne, 14 Jan 2019 09:57 AM

30130

Associated revisions

Revision 4bc3f0e1 (diff)
Added by Benjamin Dauvergne 5 months ago

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)

History

#1 Updated by Emmanuel Cazenave 6 months ago

En revanche la réponse est propre :

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

#2 Updated by Benjamin Dauvergne 5 months ago

  • Assignee set to Benjamin Dauvergne

#3 Updated by Benjamin Dauvergne 5 months ago

#4 Updated by Emmanuel Cazenave 5 months ago

Cool.
Un petit test pour aller avec le fix ?

#5 Updated by Frédéric Péters 5 months ago

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 Updated by Benjamin Dauvergne 5 months ago

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 Updated by Emmanuel Cazenave 5 months ago

  • Status changed from Solution proposée to Solution validée

#8 Updated by Benjamin Dauvergne 5 months ago

  • Status changed from Solution validée to Résolu (à déployer)
  • % Done changed from 0 to 100

#9 Updated by Frédéric Péters 5 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

#10 Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution déployée to Fermé

Also available in: Atom PDF