controller_specでCanCan::AccessDeniedが発生しない件について
rails4.0
cancan (1.6.10)
sorcery (0.8.1)
ブラウザでは例外が発生するのに、
class Admin::BaseController < ApplicationController rescue_from CanCan::AccessDenied do |exception| # controller_specでなぜかとおらない render text: "権限がありません", layout: "admin/application", status: :forbidden end end
ということがおこってた。
http://stackoverflow.com/questions/4466399/rspec-testing-rescue-fromによると、スタブ設定するといいみたい。
cancan特有ではなさそうな感じ。
describe Admin::UsersController do let!(:admin){ FactoryGirl.create(:admin) } before { login_user(admin) } describe "GET 'edit'" do before { get :edit, { id: @user } } it { response.should be_success } context "ログインユーザが一般ユーザロールの時" do before do controller.stub(:authorize!) { raise CanCan::AccessDenied } login_user(FactoryGirl.create(:user)) get :edit, { id: @user } end it { response.should be_forbidden } end end end
そういえば、shouldはexpectに書き直すべきなのだろうか。