Ich entwickle eine Rails API, mit Rails 4, und ich möchte es testen. Um es zu tun, verwende ich Rspec-Framework.Rspec Authorization in Rails
Meine API hat eine authenticate Methode, die wie folgt aufgerufen:
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
Dann habe ich meine Userscontroller 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
Wenn ich den Test durchführen, es gibt mir immer das gleiche:
UsersController GET /users getting all users
Failure/Error: response.status.should be(200)
expected #<Fixnum:401> => 200
got #<Fixnum:803> => 401
...
ich benutze authenticate_or_request_with_http_token Methode von heade Token zu erhalten rs.
Wenn mir jemand helfen kann, die Methode zu finden, um die Methode before_action zu überspringen oder den Header Authentifizierung richtig zu setzen, bin ich sehr dankbar.
Vielen Dank!
Wir müssen die Authentifizierungsmethode sehen, die ich annimmt, tut Ihre Token-Authentifizierung. Oder verwenden Sie vielleicht Gerät oder ähnliches? Eine Sache zu überprüfen: Sie scheinen nicht zu tun: authentifizieren auf Index (was Sie testen). –
Danke für den Kommentar Jesse. Ich habe Code kopiert, aber ich habe vergessen, die Authentifizierungsmethode für den Index zu kopieren: before_action: authenticate_admin, nur: [: index,: create] Ich benutze authenticate_or_request_with_http_token zur Authentifizierung. Danke. – jmolina
Ich muss immer noch Ihre Authentifizierungsmethode sehen. Es wird das Token nehmen und einen Fund für deinen current_user ausführen, oder? Erstellen Sie außerdem einen Benutzer mit Ihrem Token während eines Spezifikations-Setups? –