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 の中身に手を加えることはできなかった。他に方法あるんだろうか。