Я пытаюсь установить заголовок для некоторых запросов 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
пример запроса spec, который использует этот помощник и должен работать, но всегда терпит неудачу, потому что заголовок никогда не устанавливается:
# 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. Представьте, что вам нужно изменить каждый тест, если имя заголовка слегка изменилось.