How do I login a user with devise?
If you want to sign in a user, use the sign_in
helper inside your controller's action:
sign_in(:user, user)
resource = warden.authenticate!(:scope => resource_name) sign_in(resource_name, resource)
I found this post useful for setting up a login for request specs. https://makandracards.com/makandra/37161-rspec-devise-how-to-sign-in-users-in-request-specs
module DeviseRequestSpecHelpers include Warden::Test::Helpers def sign_in(resource_or_scope, resource = nil) resource ||= resource_or_scope scope = Devise::Mapping.find_scope!(resource_or_scope) login_as(resource, scope: scope) end def sign_out(resource_or_scope) scope = Devise::Mapping.find_scope!(resource_or_scope) logout(scope) endend
Include it in your spec_helper
RSpec.configure do |config| config.include DeviseRequestSpecHelpers, type: :requestend
And sign in as needed
sign_in create(:user, name: 'John Doe')