我正在嘗試在Rails中爲RSpec get
JSON API測試添加授權令牌。但到目前爲止,所有嘗試都會導致錯誤。問題似乎是令牌沒有在請求中正確傳遞。如何在RSpec測試中爲JSON API傳遞身份驗證令牌?
expected the response to have a success status code (2xx) but it was 401
當前代碼:
Project_spec.rb(測試)
before do
@project = create(:project, :key => "123")
get '/api/v1/projects/1', {:Authorization => "Token 123"}, format: :json
end
it "returns correct status" do
expect(response).to have_http_status(:success)
end
ProjectsController.rb
before_filter :restrict_access, :except => :create
def show
@project = Project.find(params[:id])
render json: @project
end
def restrict_access
authenticate_or_request_with_http_token do |token, options|
Project.exists?(key: token)
end
end
基於幾個推薦的解決方案在網上找到的,我我試過
get '/api/v1/projects/1', format: :json, token: "123"
get '/api/v1/projects/1', { 'HTTP-AUTHORIZATION' => 'Token "123"' }, format: :json
get '/api/v1/projects/1', {:Authorization => "Token 123"}, format: :json
但似乎沒有成功通過授權令牌。
注意:#3中的樣式在從外部應用程序發佈時工作,但不在RSpec測試本身中。
有沒有人有這方面的經驗,可以分享一些方向?
什麼是空的則params的目的是什麼? –
如果你忽略它,那麼'{Authorization:「Token 123」}'識別爲參數而不是頭部。 –