1

私の統合テストは次のようになります。

class OAuthTest < ActionDispatch::IntegrationTest
  ...

  @client = OAuth2::Client.new(                                                
    client_id,                                              
    client_secret,                                          
    { :site => 'https://provider', :token_url => '/oauth/access_token' }
  )                                                                            

  @client.connection.build do |b|                                              
    b.adapter :action_dispatch, self
  end                                                                          

  access_token = @client.auth_code.get_token(...)
  access_token.get("/user.json")

Faraday 0.7.6 では問題なく動作し、action_dispatchアダプターは http 要求を Rails アプリにルーティングします ( users_controller. しかし、Faraday 0.8.0 では、アダプターが( https://github.com/technoweenie/faraday/pull/134action_dispatchを参照)に置き換えられたため、動作させることができません。rack

上記のコードを次のように変更する必要があると思います。

@client.connection.build do |b|      
  b.adapter :rack, self.app          
end                                  

しかし、Rack (1.2.5) では Stream を期待して失敗しますが、Hash を取得し、undefined read method for Hash149 行目 (ここ: https://github.com/rack/rack/blob/1.2.5/lib/rack/request .rb#L149 )。

どうすればこれを機能させることができますか?

4

2 に答える 2

5

You will need to add the middleware url_encoded to make this work;

@oauth = OAuth2::Client.new('client_id', 'client_secret') do |b|
  b.request :url_encoded
  b.adapter :rack, Rails.application
end
于 2012-07-11T09:07:16.283 に答える
1

appテスト スイートから、変数を介して直接ラック アプリにアクセスできます。コードは次のようになります。

@client.connection.build do |b|      
  b.adapter :rack, app
end

サンプルアプリでこれを試してみましたが、うまくいきました。幸運を!

于 2012-04-26T17:33:13.743 に答える