7
私はrails 4を使ってrails APIを開発しています。テストしたいと思います。それを行うために、私はRspecフレームワークを使用しています。Railsの承認手続き
私のAPIは、このように呼ばれている認証方式があります。
class UsersController < ApplicationController
# Token authentication
before_action :set_user, except: [:index, :create]
before_action :authenticate, except: [:index, :create]
before_action :authenticate_admin, only: [:index, :create]
...
end
その後、私は私がUserController RSpecのを持っている:私は、テストを実行すると
describe UsersController do
render_views
describe "GET /users" do
it "gets all users" do
@request.env["AUTHORIZATION"] = "Token token=xxxxxxxxx"
@request.env["HTTP_ACCEPT"] = "application/json"
@request.env["CONTENT_TYPE"] = "application/json"
get :index
response.status.should be(200)
end
end
end
、それはいつも同じことを私に与えます:
UsersController GET /users getting all users
Failure/Error: response.status.should be(200)
expected #<Fixnum:401> => 200
got #<Fixnum:803> => 401
...
私はauthenticate_or_request_with_http_tokenメソッドを使用してheadeからトークンを取得しますrs。
before_actionメソッドをスキップする方法を見つけたり、認証ヘッダーを正しく設定するのに役立つ人がいたら、私は非常に感謝しています。
ありがとうございました!
あなたのトークン認証と思われる認証方法を確認する必要があります。あるいは、あなたはdeviseなどを使っていますか?一つのことを確認する:あなたはやっていないように見える:インデックスで認証する(あなたがテストしているもの)。 –
コメントありがとうJesse。私はコードをコピーしましたが、インデックスの認証メソッドをコピーするのを忘れていました: before_action:authenticate_admin、only:[:index、:create] authenticate_or_request_with_http_tokenを使って認証します。 ありがとうございます。 – jmolina
私はまだあなたの認証方法を見る必要があります。それはトークンを取得し、あなたのcurrent_userのための検索を実行するでしょうか?さらに、スペック設定中にトークンを使用してユーザーを作成していますか? –