2015-06-02 147 views
0

我在Rails上構建了一個REST API,我試圖使用RSpec來測試它。我使用的是相當樣板授權碼:使用RSpec測試Rails REST API

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方法,正如我在一些示例中所見:

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