doorkeeperでプロテクトされているコントローラーのテスト

2013-06-07T00:00:00+00:00 Ruby Rails

RailsでAPIなコントローラーをテストしようにもbefore_filterでトークンによるプロテクションがされているのが当たり前。それをテストする際にどうやるのかって所なんですが、普通にドキュメントに書かれてる

https://github.com/applicake/doorkeeper/wiki/Testing-protected-controllers

つまりはdoorkeeper_tokenが返す結果をStubで処理させてプロテクションを通過させる的な感じかと。まぁドキュメントに書いてるとおりに

require "spec_helper"

describe Api::SampleController do
  fixtures :sample

  describe "GET #index" do
    let(:token) {
      stub(:accessible? => true)
    }

    before do
      controller.stub(:doorkeeper_token) { token }
    end

    it "respond with 200" do
      get :index, :format => :json
      expect(response).to be_success
    end
  end
end

letでdoorkeeper_tokenなstubを作る。今回やってないけど、scopeとか指定も出来る模様。でbeforeでcontrollerのdoorkeper_tokenをletで作ったモックを指定?な感じ。でitなテスト部で普通にテスト書けばオッケー的な

jmockit doorkeeperのgrant_type="password"を使ってみる