2009-06-12 17 views
8

私はtwitter oauthを使って、twitter oauthをテストする方法を理解しようとすると、レンガの壁にぶつかるアプリケーションを開発しています。特に、CucumberやWebrat/Seleniumを使って機能をテストしようとすると、ユーザーがアプリケーションにoauthアクセスをしたかどうかなど、登録/ログオンプロセスの特定のステップは異なる動作をします。Ruby on RailsとTwitterのテスト戦略OAuth

Twitter OAuthシステムのRuby on Railsキュウリの機能(またはそれに関する他のテストフレームワーク)で、誰も成功したことはありませんか?どんな助けもありがとう。

答えて

3

私はTwitterの正確なレシピはありません(これまでは正確に行っていませんでした)。しかし、OAuthにはさまざまな可能なフローを記述した仕様があるので、それぞれのケースを列挙してみましょう。相互作用を自動化しようとします。ここに、あなたを導くために

は、関連する情報へのいくつかのポインタです:

通常のWebベースのためのフローが異なっています(あなたが見てきたように)私たちがユーザーはまだクライアントアプリケーションに許可を与えられていない場合、それがサービスプロバイダーでサービスプロバイダサイト

  • にリダイレクトされ

    • ユーザーがされたされています。erはクライアントアプリケーションに許可を与えられていませんまだログインしていない場合は、資格情報で認証する必要があります。
    • サービスプロバイダで一度認証されると、クライアントアプリケーション/サービス
    • への許可または拒否が必要になります。クライアントユーザーが既にそれは、サービスプロバイダにこれらのステップとアクセスユーザーのデータ/ APIをバイパスするアクセストークンを使用することができ、クライアント・アプリケーション/サービスを許可していたならば、
  • アクセストークンを取得することができ、サイト
3

私は私のテストケースでモックを使用。私は手動でテストし、どのような反応があるべきかを考え、ルビーoAuthの宝石を覆した。ここで成功したつぶやき用(Shouldaを使用して)一つのテストケースは次のとおりです。

context 'cork/tweet' do 
    setup do 
     response = Net::HTTPResponse.new("1.1", 200, "") 
     Net::HTTPResponse.any_instance.stubs(:body).returns JSON_RESPONSE 
     OAuth::AccessToken.any_instance.stubs(:post).returns(response) 
     post :create, :cork_id => @cork.id, :message=>MESSAGE  
    end 
    should_respond_with :redirect 
    should_change('Tweet.count' , :by => 1) {Tweet.count} 
    .. and so on 

JSON_RESPONSEは、私は私の手動テストから収集された答えは - 私はlibに/のOAuth /トークン/ access_token.rbでのprintfを置く:44:中レスポンスを捕捉するための `post '。

そうでなければ、テストすることはほとんど不可能だと指摘していますが、TwitterはAPIからのアプリケーションの認証を解除する方法がなく、既にアプリケーションを承認していれば別の方法で動作します。