8

Twitter oauth を利用するアプリケーションを開発していて、twitter oauth をテストする方法を見つけようとしてレンガの壁にぶつかりました。特に Cucumber と Webrat/Selenium を使用して機能をテストしようとしています。登録/ログオン プロセスの特定の手順は、ユーザーがアプリへの oauth アクセスを許可しているかどうかによって、動作が異なります。

Ruby on Rails Cucumber 機能 (またはその他のテスト フレームワーク) で Twitter OAuth システムの一部またはすべてをモックまたはスタブ化することに成功した人はいますか? どんな助けでも大歓迎です。

4

3 に答える 3

3

テストケースでモックを使用しました。私は手動でテストし、応答がどうあるべきかを理解し、ruby oAuth gem をオーバーライドしました。以下は、成功したツイートのテスト ケース (Shoulda を使用) の 1 つです。

 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 は、手動テストから収集した回答です。応答をキャプチャするために、printf を lib/oauth/tokens/access_token.rb:44:in `post' に配置しました。

それ以外の場合、これをテストすることはほとんど不可能です。b/c ご指摘のとおり、Twitter は API からアプリケーションの認証を解除する方法がなく、アプリケーションを既に認証している場合は別の方法で動作します。

于 2010-09-07T13:40:03.203 に答える
3

OP から 1 年以上経ちましたが、最近、TwitterAuth と Cucumber の使用に関するこの記事が役に立ちました。

http://blog.zerosum.org/2009/7/13/twitter-auth-integration-testing

于 2010-08-19T14:31:55.673 に答える
2

私は twitter の正確なレシピを持っていません (今までそれを正確に行ったことはありませんでした) が、OAuth にはさまざまな可能なフローを説明する仕様があることを考えると、目前のケースでそれぞれを列挙し、自動化を試みます。交流。

ガイドとして、関連情報へのポインタをいくつか示します。

通常、Web ベースのフローは、ユーザーがクライアント アプリケーションに許可を与えていないかどうかで異なります (ご覧のとおり)。

  • ユーザーがまだクライアント アプリケーションに許可を与えていない場合は、サービス プロバイダーのサイトにリダイレクトされます。
    • サービスプロバイダーで、ユーザーはまだログインしていないため、資格情報で認証する必要があります
    • サービスプロバイダーで認証されると、クライアントアプリケーション/サービスへの承認または承認を拒否する必要があります
    • 彼が承認応答を返すと、それはクライアント サイトに送り返され、クライアント サイトはアクセス トークンを取得できます。
  • ユーザーがクライアント アプリケーション/サービスを既に承認している場合は、アクセス トークンを使用してこれらの手順をバイパスし、サービス プロバイダーでユーザーのデータ/API にアクセスできます。
于 2009-06-13T20:02:36.200 に答える