Авторизация Rspec в Rails
Я разрабатываю Rails API, используя rails 4, и я хочу его протестировать. Для этого я использую RSpec framework.
мой 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
тогда у меня есть мой 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
когда я выполняю тест, он дает мне всегда одно и то же:
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 для получения токена из заголовков.
Если кто может помочь мне найти метод пропустить метод before_action или правильно установить заголовок аутентификации я буду очень благодарен.
спасибо!
1 ответов
Я, наконец, решить эту проблему.
ошибка была в том, что:
request.env["AUTHORIZATION"]
должно быть
request.env["HTTP_AUTHORIZATION"].
кроме того, я получал неправильный токен от пользователя, который не был создан в моей тестовой среде.
:)