2016-07-08 14 views
1

OAuth2で部分的に保護されているRails APIのRSpecテストを書いています。 access_tokenが提供されていないときaccess_tokenOAuth2アクセストークンを必要とするRSpecテストを作成するにはどうすればよいですか?

  • がリソース
  • のリストを示しているとき、私は

    • GET ResourcesController#index
      • ようなテストを記述する必要が
        • 何のコンテンツそのよう

    やものを返しません。私はoauth2の宝石を使うことができると思っていましたが、すぐに実際のHTTPリクエストをRailsアプリケーションに発行することで動作することに気付きました。私は少し失われている、誰かが正しい方向に私を指すことができますか?

    EDITいくつかの更なる情報

    私はのOAuth2を実装するためにDoorkeeperを使用しています。

    before_action :doorkeeper_authorize!, only: [:update, :destroy] 
    

    認証トークンの存在、および妥当性を検証:私の質問は私のコントローラのいくつかの方法は次のようなものの背後に隠されているという事実に関係しています。さて、これらのトークンはデータベースに存在しなければなりません。私の質問は、その後のいずれか、私が行う方法です

    • は考えるように(別名、どのように私はRSpecのテスト内の正しいログインをシミュレートします)データベースにこれらのトークンを置く、または
    • トリック守衛(スタブ経由?)これらのトークンは存在し、有効ですか? this見つかり

    EDIT 2

    。私がこれを読んでいる間、答えを加え続けることは自由に感じなさい。

  • 答えて

    1

    oauth2 gemを使用することもできます。its own test suiteには、スタブアクセストークンの例がたくさんあります。あなたがそれ以上のアドバイスを与えるのは難しいかもしれないと具体的に指摘された問題がなければ。

    また、httpインタラクションを記録し、テスト中にそれらを再生する宝石があります(vcr)。ライブAPIインタラクションを記録し、再生を使用してテストを実行できます。

    UPDATE

    あなたはここで、自分で守衛を言及し、そのドキュメントを見つけた後same sourceの例です。

    describe Api::V1::ProfilesController do 
        describe 'GET #index' do 
        let(:token) { double :acceptable? => true } 
    
        before do 
         controller.stub(:doorkeeper_token) { token } 
         # allow(controller).to receive(:doorkeeper_token) {token} # => RSpec 3 
        end 
    
        it 'responds with 200' do 
         get :index, :format => :json 
         response.status.should eq(200) 
        end 
        end 
    end 
    

    スタブ:許容できますか? => trueはトークンが有効なのでドアキーパフィルタをバイパスします。 falseを返すことを望むなら、応答ステータスは401無許可になります。

    +0

    ありがとうございます。私はこれらの例を見ていましたが、テストでそれらを再利用する方法を考え出すことができませんでした。私は私の質問にいくつかの詳細を加えました。うまくいけば、私の立場を明確にします。 – Morpheu5

    +0

    OK、トークンを有効にする方法を知ることができますが、トークンが有効でない場合、または特定の操作を実行する権限がないユーザーに対してコントローラが誤動作していないことを確認したい場合行動? – Morpheu5

    +0

    'acceptable? => 'false? –

    関連する問題