簡體   English   中英

Rails功能測試和OAuth參數問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM