# https://github.com/plataformatec/devise/wiki/How-To:-Stub-authentication-in-controller-specs require 'devise' module ControllerHelpers # rubocop:disable Metrics/AbcSize def sign_in(user = create(:user)) if user.nil? # simulate unauthenticated allow(request.env['warden']).to( receive(:authenticate!).and_throw(:warden, scope: :user) ) else # simulate authenticated allow_message_expectations_on_nil allow(request.env['warden']).to( receive(:authenticate!).and_return(user) ) end allow(controller).to receive(:current_user).and_return(user) end # rubocop:enable Metrics/AbcSize end RSpec.configure do |config| config.include Devise::TestHelpers, :type => :controller config.include ControllerHelpers, :type => :controller end