2011-09-01 38 views
7

Tôi có ứng dụng Rails 3.1 đang được xây dựng dưới dạng API RESTful. Kế hoạch là xử lý xác thực dựa trên khóa API được chuyển cho mỗi yêu cầu thông qua tiêu đề HTTP ủy quyền. Để kiểm tra điều này trong RSpec, tôi muốn thiết lập các thuộc tính request.env["HTTP_AUTHORIZATION"] trong khối config.before:RSpec.configure và đối tượng yêu cầu

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 

Thật không may, điều này ném một ngoại lệ vì đối tượng request không tồn tại trong khối config.before.

Có phương pháp nào khác để đặt tiêu đề này bên ngoài bao gồm nó trong khối before của mỗi tệp kiểm tra bộ điều khiển không?

Trả lời

2

Tôi đã không thử nó bản thân mình nhưng ví dụ có thể tạo chia sẻ nhóm có thể giúp bạn để sắp xếp ra vấn đề của bạn:

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 
Các vấn đề liên quan