Skip to content

Instantly share code, notes, and snippets.

@qcam
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save qcam/f100ca8418447a1ce13b to your computer and use it in GitHub Desktop.
Save qcam/f100ca8418447a1ce13b to your computer and use it in GitHub Desktop.
How to test anomyous controller with RSpec

In your logged_in_controller.rb

class LoggedInController < ApplicationController
  before_filter :authenticate_user!
end

In your logged_in_controller_spec.rb

require 'spec_helper'

describe LoggedInController do
  controller(LoggedInController) do
    def index
      render nothing: true
    end
  end

  describe "#authenticate_user!" do
    let(:user) { create(:user) }

    before { @request.env["devise.mapping"] = Devise.mappings[:user] }

    def do_request
      get :index
    end

    context "when user is logged in" do
      before { sign_in user }
      before { do_request }

      it { should_not redirect_to new_user_session_path }
    end

    context "when user is not logged in" do
      before { do_request }

      it { should redirect_to new_user_session_path }
    end
  end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment