Ich habe zwei RSpec-Tests, eine Controller-Spezifikation und eine Anforderungsspezifikation, wo ich eine GET-Anfrage an die Index-Aktion desselben Controllers mache. In beiden Spezifikationen sende ich einen Authorization-Header, der ein Oauth2-Bearer-Token enthält.
Das Problem, das ich habe, ist, dass der Header je nach Art der Spezifikation in einer anderen Eigenschaft des Anfrageobjekts gespeichert wird. Im Fall der Anforderungsspezifikation ist sie verfügbar unter request.env["Authorization"]
und im Fall der Controller-Spezifikation ist sie unter request.session["Authorization"]
verfügbar.
Warum wird "Authorization" an verschiedenen Orten für verschiedene Arten von Spezifikationen gespeichert? Gibt es irgendwo ich finde es für beide Spezifikationen?
Diese bearer_token
-Methode ist in der Eltern-Controller-Klasse, wo ich das Token aus der Kopfzeile ergreife:
Funktioniert mit env
in den Anforderungsspezifikationen:
Funktioniert mit session
in den Controller-Spezifikationen:
Hier ist meine Anfrage:
%Vor%Hier ist meine Controller-Spezifikation
%Vor% Ich nahm an, dass die API für die Methode get
zwischen einer Anfrage und einer Controller-Spezifikation identisch wäre. In der Controller-Spezifikation ist das dritte Argument ein Hash der Sitzungsvariablen, keine Header-Variablen. Sie können die Header direkt auf das @request
-Objekt wie folgt setzen:
Dann ist der richtige Weg, um den Autorisierungsheader zu bekommen:
%Vor%Tags und Links ruby-on-rails-3 ruby-on-rails rspec