Авторизация 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"]. 

кроме того, я получал неправильный токен от пользователя, который не был создан в моей тестовой среде.

:)