3

これについては何も見つかりません。RSpec リクエスト テストで API キーを渡すにはどうすればよいですか?

API キーはヘッダーで送信されるため、Web では次のように渡します。

Header: Authorization
Value: Token token="c32a29a71ca5953180c0a60c7d68ed9e"

RSpecリクエストスペックでそれを渡すにはどうすればよいですか?

ありがとう!!

編集:

これが私の仕様です:

require 'spec_helper'

describe "sessions" do
  before do
    @program =FactoryGirl.create(:program)
    @user = FactoryGirl.create(:user)
    FactoryGirl.create(:api_key)
  end
  it "is authenticated with a token" do
    put "/api/v1/users/#{@user.id}?user_email=#{@user.email}&auth_token=#{@user.authentication_token}", {user: {name: "New Name"}}, { 'Authorization' => "Token token='MyString'" }
    response.status.should be(201)
  end

  it "fails without an API Token" do
    put "/api/v1/users/#{@user.id}?user_email=#{@user.email}&auth_token=#{@user.authentication_token}", user: {name: "New Name"}
    response.status.should be(401)
  end
end
4

1 に答える 1

5

だから私はとても親しかった。実際の API 呼び出しの出力をログに記録して、サーバーが HTTP ヘッダーに期待していた正確な形式を確認する必要がありました。それで、問題はフォーマットが少しずれていたということでした。

describe "sessions" do
  before do
    @user = FactoryGirl.create(:user)
    @api_key = FactoryGirl.create(:api_key)
  end

  it "is authenticated with a token" do
    put "/api/v1/users/#{@user.id}?user_email=#{@user.email}&auth_token=#{@user.authentication_token}", {user: {name: "New Name"}}, { "HTTP_AUTHORIZATION"=>"Token token=\"#{@api_key.access_token}\"" }
    response.status.should be(201)
  end
end

ご覧のとおり、フォーマットを : から に変更する必要がありまし{ 'Authorization' => "Token token='MyString'" }{ "HTTP_AUTHORIZATION"=>"Token token=\"#{@api_key.access_token}\"" }

'MyString'また、API トークンの実際のインスタンスへのより堅牢な参照に置き換えました。@api_key.access_token

于 2013-12-10T16:02:13.073 に答える