トップ «前の日記(2019-04-03) 最新 次の日記(2019-04-06)» 編集

2019-04-04 [長年日記]

_ RSpecでわざとCSRF対策に引っかかったフリをする

前提として

protect_from_forgery with: :exception

で例外を上げるようにしているものとする。

このうえで Controller Spec をこのように使って該当する例外を上げるようにするとイケる。

descibe FooController, type: :controller do
  controller {
    before_action {
      raise ApplicationController::InvalidAuthenticityToken
    }
  }

  it {
    post :create, params
  }
end

こんな感じ。controller instance に対して任意の before_action を追加できる RSpec つええ。

ちなみに RSpec 3.5 で試したところ、新しい Controller Spec の代わりにオススメされている Request Spec では上のような書き方で Controller の中身に手を加えることはできなかった。他に方法あるんだろうか。

Tags: Rails Ruby