Module: Sorcery::TestHelpers::Sinatra

Defined in:
lib/sorcery/test_helpers/sinatra.rb

Defined Under Namespace

Classes: MyApp, SessionData

Instance Method Summary collapse

Instance Method Details

#assignsObject



55
56
57
# File 'lib/sorcery/test_helpers/sinatra.rb', line 55

def assigns
  ::Sinatra::Application.sorcery_vars
end

#clear_user_without_logoutObject



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

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

#cookiesObject



88
89
90
# File 'lib/sorcery/test_helpers/sinatra.rb', line 88

def cookies
  rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar
end

#get_sinatra_app(app) ⇒ Object



34
35
36
37
38
39
# File 'lib/sorcery/test_helpers/sinatra.rb', line 34

def get_sinatra_app(app)
  while app.class != ::Sinatra::Application do
    app = app.instance_variable_get(:@app)
  end
  app
end

#login_user(user = nil) ⇒ Object



41
42
43
44
45
# File 'lib/sorcery/test_helpers/sinatra.rb', line 41

def (user=nil)
  user ||= @user
  get_sinatra_app(subject).send(:login_user,user)
  get_sinatra_app(subject).send(:after_login!,user,[user.username,'secret'])
end

#logout_userObject



47
48
49
# File 'lib/sorcery/test_helpers/sinatra.rb', line 47

def logout_user
  get_sinatra_app(subject).send(:logout)
end

#sessionObject



84
85
86
# File 'lib/sorcery/test_helpers/sinatra.rb', line 84

def session
  SessionData.new(rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar)
end

#sorcery_controller_oauth_property_set(provider, property, value) ⇒ Object



124
125
126
127
128
# File 'lib/sorcery/test_helpers/sinatra.rb', line 124

def sorcery_controller_oauth_property_set(provider, property, value)
  ::Sinatra::Application.activate_sorcery! do |config|
    config.send(provider).send(:"#{property}=", value)
  end
end

#sorcery_controller_property_set(property, value) ⇒ Object



118
119
120
121
122
# File 'lib/sorcery/test_helpers/sinatra.rb', line 118

def sorcery_controller_property_set(property, value)
  ::Sinatra::Application.activate_sorcery! do |config|
    config.send(:"#{property}=", value)
  end
end

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



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/sorcery/test_helpers/sinatra.rb', line 92

def sorcery_reload!(submodules = [], options = {})
  reload_user_class

  # return to no-module configuration
  ::Sorcery::Controller::Config.init!
  ::Sorcery::Controller::Config.reset!

  # clear all filters
  ::Sinatra::Application.instance_variable_set(:@filters,{:before => [],:after => []})
  ::Sinatra::Application.class_eval do
    load File.join(File.dirname(__FILE__),'..','..','..','spec','sinatra','filters.rb')
  end
  
  # configure
  ::Sorcery::Controller::Config.submodules = submodules
  ::Sorcery::Controller::Config.user_class = nil
  ::Sinatra::Application.send(:include, Sorcery::Controller::Adapters::Sinatra)
  ::Sinatra::Application.send(:include, Sorcery::Controller)
  
  User.activate_sorcery! do |config|
    options.each do |property,value|
      config.send(:"#{property}=", value)
    end
  end
end