RSpec Demande - Comment mettre en http en-tête d'autorisation pour toutes les demandes
Je suis en utilisant rspec demande de tester une API JSON qui nécessite une api-clés dans l'en-tête de chaque demande.
Je sais que je peux le faire:
get "/v1/users/janedoe.json", {}, { 'HTTP_AUTHORIZATION'=>"Token token=\"mytoken\"" }
Mais il est fastidieux de le faire pour chaque demande.
J'ai essayé de réglage request.env
dans la avant le bloc, mais j'ai l' no method NilClass error
puisque la demande n'existe pas.
J'ai besoin d'une certaine manière, peut-être dans le spec-helper
, dans le monde entier et obtenir cet en-tête envoyé à toutes les demandes.
OriginalL'auteur Buzz | 2012-10-06
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous devriez dépendent de l'en-tête si vous n'êtes pas tester l'en-tête lui-même, vous devriez talon la méthode qui vérifie si le HTTP_AUTORIZATION est présent et il vrai pour toutes les spécifications à l'exception de la spec que les tests d'en-tête particulier
quelque chose comme...
sur le contrôleur de
sur la spec
de cette manière, on peut oublier le jeton et de tester ce que vous voulez vraiment tester
OriginalL'auteur arieljuod
De le mettre dans une avant de crochet que vous ayez besoin d'y accéder comme
Moi aussi, je détestais le géant de hachage, mais a préféré être explicite en autorisant l'utilisateur dans les différentes étapes. Après tout, c'est une jolie critique de la partie, et . Donc ma solution a été:
alors je peux l'utiliser comme
Je trouve cela très utile pour tester les différents niveaux d'autorisation. Vous pouvez également demander l'aide de la méthode des spécifications de l'autoriser fonction et obtenir le même résultat, comme
Cependant, pour un maximum de vitesse et de contrôle, vous pouvez les combiner
et ensuite autoriser des blocs entiers avec
OriginalL'auteur cadlac
C'est une autre façon de le faire si vous faites un post.
Note interaction_params est juste un objet json je suis passant à.
OriginalL'auteur Ryan-Neal Mes
Je sais que cette question a déjà été répondu, mais voici mon prendre sur elle. Quelque chose qui a fonctionné pour moi:
au lieu de:
OriginalL'auteur Dylan