Come posso impostare le intestazioni di richiesta prima di fare la richiesta su una specifica di richiesta?Accesso all'oggetto di richiesta nelle specifiche di richiesta
Sto spostando le specifiche del controller per richiedere le specifiche sulla mia API utilizzando Rails. Una cosa su cui sono bloccato è che non ho accesso a un oggetto request
per consentire le richieste.
Il mio specifiche del controller, ho accesso a un metodo che ho creato, che firma un utente specifico:
def sign_in(user)
token = user.api_keys.first.token
# note the request object being used in the next line
request.env["HTTP_AUTHORIZATION"] = ActionController::HttpAuthentication::Token.encode_credentials(token)
end
Questo funziona bene su specifiche del controller, posso tranquillamente fare:
before { sign_in(user) }
it { post :endpoint, params }
Ma su una specifica della richiesta, l'oggetto request
non è disponibile. Se provo a:
before { sign_in(user) }
it { post "/api/endpoint", params }
ottengo request
sul mio metodo di supporto come nil
.
So che potrei fare:
it { post "/api/endpoint", {"HTTP_AUTHORIZATION" => ... } }
ma questo sembra un sacco di confusione nelle specifiche, specialmente rispetto ad una specifica di controllo.
Ho provato a utilizzare ActionDispatch::TestRequest::DEFAULT_ENV
come suggerito da this answer, ma non ha funzionato troppo (ho ottenuto un 401
).
Grande, grazie! –
Questo è specificato nella documentazione di rspec dovunque? –