İstek başlıklarında istekte bulunmadan önce istek başlıklarını nasıl ayarlayabilirim?İstek özelliklerinde isteklerinize göre detaylandırılır Özellikler
Rails kullanarak API'mda özellik istemek için denetleyici özelliklerine geçiyorum. Sıkıştığım bir şey, isteklere izin vermek için request
nesnesine erişimim olmamasıdır.
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
Bu güvenle yapabilirsiniz denetleyici özellikleri üzerinde çalışıyor: Benim denetleyicisi özellikleri üzerinde
, ben belirli bir kullanıcıyı imzalar benim yarattığım bir yöntem erişebilir
before { sign_in(user) }
it { post :endpoint, params }
Ama Bir istek belirtildiğinde, request
nesnesi mevcut değildir. Ben denerseniz :
before { sign_in(user) }
it { post "/api/endpoint", params }
Ben nil
olarak benim yardımcı yöntemine request
olsun.
Yapabileceğim biliyorum:
it { post "/api/endpoint", {"HTTP_AUTHORIZATION" => ... } }
Ama bu özel bir kontrolör spec kıyasla spec içinde karmakarışık bir sürü gibi görünüyor.
ActionDispatch::TestRequest::DEFAULT_ENV
kullanımını this answer tarafından önerilen şekilde denedim, ancak işe yaramadı (401
aldım).
Harika, teşekkürler! –
Bu, rspec belgelerinde herhangi bir yerde belirtilmiş midir? –