2011-09-01 11 views
7

Rails APIとしてビルドされているRails 3.1アプリケーションがあります。この計画では、承認HTTPヘッダーを介して各要求に渡されるAPIキーに基づいて認証を処理する予定です。 RSpecの中でこれをテストするために、私はconfig.beforeブロックにrequest.env["HTTP_AUTHORIZATION"]属性を設定したい:requestオブジェクトがconfig.beforeブロックに存在しないためRSpec.configureとリクエストオブジェクト

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 

は残念ながら、これは例外をスローします。

をこのコントローラの各テストファイルのbeforeブロックに含める以外の方法でこのヘッダーを設定する方法はありますか?

答えて

2

私はそれを自分自身を試していないが、おそらく共有の例のグループを作成すると、あなたはあなたの問題を整理するのに役立つ可能性があり:

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 
関連する問題