Установить заголовок в запросе RSpec 3
Я пытаюсь установить заголовок для некоторых запросов RSpec, которые требуют аутентификации. ЗаголовокACCESS_TOKEN
, Независимо от того, как я пытаюсь установить заголовок, он никогда не устанавливается. Я знаю, что приложение работает, потому что я могу проверить его вручную, я просто не могу заставить работать тесты rspec. Смотрите полный исходный код и тесты для этой проблемы здесь:https://github.com/lightswitch05/rspec-set-header-example
Поскольку аутентификация используется в большинстве моих спецификаций запросов, я создал вспомогательный вспомогательный модуль для извлечения токена доступа и установки его в заголовок. Ниже приводится краткое описание того, как я пытаюсь установить заголовок, посмотрите все, что я пробовал вполный источник
# my_app/spec/support/session_helper.rb
module SessionHelper
def retrieve_access_token
post api_v1_session_path({email: '[email protected]', password: 'poor_password'})
expect(response.response_code).to eq 201
expect(response.body).to match(/"access_token":".{20}"/)
parsed = JSON(response.body)
token = parsed['access_token']['access_token']
@request.headers['HTTP_ACCESS_TOKEN'] = token
end
end
пример спецификации запроса, который использует этот помощник и должен работать, но всегда терпит неудачу, потому что заголовок никогда не устанавливается:
# my_app/spec/requests/posts_spec.rb
# ...
context "create" do
it "creates a post" do
retrieve_access_token
post = FactoryGirl.build(:post)
post api_v1_posts_path(
post: {
title: post.title,
content: post.content
}
)
expect(response.body).to include('"id":')
expect(response.body).to include('"title":"' + post.title + '"')
expect(response.body).to include('"content":"' + post.content + '"')
expect(response.response_code).to eq 201
end
end
Я знаю, я могу вручную установить заголовок в отдельныхget
а такжеpost
запросы - но это не поддерживаемое решение для авторизации всего API. Представьте, что нужно менять каждый тест, если имя заголовка изменилось незначительно.