2017-07-05 6 views
0

私のアプリケーションは、シングルサインオン(SSO)用の外部パーティーにリダイレクトされます。Capitbara WebkitのRSpec機能仕様での外部SSOログインの模擬

一度ログインすると、その外部ユーザーはそのユーザーを自分のアプリケーションのコールバックルートにリダイレクトします。私の機能の仕様で

SsoController < ApplicationController 

    def connect 
    # do stuff 

    # Redirect to external party with some params 
    redirect_to "www.external-party.com?foo=\"bar\"" 
    end 

    def callback 
    # Receive response from external party 
    response = params[:response] 

    # do stuff 
    end 
end 

私は実際にこれがそう、私は、ユーザーの視点から、エンド・ツー・エンドの機能をテストすることができて嘲笑持ってみたい:コントローラで次のように

これが実装されています。

私はRSpecの+カピバラを使用していると私は、次の流れをモデル化やってみたい -

  • ユーザーがボタンをconnectに結ばれていること(例えば、「サインイン」)
  • いくつかのボタンをクリックします上記のアクションは、ユーザーに署名し、番目にそれらを取るために(callbackアクション)
  • さらに、ビジネスロジックを
  • RSpecのはオーバー送られたのparamsに基づいて応答を皮肉って、いくつかの外部の第三者にリダイレクトし、私のアプリに戻ってPOST要求を送信しますEIRターゲット

私は特に感謝バック

何かを、通話を傍受応答を構築し、POST-INGのと、第三ステップを行う方法がわかりませんよ!

編集:POSTリクエストは私のアプリに戻ってくることが望ましいですが、必須ではありません。 GETリクエストまたはリダイレクトの場合、テスト環境でのみHTTP動詞を許可するようにアプリを設定できます。

答えて

1

これを(機能仕様では推奨されていない)アプリケーションコードで模擬しようとするのではなく、あなたが望むことを行う最もクリーンな方法は、ビリングのようなプログラム可能なプロキシを使用することです - https://github.com/oesmith/puffing-billy。そうすれば、テストブラウザに応答して、 "www.external-party.com?foo = \" bar \ ""に任意の方法でリクエストすることができます。

+0

ありがとうございます!それは非常に役に立つと思われます。 – user2490003

関連する問題