Module: Sorcery::TestHelpers::Internal::Rails

Includes:
Rails
Defined in:
lib/sorcery/test_helpers/internal/rails.rb

Constant Summary collapse

SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS =
[
  :register_last_activity_time_to_db, 
  :deny_banned_user, 
  :validate_session
]

Instance Method Summary collapse

Methods included from Rails

#login_user, #logout_user

Instance Method Details

#clear_user_without_logoutObject

This helper is used to fake multiple users signing in in tests. It does so by clearing @current_user, thus allowing a new user to login, all this without calling the :logout action explicitly. A dirty dirty hack.



51
52
53
# File 'lib/sorcery/test_helpers/internal/rails.rb', line 51

def clear_user_without_logout
  subject.instance_variable_set(:@current_user,nil)
end

#sorcery_controller_external_property_set(provider, property, value) ⇒ Object



43
44
45
# File 'lib/sorcery/test_helpers/internal/rails.rb', line 43

def sorcery_controller_external_property_set(provider, property, value)
  ::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
end

#sorcery_controller_property_set(property, value) ⇒ Object



39
40
41
# File 'lib/sorcery/test_helpers/internal/rails.rb', line 39

def sorcery_controller_property_set(property, value)
  ::Sorcery::Controller::Config.send(:"#{property}=", value)
end

#sorcery_reload!(submodules = [], options = {}) ⇒ Object



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
# File 'lib/sorcery/test_helpers/internal/rails.rb', line 13

def sorcery_reload!(submodules = [], options = {})
  reload_user_class
  
  # return to no-module configuration
  ::Sorcery::Controller::Config.init!
  ::Sorcery::Controller::Config.reset!

  # remove all plugin before_filters so they won't fail other tests.
  # I don't like this way, but I didn't find another.
  # hopefully it won't break until Rails 4.
  ApplicationController._process_action_callbacks.delete_if {|c| SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS.include?(c.filter) }

  # configure
  ::Sorcery::Controller::Config.submodules = submodules
  ::Sorcery::Controller::Config.user_class = nil
  ActionController::Base.send(:include,::Sorcery::Controller)
  ::Sorcery::Controller::Config.user_class = "User"

  ::Sorcery::Controller::Config.user_config do |user|
    options.each do |property,value|
      user.send(:"#{property}=", value)
    end
  end
  User.authenticates_with_sorcery!
end