2015-06-02 4 views
0

Я строю REST API на Rails, и я пытаюсь использовать RSpec для его проверки. Я использую довольно шаблонный код аутентификации:Тестирование Rails API REST с RSpec

def authenticate_user_from_token 
    pp 'authenticate_user_from_token' 
    pp request.headers.inspect 
    user = authenticate_with_http_token do |token, options| 
     pp token 
     user_id = options[:user_id] 
     user = user_id && Eater.find_by_id(user_id) 

     if user && Devise.secure_compare(user.auth_token, token) 
     user 
     else 
     nil 
     end 
    end 

    @current_user = user 
    end 

Это отлично работает, если я посылаю запросы с завитком, но я не могу понять, как передать маркер аутентификации в Rspec. Мой основной запрос заключается в следующем:

get '/api/1/users/1' 

Я попытался установить маркер, используя метод заголовка:

header 'Authorization: Token token', @token 

Это не работает. Я также попытался передать его методу получения, как я видел в некоторых примерах:

get '/api/1/users/1', :authorization => @token 

Также не работает. Каков правильный способ сделать это?

+0

Это спецификация контроллера или спецификация запроса? –

+0

Запрос. Я пытаюсь проверить API, используя его как клиент. –

ответ

1

от параметров HTTP являются третий аргумент get, так что вам нужно сделать что-то вроде:

get '/api/1/users/1', nil, {'Authorization' => @token}

В зависимости от ограничений на ключ, вы можете уйти с:

get '/api/1/users/1', nil, authorization: @token

Смежные вопросы