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 plus de 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 décembre 2018
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 4bc3f0e1 (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

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 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}
#2

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

  • Assigné à mis à Benjamin Dauvergne
#3

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

#4

Mis à jour par Emmanuel Cazenave il y a environ 5 ans

Cool.
Un petit test pour aller avec le fix ?

#5

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

#6

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

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 environ 5 ans

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

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
#9

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
#10

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Solution déployée à Fermé

Formats disponibles : Atom PDF