nulogy-authlogic 3.1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +3 -0
- data/Gemfile.lock +62 -0
- data/LICENSE +20 -0
- data/README.rdoc +250 -0
- data/Rakefile +50 -0
- data/VERSION.yml +5 -0
- data/authlogic.gemspec +192 -0
- data/generators/session/session_generator.rb +9 -0
- data/generators/session/templates/session.rb +2 -0
- data/init.rb +1 -0
- data/lib/authlogic.rb +64 -0
- data/lib/authlogic/acts_as_authentic/base.rb +109 -0
- data/lib/authlogic/acts_as_authentic/email.rb +110 -0
- data/lib/authlogic/acts_as_authentic/logged_in_status.rb +59 -0
- data/lib/authlogic/acts_as_authentic/login.rb +142 -0
- data/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
- data/lib/authlogic/acts_as_authentic/password.rb +355 -0
- data/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
- data/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
- data/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
- data/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
- data/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
- data/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
- data/lib/authlogic/authenticates_many/association.rb +42 -0
- data/lib/authlogic/authenticates_many/base.rb +54 -0
- data/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
- data/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
- data/lib/authlogic/controller_adapters/rails_adapter.rb +50 -0
- data/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
- data/lib/authlogic/crypto_providers/aes256.rb +43 -0
- data/lib/authlogic/crypto_providers/bcrypt.rb +90 -0
- data/lib/authlogic/crypto_providers/md5.rb +34 -0
- data/lib/authlogic/crypto_providers/sha1.rb +35 -0
- data/lib/authlogic/crypto_providers/sha256.rb +50 -0
- data/lib/authlogic/crypto_providers/sha512.rb +50 -0
- data/lib/authlogic/crypto_providers/wordpress.rb +43 -0
- data/lib/authlogic/i18n.rb +84 -0
- data/lib/authlogic/i18n/translator.rb +15 -0
- data/lib/authlogic/random.rb +33 -0
- data/lib/authlogic/regex.rb +25 -0
- data/lib/authlogic/session/activation.rb +58 -0
- data/lib/authlogic/session/active_record_trickery.rb +72 -0
- data/lib/authlogic/session/base.rb +37 -0
- data/lib/authlogic/session/brute_force_protection.rb +96 -0
- data/lib/authlogic/session/callbacks.rb +96 -0
- data/lib/authlogic/session/cookies.rb +182 -0
- data/lib/authlogic/session/existence.rb +93 -0
- data/lib/authlogic/session/foundation.rb +77 -0
- data/lib/authlogic/session/http_auth.rb +99 -0
- data/lib/authlogic/session/id.rb +41 -0
- data/lib/authlogic/session/klass.rb +69 -0
- data/lib/authlogic/session/magic_columns.rb +95 -0
- data/lib/authlogic/session/magic_states.rb +59 -0
- data/lib/authlogic/session/params.rb +101 -0
- data/lib/authlogic/session/password.rb +240 -0
- data/lib/authlogic/session/perishable_token.rb +18 -0
- data/lib/authlogic/session/persistence.rb +70 -0
- data/lib/authlogic/session/priority_record.rb +34 -0
- data/lib/authlogic/session/scopes.rb +101 -0
- data/lib/authlogic/session/session.rb +62 -0
- data/lib/authlogic/session/timeout.rb +82 -0
- data/lib/authlogic/session/unauthorized_record.rb +50 -0
- data/lib/authlogic/session/validation.rb +82 -0
- data/lib/authlogic/test_case.rb +120 -0
- data/lib/authlogic/test_case/mock_controller.rb +55 -0
- data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
- data/lib/authlogic/test_case/mock_logger.rb +10 -0
- data/lib/authlogic/test_case/mock_request.rb +19 -0
- data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
- data/lib/generators/authlogic/USAGE +8 -0
- data/lib/generators/authlogic/session_generator.rb +14 -0
- data/lib/generators/authlogic/templates/session.rb +2 -0
- data/rails/init.rb +1 -0
- data/shoulda_macros/authlogic.rb +69 -0
- data/test/acts_as_authentic_test/base_test.rb +18 -0
- data/test/acts_as_authentic_test/email_test.rb +116 -0
- data/test/acts_as_authentic_test/logged_in_status_test.rb +50 -0
- data/test/acts_as_authentic_test/login_test.rb +116 -0
- data/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
- data/test/acts_as_authentic_test/password_test.rb +236 -0
- data/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
- data/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
- data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
- data/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
- data/test/acts_as_authentic_test/single_access_test.rb +44 -0
- data/test/authenticates_many_test.rb +16 -0
- data/test/crypto_provider_test/aes256_test.rb +14 -0
- data/test/crypto_provider_test/bcrypt_test.rb +14 -0
- data/test/crypto_provider_test/sha1_test.rb +23 -0
- data/test/crypto_provider_test/sha256_test.rb +14 -0
- data/test/crypto_provider_test/sha512_test.rb +14 -0
- data/test/fixtures/companies.yml +5 -0
- data/test/fixtures/employees.yml +17 -0
- data/test/fixtures/projects.yml +3 -0
- data/test/fixtures/users.yml +24 -0
- data/test/i18n_test.rb +33 -0
- data/test/libs/affiliate.rb +7 -0
- data/test/libs/company.rb +6 -0
- data/test/libs/employee.rb +7 -0
- data/test/libs/employee_session.rb +2 -0
- data/test/libs/ldaper.rb +3 -0
- data/test/libs/ordered_hash.rb +9 -0
- data/test/libs/project.rb +3 -0
- data/test/libs/user.rb +5 -0
- data/test/libs/user_session.rb +5 -0
- data/test/random_test.rb +42 -0
- data/test/session_test/activation_test.rb +43 -0
- data/test/session_test/active_record_trickery_test.rb +46 -0
- data/test/session_test/brute_force_protection_test.rb +101 -0
- data/test/session_test/callbacks_test.rb +54 -0
- data/test/session_test/cookies_test.rb +136 -0
- data/test/session_test/credentials_test.rb +0 -0
- data/test/session_test/existence_test.rb +64 -0
- data/test/session_test/http_auth_test.rb +57 -0
- data/test/session_test/id_test.rb +17 -0
- data/test/session_test/klass_test.rb +40 -0
- data/test/session_test/magic_columns_test.rb +62 -0
- data/test/session_test/magic_states_test.rb +60 -0
- data/test/session_test/params_test.rb +53 -0
- data/test/session_test/password_test.rb +106 -0
- data/test/session_test/perishability_test.rb +15 -0
- data/test/session_test/persistence_test.rb +21 -0
- data/test/session_test/scopes_test.rb +60 -0
- data/test/session_test/session_test.rb +59 -0
- data/test/session_test/timeout_test.rb +52 -0
- data/test/session_test/unauthorized_record_test.rb +13 -0
- data/test/session_test/validation_test.rb +23 -0
- data/test/test_helper.rb +168 -0
- metadata +252 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SessionTest
|
4
|
+
module ActiveRecordTrickeryTest
|
5
|
+
class ClassMethodsTest < ActiveSupport::TestCase
|
6
|
+
def test_human_attribute_name
|
7
|
+
assert_equal "Some attribute", UserSession.human_attribute_name("some_attribute")
|
8
|
+
assert_equal "Some attribute", UserSession.human_attribute_name(:some_attribute)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_human_name
|
12
|
+
assert_equal "Usersession", UserSession.human_name
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_self_and_descendents_from_active_record
|
16
|
+
assert_equal [UserSession], UserSession.self_and_descendents_from_active_record
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_self_and_descendants_from_active_record
|
20
|
+
assert_equal [UserSession], UserSession.self_and_descendants_from_active_record
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_i18n_of_human_name
|
24
|
+
I18n.backend.store_translations 'en', :authlogic => {:models => {:user_session => "MySession" } }
|
25
|
+
assert_equal "MySession", UserSession.human_name
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_i18n_of_model_name_human
|
29
|
+
I18n.backend.store_translations 'en', :authlogic => {:models => {:user_session => "MySession" } }
|
30
|
+
assert_equal "MySession", UserSession.model_name.human
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class InstanceMethodsTest < ActiveSupport::TestCase
|
35
|
+
def test_new_record
|
36
|
+
session = UserSession.new
|
37
|
+
assert session.new_record?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_to_model
|
41
|
+
session = UserSession.new
|
42
|
+
assert_equal session, session.to_model
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SessionTest
|
4
|
+
module BruteForceProtectionTest
|
5
|
+
class ConfigTest < ActiveSupport::TestCase
|
6
|
+
def test_consecutive_failed_logins_limit
|
7
|
+
UserSession.consecutive_failed_logins_limit = 10
|
8
|
+
assert_equal 10, UserSession.consecutive_failed_logins_limit
|
9
|
+
|
10
|
+
UserSession.consecutive_failed_logins_limit 50
|
11
|
+
assert_equal 50, UserSession.consecutive_failed_logins_limit
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_failed_login_ban_for
|
15
|
+
UserSession.failed_login_ban_for = 10
|
16
|
+
assert_equal 10, UserSession.failed_login_ban_for
|
17
|
+
|
18
|
+
UserSession.failed_login_ban_for 2.hours
|
19
|
+
assert_equal 2.hours.to_i, UserSession.failed_login_ban_for
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class InstaceMethodsTest < ActiveSupport::TestCase
|
24
|
+
def test_under_limit
|
25
|
+
ben = users(:ben)
|
26
|
+
ben.failed_login_count = UserSession.consecutive_failed_logins_limit - 1
|
27
|
+
assert ben.save
|
28
|
+
assert UserSession.create(:login => ben.login, :password => "benrocks")
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_exceeded_limit
|
32
|
+
ben = users(:ben)
|
33
|
+
ben.failed_login_count = UserSession.consecutive_failed_logins_limit
|
34
|
+
assert ben.save
|
35
|
+
assert UserSession.create(:login => ben.login, :password => "benrocks").new_session?
|
36
|
+
assert UserSession.create(ben).new_session?
|
37
|
+
ben.updated_at = (UserSession.failed_login_ban_for + 2.hours.to_i).seconds.ago
|
38
|
+
assert !UserSession.create(ben).new_session?
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_exceeding_failed_logins_limit
|
42
|
+
UserSession.consecutive_failed_logins_limit = 2
|
43
|
+
ben = users(:ben)
|
44
|
+
|
45
|
+
2.times do |i|
|
46
|
+
session = UserSession.new(:login => ben.login, :password => "badpassword1")
|
47
|
+
assert !session.save
|
48
|
+
assert session.errors[:password].size > 0
|
49
|
+
assert_equal i + 1, ben.reload.failed_login_count
|
50
|
+
end
|
51
|
+
|
52
|
+
session = UserSession.new(:login => ben.login, :password => "badpassword2")
|
53
|
+
assert !session.save
|
54
|
+
assert session.errors[:password].size == 0
|
55
|
+
assert_equal 3, ben.reload.failed_login_count
|
56
|
+
|
57
|
+
UserSession.consecutive_failed_logins_limit = 50
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_exceeded_ban_for
|
61
|
+
UserSession.consecutive_failed_logins_limit = 2
|
62
|
+
UserSession.generalize_credentials_error_messages true
|
63
|
+
ben = users(:ben)
|
64
|
+
|
65
|
+
2.times do |i|
|
66
|
+
session = UserSession.new(:login => ben.login, :password => "badpassword1")
|
67
|
+
assert !session.save
|
68
|
+
assert session.invalid_password?
|
69
|
+
assert_equal i + 1, ben.reload.failed_login_count
|
70
|
+
end
|
71
|
+
|
72
|
+
ActiveRecord::Base.connection.execute("update users set updated_at = '#{1.day.ago.to_s(:db)}' where login = '#{ben.login}'")
|
73
|
+
session = UserSession.new(:login => ben.login, :password => "benrocks")
|
74
|
+
assert session.save
|
75
|
+
assert_equal 0, ben.reload.failed_login_count
|
76
|
+
|
77
|
+
UserSession.consecutive_failed_logins_limit = 50
|
78
|
+
UserSession.generalize_credentials_error_messages false
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_exceeded_ban_and_failed_doesnt_ban_again
|
82
|
+
UserSession.consecutive_failed_logins_limit = 2
|
83
|
+
ben = users(:ben)
|
84
|
+
|
85
|
+
2.times do |i|
|
86
|
+
session = UserSession.new(:login => ben.login, :password => "badpassword1")
|
87
|
+
assert !session.save
|
88
|
+
assert session.errors[:password].size > 0
|
89
|
+
assert_equal i + 1, ben.reload.failed_login_count
|
90
|
+
end
|
91
|
+
|
92
|
+
ActiveRecord::Base.connection.execute("update users set updated_at = '#{1.day.ago.to_s(:db)}' where login = '#{ben.login}'")
|
93
|
+
session = UserSession.new(:login => ben.login, :password => "badpassword1")
|
94
|
+
assert !session.save
|
95
|
+
assert_equal 1, ben.reload.failed_login_count
|
96
|
+
|
97
|
+
UserSession.consecutive_failed_logins_limit = 50
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WackyUserSession < Authlogic::Session::Base
|
4
|
+
attr_accessor :counter
|
5
|
+
authenticate_with User
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@counter = 0
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def persist_by_false
|
13
|
+
self.counter += 1
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
|
17
|
+
def persist_by_true
|
18
|
+
self.counter += 1
|
19
|
+
return true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module SessionTest
|
24
|
+
class CallbacksTest < ActiveSupport::TestCase
|
25
|
+
def setup
|
26
|
+
WackyUserSession.reset_callbacks(:persist)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_no_callbacks
|
30
|
+
assert_equal [], WackyUserSession._persist_callbacks.map(&:filter)
|
31
|
+
session = WackyUserSession.new
|
32
|
+
session.send(:persist)
|
33
|
+
assert_equal 0, session.counter
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_true_callback_cancelling_later_callbacks
|
37
|
+
WackyUserSession.persist :persist_by_true, :persist_by_false
|
38
|
+
assert_equal [:persist_by_true, :persist_by_false], WackyUserSession._persist_callbacks.map(&:filter)
|
39
|
+
|
40
|
+
session = WackyUserSession.new
|
41
|
+
session.send(:persist)
|
42
|
+
assert_equal 1, session.counter
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_false_callback_continuing_to_later_callbacks
|
46
|
+
WackyUserSession.persist :persist_by_false, :persist_by_true
|
47
|
+
assert_equal [:persist_by_false, :persist_by_true], WackyUserSession._persist_callbacks.map(&:filter)
|
48
|
+
|
49
|
+
session = WackyUserSession.new
|
50
|
+
session.send(:persist)
|
51
|
+
assert_equal 2, session.counter
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SessionTest
|
4
|
+
module CookiesTest
|
5
|
+
class ConfiTest < ActiveSupport::TestCase
|
6
|
+
def test_cookie_key
|
7
|
+
UserSession.cookie_key = "my_cookie_key"
|
8
|
+
assert_equal "my_cookie_key", UserSession.cookie_key
|
9
|
+
|
10
|
+
UserSession.cookie_key "user_credentials"
|
11
|
+
assert_equal "user_credentials", UserSession.cookie_key
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_default_cookie_key
|
15
|
+
assert_equal "user_credentials", UserSession.cookie_key
|
16
|
+
assert_equal "back_office_user_credentials", BackOfficeUserSession.cookie_key
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_remember_me
|
20
|
+
UserSession.remember_me = true
|
21
|
+
assert_equal true, UserSession.remember_me
|
22
|
+
session = UserSession.new
|
23
|
+
assert_equal true, session.remember_me
|
24
|
+
|
25
|
+
UserSession.remember_me false
|
26
|
+
assert_equal false, UserSession.remember_me
|
27
|
+
session = UserSession.new
|
28
|
+
assert_equal false, session.remember_me
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_remember_me_for
|
32
|
+
UserSession.remember_me_for = 3.years
|
33
|
+
assert_equal 3.years, UserSession.remember_me_for
|
34
|
+
session = UserSession.new
|
35
|
+
session.remember_me = true
|
36
|
+
assert_equal 3.years, session.remember_me_for
|
37
|
+
|
38
|
+
UserSession.remember_me_for 3.months
|
39
|
+
assert_equal 3.months, UserSession.remember_me_for
|
40
|
+
session = UserSession.new
|
41
|
+
session.remember_me = true
|
42
|
+
assert_equal 3.months, session.remember_me_for
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_secure
|
46
|
+
UserSession.secure = true
|
47
|
+
assert_equal true, UserSession.secure
|
48
|
+
session = UserSession.new
|
49
|
+
assert_equal true, session.secure
|
50
|
+
|
51
|
+
UserSession.secure false
|
52
|
+
assert_equal false, UserSession.secure
|
53
|
+
session = UserSession.new
|
54
|
+
assert_equal false, session.secure
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_httponly
|
58
|
+
UserSession.httponly = true
|
59
|
+
assert_equal true, UserSession.httponly
|
60
|
+
session = UserSession.new
|
61
|
+
assert_equal true, session.httponly
|
62
|
+
|
63
|
+
UserSession.httponly false
|
64
|
+
assert_equal false, UserSession.httponly
|
65
|
+
session = UserSession.new
|
66
|
+
assert_equal false, session.httponly
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class InstanceMethodsTest < ActiveSupport::TestCase
|
71
|
+
def test_credentials
|
72
|
+
session = UserSession.new
|
73
|
+
session.credentials = {:remember_me => true}
|
74
|
+
assert_equal true, session.remember_me
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_remember_me
|
78
|
+
session = UserSession.new
|
79
|
+
assert_equal false, session.remember_me
|
80
|
+
assert !session.remember_me?
|
81
|
+
|
82
|
+
session.remember_me = false
|
83
|
+
assert_equal false, session.remember_me
|
84
|
+
assert !session.remember_me?
|
85
|
+
|
86
|
+
session.remember_me = true
|
87
|
+
assert_equal true, session.remember_me
|
88
|
+
assert session.remember_me?
|
89
|
+
|
90
|
+
session.remember_me = nil
|
91
|
+
assert_nil session.remember_me
|
92
|
+
assert !session.remember_me?
|
93
|
+
|
94
|
+
session.remember_me = "1"
|
95
|
+
assert_equal "1", session.remember_me
|
96
|
+
assert session.remember_me?
|
97
|
+
|
98
|
+
session.remember_me = "true"
|
99
|
+
assert_equal "true", session.remember_me
|
100
|
+
assert session.remember_me?
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_remember_me_until
|
104
|
+
session = UserSession.new
|
105
|
+
assert_nil session.remember_me_until
|
106
|
+
|
107
|
+
session.remember_me = true
|
108
|
+
assert 3.months.from_now <= session.remember_me_until
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_persist_persist_by_cookie
|
112
|
+
ben = users(:ben)
|
113
|
+
assert !UserSession.find
|
114
|
+
set_cookie_for(ben)
|
115
|
+
assert session = UserSession.find
|
116
|
+
assert_equal ben, session.record
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_after_save_save_cookie
|
120
|
+
ben = users(:ben)
|
121
|
+
session = UserSession.new(ben)
|
122
|
+
assert session.save
|
123
|
+
assert_equal "#{ben.persistence_token}::#{ben.id}", controller.cookies["user_credentials"]
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_after_destroy_destroy_cookie
|
127
|
+
ben = users(:ben)
|
128
|
+
set_cookie_for(ben)
|
129
|
+
session = UserSession.find
|
130
|
+
assert controller.cookies["user_credentials"]
|
131
|
+
assert session.destroy
|
132
|
+
assert !controller.cookies["user_credentials"]
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SessionTest
|
4
|
+
module ExistenceTest
|
5
|
+
class ClassMethodsTest < ActiveSupport::TestCase
|
6
|
+
def test_create
|
7
|
+
ben = users(:ben)
|
8
|
+
assert UserSession.create(:login => "somelogin", :password => "badpw2").new_session?
|
9
|
+
assert !UserSession.create(:login => ben.login, :password => "benrocks").new_session?
|
10
|
+
assert_raise(Authlogic::Session::Existence::SessionInvalidError) { UserSession.create!(:login => ben.login, :password => "badpw") }
|
11
|
+
assert !UserSession.create!(:login => ben.login, :password => "benrocks").new_session?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class IsntaceMethodsTest < ActiveSupport::TestCase
|
16
|
+
def test_new_session
|
17
|
+
session = UserSession.new
|
18
|
+
assert session.new_session?
|
19
|
+
|
20
|
+
set_session_for(users(:ben))
|
21
|
+
session = UserSession.find
|
22
|
+
assert !session.new_session?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_save_with_nothing
|
26
|
+
session = UserSession.new
|
27
|
+
assert !session.save
|
28
|
+
assert session.new_session?
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_save_with_block
|
32
|
+
ben = users(:ben)
|
33
|
+
session = UserSession.new
|
34
|
+
block_result = session.save do |result|
|
35
|
+
assert !result
|
36
|
+
end
|
37
|
+
assert !block_result
|
38
|
+
assert session.new_session?
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_save_with_bang
|
42
|
+
session = UserSession.new
|
43
|
+
assert_raise(Authlogic::Session::Existence::SessionInvalidError) { session.save! }
|
44
|
+
|
45
|
+
session.unauthorized_record = users(:ben)
|
46
|
+
assert_nothing_raised { session.save! }
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_destroy
|
50
|
+
ben = users(:ben)
|
51
|
+
session = UserSession.new
|
52
|
+
assert !session.valid?
|
53
|
+
assert !session.errors.empty?
|
54
|
+
assert session.destroy
|
55
|
+
assert session.errors.empty?
|
56
|
+
session.unauthorized_record = ben
|
57
|
+
assert session.save
|
58
|
+
assert session.record
|
59
|
+
assert session.destroy
|
60
|
+
assert !session.record
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module SessionTest
|
4
|
+
class HttpAuthTest < ActiveSupport::TestCase
|
5
|
+
class ConfiTest < ActiveSupport::TestCase
|
6
|
+
def test_allow_http_basic_auth
|
7
|
+
UserSession.allow_http_basic_auth = false
|
8
|
+
assert_equal false, UserSession.allow_http_basic_auth
|
9
|
+
|
10
|
+
UserSession.allow_http_basic_auth true
|
11
|
+
assert_equal true, UserSession.allow_http_basic_auth
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_request_http_basic_auth
|
15
|
+
UserSession.request_http_basic_auth = true
|
16
|
+
assert_equal true, UserSession.request_http_basic_auth
|
17
|
+
|
18
|
+
UserSession.request_http_basic_auth = false
|
19
|
+
assert_equal false, UserSession.request_http_basic_auth
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_http_basic_auth_realm
|
23
|
+
assert_equal 'Application', UserSession.http_basic_auth_realm
|
24
|
+
|
25
|
+
UserSession.http_basic_auth_realm = 'TestRealm'
|
26
|
+
assert_equal 'TestRealm', UserSession.http_basic_auth_realm
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class InstanceMethodsTest < ActiveSupport::TestCase
|
31
|
+
def test_persist_persist_by_http_auth
|
32
|
+
ben = users(:ben)
|
33
|
+
http_basic_auth_for do
|
34
|
+
assert !UserSession.find
|
35
|
+
end
|
36
|
+
http_basic_auth_for(ben) do
|
37
|
+
assert session = UserSession.find
|
38
|
+
assert_equal ben, session.record
|
39
|
+
assert_equal ben.login, session.login
|
40
|
+
assert_equal "benrocks", session.send(:protected_password)
|
41
|
+
assert !controller.http_auth_requested?
|
42
|
+
end
|
43
|
+
unset_session
|
44
|
+
UserSession.request_http_basic_auth = true
|
45
|
+
UserSession.http_basic_auth_realm = 'PersistTestRealm'
|
46
|
+
http_basic_auth_for(ben) do
|
47
|
+
assert session = UserSession.find
|
48
|
+
assert_equal ben, session.record
|
49
|
+
assert_equal ben.login, session.login
|
50
|
+
assert_equal "benrocks", session.send(:protected_password)
|
51
|
+
assert_equal 'PersistTestRealm', controller.realm
|
52
|
+
assert controller.http_auth_requested?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|