Доступ к объекту запроса в спецификации запроса
Как я могу установить заголовки запроса перед выполнением запроса по спецификации запроса?
Я перемещаю спецификации контроллера, чтобы запросить спецификации моего API с помощью Rails. Я застрял в том, что у меня нет доступа кrequest
объект для разрешения запросов.
В моих спецификациях контроллера у меня есть доступ к методу, который я создал, который подписывает определенного пользователя:
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
Это прекрасно работает на спецификации контроллера, я могу безопасно сделать:
before { sign_in(user) }
it { post :endpoint, params }
Но по запросу спецификацииrequest
объект недоступен Если я попытаюсь:
before { sign_in(user) }
it { post "/api/endpoint", params }
я получилrequest
на мой вспомогательный метод какnil
.
Я знаю, что мог сделать:
it { post "/api/endpoint", {"HTTP_AUTHORIZATION" => ... } }
Но это похоже на хаос в спецификации, особенно по сравнению со спецификацией контроллера.
Я пытался использоватьActionDispatch::TestRequest::DEFAULT_ENV
как предложеноэтот ответ, но это тоже не сработало (я получаю401
).