1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
# encoding: utf-8
# frozen_string_literal: true
module Warden
module Test
# A collection of test helpers for testing full stack rack applications using Warden
# These provide the ability to login and logout on any given request
# Note: During the teardown phase of your specs you should include: Warden.test_reset!
module Helpers
def self.included(_base)
::Warden.test_mode!
end
# A helper method that will perform a login of a user in warden for the next request.
# Provide it the same options as you would to Warden::Proxy#set_user
# @see Warden::Proxy#set_user
# @api public
def login_as(user, opts = {})
Warden.on_next_request do |proxy|
opts[:event] ||= :authentication
proxy.set_user(user, opts)
end
end
# Logs out a user from the session.
# Without arguments, all users will be logged out
# Provide a list of scopes to only log out users with that scope.
# @see Warden::Proxy#logout
# @api public
def logout(*scopes)
Warden.on_next_request do |proxy|
proxy.logout(*scopes)
end
end
end
end
end
|