[英]Rails Functional Tests and OAuth Parameter problem
我一直在努力解決在Rails功能測試中使用OAuth簽名請求的問題。
我將不勝感激,或者希望您能找到一些可行的例子。
我正在嘗試使用oauth gem(0.4.5)中的內置ActionController :: TestRequest重寫。
我已經嘗試過這種解決方案,但無濟於事: http : //d.hatena.ne.jp/falkenhagen/20091110/1257830144
這就是我現在正在做的...
require 'oauth/client/action_controller_request'
我創建了一種用於登錄的方法,可以將我的OauthConsumer對象(ActiveRecord)和URL參數(用於查詢字符串)傳遞給該方法。
def _do_oauth(consumer, params = {})
c=OAuth::Consumer.new(consumer.consumer_key, consumer.consumer_secret)
t=OAuth::AccessToken.new(c)
ActionController::TestRequest.use_oauth=true
@request.configure_oauth(c, t, params)
end
並在我的測試案例中這樣稱呼它:
params = { :store => 'foo' }
_do_oauth(oauth_consumers(:one), params) # currently not working for passing params
get :index, { :format => :json }.merge(params)
但是看起來請求似乎沒有接受“參數”或正確編碼。
我得到的錯誤是(發生在上面的“ get”行上):
ArgumentError: comparison of Array with Array failed
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/helper.rb:37:in `sort'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/helper.rb:37:in `normalize'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/request_proxy/base.rb:98:in `normalized_parameters'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/request_proxy/base.rb:113:in `signature_base_string'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/signature/base.rb:77:in `signature_base_string'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/signature/hmac/base.rb:12:in `digest'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/signature/base.rb:65:in `signature'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/signature.rb:23:in `sign'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/client/helper.rb:45:in `signature'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/client/helper.rb:75:in `header'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/client/action_controller_request.rb:54:in `set_oauth_header'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/client/action_controller_request.rb:50:in `apply_oauth!'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/oauth-0.4.5/lib/oauth/client/action_controller_request.rb:14:in `process_with_new_base_test'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.7/lib/action_controller/test_case.rb:412:in `process'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.7/lib/action_controller/test_case.rb:47:in `process'
/home/sp/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.7/lib/action_controller/test_case.rb:350:in `get'
test/functional/deals_controller_test.rb:56:in `block in <class:DealsControllerTest>'
我假設這與查詢參數未正確編碼或標題格式不正確有關。 任何幫助(甚至是確實有用的示例的指針)將不勝感激。
我還應該指出,我要測試的應用是2條腿的OAuth提供程序。 因此,該應用只是解析簽名並檢查消費者密鑰/秘密簽出。
目前,這可能無法解決最初的問題,但可以節省一些時間。
問題是,如果散列包含符號和字符串鍵的混合,則散列的排序方法會出錯。 Oauth將一些由字符串鍵入的條目添加到params哈希中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.