RSpec.configure и объект запроса - PullRequest
7 голосов
/ 02 сентября 2011

У меня есть приложение Rails 3.1, которое создается как RESTful API. План заключается в обработке аутентификации на основе ключа API, который передается на каждый запрос через HTTP-заголовок авторизации. Чтобы проверить это в RSpec, я хотел установить атрибут request.env["HTTP_AUTHORIZATION"] в блоке config.before:

RSpec.configure do |config|
  config.mock_with :rspec
  config.use_transactional_fixtures = true
  config.before(:each) do
    # Set API key in Authorization header
    request.env["HTTP_AUTHORIZATION"] = "6db13cc8-815f-42ce-aa9e-446556fe3d72"
  end
end

К сожалению, это вызывает исключение, потому что объект request не существует в блоке config.before.

Есть ли другой подход к настройке этого заголовка помимо включения это в блоке before каждого тестового файла контроллера?

1 Ответ

2 голосов
/ 02 сентября 2011

Я сам не пробовал, но, возможно, создание группы общих примеров поможет вам разобраться в вашей проблеме:

 shared_examples_for "All API Controllers" do
   before(:each) do
     request.env["HTTP_AUTHORIZATION"] = "blah"
   end

   # ... also here you can test common functionality of all your api controllers
   # like reaction on invalid authorization header or absence of header
 end

 describe OneOfAPIControllers do
   it_should_behave_like "All API Controllers"

   it "should do stuff" do
     ...
   end
 end
...