Configuring Warden for use in RSpec controller specs

Posted by Chris Peters on Stack Overflow See other posts from Stack Overflow or by Chris Peters
Published on 2012-11-16T16:51:26Z Indexed on 2012/11/16 16:59 UTC
Read the original article Hit count: 240

I was able to use Devise's sign_in method to log in a user in my controller specs. But now that I'm removing Devise from my application, I'm not quite sure how to get similar functionality working with just Warden on its own.

How should I go about setting up spec/spec_helper.rb and related spec/support/*.rb files to get Warden running within controller specs sufficiently?

I've tried setting up a file at spec/support/warden.rb with these contents:

RSpec.configure do |config|
  config.include Warden::Test::Helpers

  config.after do
    Warden.test_reset!
  end
end

Then I have before calls similar to this to authenticate a user factory:

before { login_as FactoryGirl.create(:user) }

But here is the error that I keep seeing:

NameError:
  undefined method `user' for nil:NilClass

This error traces back to my authenticate_user! method in the controller:

def authenticate_user!
  redirect_to login_path, notice: "You need to sign in or sign up before continuing." if env['warden'].user.nil?
end

I'd appreciate any guidance that anyone could provide.

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about ruby-on-rails-3