Da mich die „Fehlersuche“ insgesamt 2 Tage beschäftigt hat und ich langsam glaube, dass ich für das Testen der ginkgo API insgesamt mehr Zeit gebraucht habe, als für die Implementierung, möchte ich zumindest eine Erkenntnis in die Welt streuen ;-) .
Während es in Cucumber-Tests sehr einfach ist einen authentifizierten OAuth2 HTTP-Request hinzubekommen (einfach nur den Authentication-Header setzen), gestaltet sich das in RSpec-Test schwerer. Das ist auch klar, weil viele helfende Komponenten von Rails richtigerweise nicht zum Einsatz kommen, um wirklich nur die aktuell betrachtete Komponente zu testen.
Um es kurz zu machen, für einen authentifizierten OAuth2 Request in RSpec-Tests benötigt das request-Objekt die beiden Parameter oauth.strategies und token. Also z.B. :
def prepare_authenticated_access_token_request
# Create a valid, authorized access token
token = Oauth2Token.create :user => @resource_owner, :client_application => @client_application
# Configure the request object so that it is recognized as a OAuth request
request.env[„oauth.strategies“] = [:oauth20_token, :token]
request.env[„oauth.token“] = token
end
Für alle, die OAuth1-Requests erstellen wollen, sei auf configure_oauth eines TestRequests hingewiesen:
ActionController::TestRequest.use_oauth=true
request.configure_oauth(@resource_owner,token)