authlogic 4.5.0 → 6.4.2
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.
- checksums.yaml +4 -4
- data/lib/authlogic/acts_as_authentic/base.rb +19 -19
- data/lib/authlogic/acts_as_authentic/email.rb +3 -170
- data/lib/authlogic/acts_as_authentic/logged_in_status.rb +3 -1
- data/lib/authlogic/acts_as_authentic/login.rb +7 -174
- data/lib/authlogic/acts_as_authentic/magic_columns.rb +7 -4
- data/lib/authlogic/acts_as_authentic/password.rb +67 -256
- data/lib/authlogic/acts_as_authentic/perishable_token.rb +8 -5
- data/lib/authlogic/acts_as_authentic/persistence_token.rb +10 -4
- data/lib/authlogic/acts_as_authentic/queries/case_sensitivity.rb +53 -0
- data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +36 -20
- data/lib/authlogic/acts_as_authentic/session_maintenance.rb +12 -8
- data/lib/authlogic/acts_as_authentic/single_access_token.rb +10 -8
- data/lib/authlogic/config.rb +9 -1
- data/lib/authlogic/controller_adapters/abstract_adapter.rb +28 -4
- data/lib/authlogic/controller_adapters/rack_adapter.rb +2 -0
- data/lib/authlogic/controller_adapters/rails_adapter.rb +7 -30
- data/lib/authlogic/controller_adapters/sinatra_adapter.rb +6 -0
- data/lib/authlogic/cookie_credentials.rb +63 -0
- data/lib/authlogic/crypto_providers/bcrypt.rb +3 -3
- data/lib/authlogic/crypto_providers/md5/v2.rb +35 -0
- data/lib/authlogic/crypto_providers/md5.rb +6 -6
- data/lib/authlogic/crypto_providers/scrypt.rb +2 -0
- data/lib/authlogic/crypto_providers/sha1/v2.rb +41 -0
- data/lib/authlogic/crypto_providers/sha1.rb +7 -6
- data/lib/authlogic/crypto_providers/sha256/v2.rb +58 -0
- data/lib/authlogic/crypto_providers/sha256.rb +5 -0
- data/lib/authlogic/crypto_providers/sha512/v2.rb +39 -0
- data/lib/authlogic/crypto_providers/sha512.rb +9 -5
- data/lib/authlogic/crypto_providers.rb +5 -20
- data/lib/authlogic/errors.rb +50 -0
- data/lib/authlogic/i18n/translator.rb +4 -1
- data/lib/authlogic/i18n.rb +3 -1
- data/lib/authlogic/random.rb +2 -0
- data/lib/authlogic/session/base.rb +2197 -39
- data/lib/authlogic/session/magic_column/assigns_last_request_at.rb +46 -0
- data/lib/authlogic/test_case/mock_api_controller.rb +52 -0
- data/lib/authlogic/test_case/mock_controller.rb +3 -1
- data/lib/authlogic/test_case/mock_cookie_jar.rb +32 -6
- data/lib/authlogic/test_case/mock_logger.rb +2 -0
- data/lib/authlogic/test_case/mock_request.rb +12 -0
- data/lib/authlogic/test_case/rails_request_adapter.rb +9 -1
- data/lib/authlogic/test_case.rb +5 -0
- data/lib/authlogic/version.rb +2 -1
- data/lib/authlogic.rb +5 -28
- metadata +175 -200
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -28
- data/.github/ISSUE_TEMPLATE/feature_proposal.md +0 -32
- data/.github/triage.md +0 -86
- data/.gitignore +0 -15
- data/.rubocop.yml +0 -133
- data/.rubocop_todo.yml +0 -74
- data/.travis.yml +0 -24
- data/CHANGELOG.md +0 -348
- data/CONTRIBUTING.md +0 -91
- data/Gemfile +0 -6
- data/LICENSE +0 -20
- data/README.md +0 -448
- data/Rakefile +0 -21
- data/UPGRADING.md +0 -22
- data/authlogic.gemspec +0 -40
- data/doc/use_normal_rails_validation.md +0 -82
- data/gemfiles/Gemfile.rails-4.2.x +0 -6
- data/gemfiles/Gemfile.rails-5.1.x +0 -6
- data/gemfiles/Gemfile.rails-5.2.x +0 -6
- data/lib/authlogic/acts_as_authentic/restful_authentication.rb +0 -106
- data/lib/authlogic/acts_as_authentic/validations_scope.rb +0 -35
- data/lib/authlogic/authenticates_many/association.rb +0 -50
- data/lib/authlogic/authenticates_many/base.rb +0 -81
- data/lib/authlogic/crypto_providers/aes256.rb +0 -71
- data/lib/authlogic/crypto_providers/wordpress.rb +0 -72
- data/lib/authlogic/regex.rb +0 -79
- data/lib/authlogic/session/activation.rb +0 -73
- data/lib/authlogic/session/active_record_trickery.rb +0 -65
- data/lib/authlogic/session/brute_force_protection.rb +0 -127
- data/lib/authlogic/session/callbacks.rb +0 -153
- data/lib/authlogic/session/cookies.rb +0 -329
- data/lib/authlogic/session/existence.rb +0 -103
- data/lib/authlogic/session/foundation.rb +0 -105
- data/lib/authlogic/session/http_auth.rb +0 -107
- data/lib/authlogic/session/id.rb +0 -53
- data/lib/authlogic/session/klass.rb +0 -73
- data/lib/authlogic/session/magic_columns.rb +0 -119
- data/lib/authlogic/session/magic_states.rb +0 -82
- data/lib/authlogic/session/params.rb +0 -130
- data/lib/authlogic/session/password.rb +0 -318
- data/lib/authlogic/session/perishable_token.rb +0 -24
- data/lib/authlogic/session/persistence.rb +0 -77
- data/lib/authlogic/session/priority_record.rb +0 -38
- data/lib/authlogic/session/scopes.rb +0 -138
- data/lib/authlogic/session/session.rb +0 -77
- data/lib/authlogic/session/timeout.rb +0 -103
- data/lib/authlogic/session/unauthorized_record.rb +0 -56
- data/lib/authlogic/session/validation.rb +0 -93
- data/test/acts_as_authentic_test/base_test.rb +0 -27
- data/test/acts_as_authentic_test/email_test.rb +0 -241
- data/test/acts_as_authentic_test/logged_in_status_test.rb +0 -64
- data/test/acts_as_authentic_test/login_test.rb +0 -153
- data/test/acts_as_authentic_test/magic_columns_test.rb +0 -29
- data/test/acts_as_authentic_test/password_test.rb +0 -263
- data/test/acts_as_authentic_test/perishable_token_test.rb +0 -98
- data/test/acts_as_authentic_test/persistence_token_test.rb +0 -62
- data/test/acts_as_authentic_test/restful_authentication_test.rb +0 -48
- data/test/acts_as_authentic_test/session_maintenance_test.rb +0 -150
- data/test/acts_as_authentic_test/single_access_test.rb +0 -46
- data/test/adapter_test.rb +0 -23
- data/test/authenticates_many_test.rb +0 -33
- data/test/config_test.rb +0 -38
- data/test/crypto_provider_test/aes256_test.rb +0 -16
- data/test/crypto_provider_test/bcrypt_test.rb +0 -16
- data/test/crypto_provider_test/scrypt_test.rb +0 -16
- data/test/crypto_provider_test/sha1_test.rb +0 -25
- data/test/crypto_provider_test/sha256_test.rb +0 -16
- data/test/crypto_provider_test/sha512_test.rb +0 -16
- data/test/crypto_provider_test/wordpress_test.rb +0 -26
- data/test/fixtures/companies.yml +0 -5
- data/test/fixtures/employees.yml +0 -17
- data/test/fixtures/projects.yml +0 -3
- data/test/fixtures/users.yml +0 -41
- data/test/i18n/lol.yml +0 -4
- data/test/i18n_test.rb +0 -35
- data/test/libs/affiliate.rb +0 -9
- data/test/libs/company.rb +0 -8
- data/test/libs/employee.rb +0 -9
- data/test/libs/employee_session.rb +0 -4
- data/test/libs/ldaper.rb +0 -5
- data/test/libs/project.rb +0 -5
- data/test/libs/user.rb +0 -9
- data/test/libs/user_session.rb +0 -27
- data/test/random_test.rb +0 -15
- data/test/session_test/activation_test.rb +0 -45
- data/test/session_test/active_record_trickery_test.rb +0 -78
- data/test/session_test/brute_force_protection_test.rb +0 -110
- data/test/session_test/callbacks_test.rb +0 -42
- data/test/session_test/cookies_test.rb +0 -244
- data/test/session_test/credentials_test.rb +0 -0
- data/test/session_test/existence_test.rb +0 -88
- data/test/session_test/foundation_test.rb +0 -24
- data/test/session_test/http_auth_test.rb +0 -60
- data/test/session_test/id_test.rb +0 -19
- data/test/session_test/klass_test.rb +0 -42
- data/test/session_test/magic_columns_test.rb +0 -62
- data/test/session_test/magic_states_test.rb +0 -60
- data/test/session_test/params_test.rb +0 -61
- data/test/session_test/password_test.rb +0 -107
- data/test/session_test/perishability_test.rb +0 -17
- data/test/session_test/persistence_test.rb +0 -35
- data/test/session_test/scopes_test.rb +0 -68
- data/test/session_test/session_test.rb +0 -80
- data/test/session_test/timeout_test.rb +0 -84
- data/test/session_test/unauthorized_record_test.rb +0 -15
- data/test/session_test/validation_test.rb +0 -25
- data/test/test_helper.rb +0 -272
@@ -1,263 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class PasswordTest < ActiveSupport::TestCase
|
7
|
-
# If test_human_name is executed after test_i18n_of_human_name the test will fail.
|
8
|
-
i_suck_and_my_tests_are_order_dependent!
|
9
|
-
|
10
|
-
def test_crypted_password_field_config
|
11
|
-
assert_equal :crypted_password, User.crypted_password_field
|
12
|
-
assert_equal :crypted_password, Employee.crypted_password_field
|
13
|
-
|
14
|
-
User.crypted_password_field = :nope
|
15
|
-
assert_equal :nope, User.crypted_password_field
|
16
|
-
User.crypted_password_field :crypted_password
|
17
|
-
assert_equal :crypted_password, User.crypted_password_field
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_password_salt_field_config
|
21
|
-
assert_equal :password_salt, User.password_salt_field
|
22
|
-
assert_equal :password_salt, Employee.password_salt_field
|
23
|
-
|
24
|
-
User.password_salt_field = :nope
|
25
|
-
assert_equal :nope, User.password_salt_field
|
26
|
-
User.password_salt_field :password_salt
|
27
|
-
assert_equal :password_salt, User.password_salt_field
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_ignore_blank_passwords_config
|
31
|
-
assert User.ignore_blank_passwords
|
32
|
-
assert Employee.ignore_blank_passwords
|
33
|
-
|
34
|
-
User.ignore_blank_passwords = false
|
35
|
-
refute User.ignore_blank_passwords
|
36
|
-
User.ignore_blank_passwords true
|
37
|
-
assert User.ignore_blank_passwords
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_check_passwords_against_database
|
41
|
-
assert User.check_passwords_against_database
|
42
|
-
User.check_passwords_against_database = false
|
43
|
-
refute User.check_passwords_against_database
|
44
|
-
User.check_passwords_against_database true
|
45
|
-
assert User.check_passwords_against_database
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_validate_password_field_config
|
49
|
-
assert User.validate_password_field
|
50
|
-
assert Employee.validate_password_field
|
51
|
-
|
52
|
-
User.validate_password_field = false
|
53
|
-
refute User.validate_password_field
|
54
|
-
User.validate_password_field true
|
55
|
-
assert User.validate_password_field
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_validates_length_of_password_field_options_config
|
59
|
-
default = { minimum: 8, if: :require_password? }
|
60
|
-
assert_equal default, User.validates_length_of_password_field_options
|
61
|
-
assert_equal default, Employee.validates_length_of_password_field_options
|
62
|
-
|
63
|
-
User.validates_length_of_password_field_options = { yes: "no" }
|
64
|
-
assert_equal({ yes: "no" }, User.validates_length_of_password_field_options)
|
65
|
-
User.validates_length_of_password_field_options default
|
66
|
-
assert_equal default, User.validates_length_of_password_field_options
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_validates_confirmation_of_password_field_options_config
|
70
|
-
default = { if: :require_password? }
|
71
|
-
assert_equal default, User.validates_confirmation_of_password_field_options
|
72
|
-
assert_equal default, Employee.validates_confirmation_of_password_field_options
|
73
|
-
|
74
|
-
User.validates_confirmation_of_password_field_options = { yes: "no" }
|
75
|
-
assert_equal({ yes: "no" }, User.validates_confirmation_of_password_field_options)
|
76
|
-
User.validates_confirmation_of_password_field_options default
|
77
|
-
assert_equal default, User.validates_confirmation_of_password_field_options
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_validates_length_of_password_confirmation_field_options_config
|
81
|
-
default = { minimum: 8, if: :require_password? }
|
82
|
-
assert_equal default, User.validates_length_of_password_confirmation_field_options
|
83
|
-
assert_equal default, Employee.validates_length_of_password_confirmation_field_options
|
84
|
-
|
85
|
-
User.validates_length_of_password_confirmation_field_options = { yes: "no" }
|
86
|
-
assert_equal({ yes: "no" }, User.validates_length_of_password_confirmation_field_options)
|
87
|
-
User.validates_length_of_password_confirmation_field_options default
|
88
|
-
assert_equal default, User.validates_length_of_password_confirmation_field_options
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_crypto_provider_config
|
92
|
-
assert_equal Authlogic::CryptoProviders::SCrypt, User.crypto_provider
|
93
|
-
assert_equal Authlogic::CryptoProviders::AES256, Employee.crypto_provider
|
94
|
-
|
95
|
-
User.crypto_provider = Authlogic::CryptoProviders::BCrypt
|
96
|
-
assert_equal Authlogic::CryptoProviders::BCrypt, User.crypto_provider
|
97
|
-
User.crypto_provider Authlogic::CryptoProviders::Sha512
|
98
|
-
assert_equal Authlogic::CryptoProviders::Sha512, User.crypto_provider
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_transition_from_crypto_providers_config
|
102
|
-
assert_equal [Authlogic::CryptoProviders::Sha512], User.transition_from_crypto_providers
|
103
|
-
assert_equal [], Employee.transition_from_crypto_providers
|
104
|
-
|
105
|
-
User.transition_from_crypto_providers = [Authlogic::CryptoProviders::BCrypt]
|
106
|
-
assert_equal [Authlogic::CryptoProviders::BCrypt], User.transition_from_crypto_providers
|
107
|
-
User.transition_from_crypto_providers []
|
108
|
-
assert_equal [], User.transition_from_crypto_providers
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_validates_length_of_password
|
112
|
-
u = User.new(
|
113
|
-
login: "abcde",
|
114
|
-
email: "abcde@test.com",
|
115
|
-
password: "abcdefgh",
|
116
|
-
password_confirmation: "abcdefgh"
|
117
|
-
)
|
118
|
-
assert u.valid?
|
119
|
-
|
120
|
-
u.password = u.password_confirmation = "abcdef"
|
121
|
-
refute u.valid?
|
122
|
-
|
123
|
-
assert u.errors[:password].include?("is too short (minimum is 8 characters)")
|
124
|
-
assert u.errors[:password_confirmation].include?("is too short (minimum is 8 characters)")
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_validates_confirmation_of_password
|
128
|
-
u = User.new(
|
129
|
-
login: "abcde",
|
130
|
-
email: "abcde@test.com",
|
131
|
-
password: "abcdefgh",
|
132
|
-
password_confirmation: "abcdefgh"
|
133
|
-
)
|
134
|
-
assert u.valid?
|
135
|
-
|
136
|
-
u.password_confirmation = "abcdefghij"
|
137
|
-
refute u.valid?
|
138
|
-
|
139
|
-
assert u.errors[:password_confirmation].include?("doesn't match Password")
|
140
|
-
end
|
141
|
-
|
142
|
-
def test_validates_length_of_password_confirmation
|
143
|
-
u = User.new
|
144
|
-
|
145
|
-
u.password = "testpass"
|
146
|
-
u.password_confirmation = ""
|
147
|
-
refute u.valid?
|
148
|
-
refute u.errors[:password_confirmation].empty?
|
149
|
-
|
150
|
-
u.password_confirmation = "testpass"
|
151
|
-
refute u.valid?
|
152
|
-
assert u.errors[:password_confirmation].empty?
|
153
|
-
|
154
|
-
ben = users(:ben)
|
155
|
-
assert ben.valid?
|
156
|
-
|
157
|
-
ben.password = "newpasswd"
|
158
|
-
refute ben.valid?
|
159
|
-
refute ben.errors[:password_confirmation].empty?
|
160
|
-
|
161
|
-
ben.password_confirmation = "newpasswd"
|
162
|
-
assert ben.valid?
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_password
|
166
|
-
u = User.new
|
167
|
-
old_password_salt = u.password_salt
|
168
|
-
old_crypted_password = u.crypted_password
|
169
|
-
u.password = "test"
|
170
|
-
assert_not_equal old_password_salt, u.password_salt
|
171
|
-
assert_not_equal old_crypted_password, u.crypted_password
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_transitioning_password
|
175
|
-
ben = users(:ben)
|
176
|
-
|
177
|
-
transition_password_to(Authlogic::CryptoProviders::BCrypt, ben)
|
178
|
-
transition_password_to(
|
179
|
-
Authlogic::CryptoProviders::Sha1,
|
180
|
-
ben,
|
181
|
-
[Authlogic::CryptoProviders::Sha512, Authlogic::CryptoProviders::BCrypt]
|
182
|
-
)
|
183
|
-
transition_password_to(
|
184
|
-
Authlogic::CryptoProviders::Sha512,
|
185
|
-
ben,
|
186
|
-
[Authlogic::CryptoProviders::Sha1, Authlogic::CryptoProviders::BCrypt]
|
187
|
-
)
|
188
|
-
end
|
189
|
-
|
190
|
-
def test_checks_password_against_database
|
191
|
-
ben = users(:aaron)
|
192
|
-
ben.password = "new pass"
|
193
|
-
refute ben.valid_password?("new pass")
|
194
|
-
assert ben.valid_password?("aaronrocks")
|
195
|
-
end
|
196
|
-
|
197
|
-
def test_checks_password_against_database_and_always_fails_on_new_records
|
198
|
-
user = User.new
|
199
|
-
user.password = "new pass"
|
200
|
-
refute user.valid_password?("new pass")
|
201
|
-
end
|
202
|
-
|
203
|
-
def test_checks_password_against_object
|
204
|
-
ben = users(:ben)
|
205
|
-
ben.password = "new pass"
|
206
|
-
assert ben.valid_password?("new pass", false)
|
207
|
-
refute ben.valid_password?("benrocks", false)
|
208
|
-
end
|
209
|
-
|
210
|
-
def test_reset_password
|
211
|
-
ben = users(:ben)
|
212
|
-
old_crypted_password = ben.crypted_password
|
213
|
-
old_password_salt = ben.password_salt
|
214
|
-
|
215
|
-
# soft reset
|
216
|
-
ben.reset_password
|
217
|
-
assert_not_equal old_crypted_password, ben.crypted_password
|
218
|
-
assert_not_equal old_password_salt, ben.password_salt
|
219
|
-
|
220
|
-
# make sure it didn't go into the db
|
221
|
-
ben.reload
|
222
|
-
assert_equal old_crypted_password, ben.crypted_password
|
223
|
-
assert_equal old_password_salt, ben.password_salt
|
224
|
-
|
225
|
-
# hard reset
|
226
|
-
assert ben.reset_password!
|
227
|
-
assert_not_equal old_crypted_password, ben.crypted_password
|
228
|
-
assert_not_equal old_password_salt, ben.password_salt
|
229
|
-
|
230
|
-
# make sure it did go into the db
|
231
|
-
ben.reload
|
232
|
-
assert_not_equal old_crypted_password, ben.crypted_password
|
233
|
-
assert_not_equal old_password_salt, ben.password_salt
|
234
|
-
end
|
235
|
-
|
236
|
-
private
|
237
|
-
|
238
|
-
def transition_password_to(
|
239
|
-
crypto_provider,
|
240
|
-
records,
|
241
|
-
from_crypto_providers = Authlogic::CryptoProviders::Sha512
|
242
|
-
)
|
243
|
-
records = [records] unless records.is_a?(Array)
|
244
|
-
User.acts_as_authentic do |c|
|
245
|
-
c.crypto_provider = crypto_provider
|
246
|
-
c.transition_from_crypto_providers = from_crypto_providers
|
247
|
-
end
|
248
|
-
records.each do |record|
|
249
|
-
old_hash = record.crypted_password
|
250
|
-
old_persistence_token = record.persistence_token
|
251
|
-
assert record.valid_password?(password_for(record))
|
252
|
-
assert_not_equal old_hash.to_s, record.crypted_password.to_s
|
253
|
-
assert_not_equal old_persistence_token.to_s, record.persistence_token.to_s
|
254
|
-
|
255
|
-
old_hash = record.crypted_password
|
256
|
-
old_persistence_token = record.persistence_token
|
257
|
-
assert record.valid_password?(password_for(record))
|
258
|
-
assert_equal old_hash.to_s, record.crypted_password.to_s
|
259
|
-
assert_equal old_persistence_token.to_s, record.persistence_token.to_s
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class PerishableTokenTest < ActiveSupport::TestCase
|
7
|
-
def test_perishable_token_valid_for_config
|
8
|
-
assert_equal 10.minutes.to_i, User.perishable_token_valid_for
|
9
|
-
assert_equal 10.minutes.to_i, Employee.perishable_token_valid_for
|
10
|
-
|
11
|
-
User.perishable_token_valid_for = 1.hour
|
12
|
-
assert_equal 1.hour.to_i, User.perishable_token_valid_for
|
13
|
-
User.perishable_token_valid_for 10.minutes
|
14
|
-
assert_equal 10.minutes.to_i, User.perishable_token_valid_for
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_disable_perishable_token_maintenance_config
|
18
|
-
refute User.disable_perishable_token_maintenance
|
19
|
-
refute Employee.disable_perishable_token_maintenance
|
20
|
-
|
21
|
-
User.disable_perishable_token_maintenance = true
|
22
|
-
assert User.disable_perishable_token_maintenance
|
23
|
-
User.disable_perishable_token_maintenance false
|
24
|
-
refute User.disable_perishable_token_maintenance
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_validates_uniqueness_of_perishable_token
|
28
|
-
u = User.new
|
29
|
-
u.perishable_token = users(:ben).perishable_token
|
30
|
-
refute u.valid?
|
31
|
-
refute u.errors[:perishable_token].empty?
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_before_save_reset_perishable_token
|
35
|
-
ben = users(:ben)
|
36
|
-
old_perishable_token = ben.perishable_token
|
37
|
-
assert ben.save
|
38
|
-
assert_not_equal old_perishable_token, ben.perishable_token
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_reset_perishable_token
|
42
|
-
ben = users(:ben)
|
43
|
-
old_perishable_token = ben.perishable_token
|
44
|
-
|
45
|
-
assert ben.reset_perishable_token
|
46
|
-
assert_not_equal old_perishable_token, ben.perishable_token
|
47
|
-
|
48
|
-
ben.reload
|
49
|
-
assert_equal old_perishable_token, ben.perishable_token
|
50
|
-
|
51
|
-
assert ben.reset_perishable_token!
|
52
|
-
assert_not_equal old_perishable_token, ben.perishable_token
|
53
|
-
|
54
|
-
ben.reload
|
55
|
-
assert_not_equal old_perishable_token, ben.perishable_token
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_find_using_perishable_token
|
59
|
-
ben = users(:ben)
|
60
|
-
assert_equal ben, User.find_using_perishable_token(ben.perishable_token)
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_find_using_perishable_token_when_perished
|
64
|
-
ben = users(:ben)
|
65
|
-
ActiveRecord::Base.connection.execute(
|
66
|
-
"UPDATE users set updated_at = '#{1.week.ago.to_s(:db)}' where id = #{ben.id}"
|
67
|
-
)
|
68
|
-
assert_nil User.find_using_perishable_token(ben.perishable_token)
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_find_using_perishable_token_when_perished_2
|
72
|
-
User.perishable_token_valid_for = 1.minute
|
73
|
-
ben = users(:ben)
|
74
|
-
ActiveRecord::Base.connection.execute(
|
75
|
-
"UPDATE users set updated_at = '#{2.minutes.ago.to_s(:db)}' where id = #{ben.id}"
|
76
|
-
)
|
77
|
-
assert_nil User.find_using_perishable_token(ben.perishable_token)
|
78
|
-
User.perishable_token_valid_for = 10.minutes
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_find_using_perishable_token_when_passing_threshold
|
82
|
-
User.perishable_token_valid_for = 1.minute
|
83
|
-
ben = users(:ben)
|
84
|
-
ActiveRecord::Base.connection.execute(
|
85
|
-
"UPDATE users set updated_at = '#{10.minutes.ago.to_s(:db)}' where id = #{ben.id}"
|
86
|
-
)
|
87
|
-
assert_nil User.find_using_perishable_token(ben.perishable_token, 5.minutes)
|
88
|
-
assert_equal ben, User.find_using_perishable_token(ben.perishable_token, 20.minutes)
|
89
|
-
User.perishable_token_valid_for = 10.minutes
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_find_perishable_token_with_bang
|
93
|
-
assert_raises ActiveRecord::RecordNotFound do
|
94
|
-
User.find_using_perishable_token!("some_bad_value")
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class PersistenceTokenTest < ActiveSupport::TestCase
|
7
|
-
def test_after_password_set_reset_persistence_token
|
8
|
-
ben = users(:ben)
|
9
|
-
old_persistence_token = ben.persistence_token
|
10
|
-
ben.password = "newpass"
|
11
|
-
assert_not_equal old_persistence_token, ben.persistence_token
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_after_password_verification_reset_persistence_token
|
15
|
-
aaron = users(:aaron)
|
16
|
-
old_persistence_token = aaron.persistence_token
|
17
|
-
|
18
|
-
assert aaron.valid_password?(password_for(aaron))
|
19
|
-
assert_equal old_persistence_token, aaron.reload.persistence_token
|
20
|
-
|
21
|
-
# only update it if it is nil
|
22
|
-
assert aaron.update_attribute(:persistence_token, nil)
|
23
|
-
assert aaron.valid_password?(password_for(aaron))
|
24
|
-
assert_not_equal old_persistence_token, aaron.persistence_token
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_before_validate_reset_persistence_token
|
28
|
-
u = User.new
|
29
|
-
refute u.valid?
|
30
|
-
assert_not_nil u.persistence_token
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_forget_all
|
34
|
-
UserSession.allow_http_basic_auth = true
|
35
|
-
|
36
|
-
http_basic_auth_for(users(:ben)) { UserSession.find }
|
37
|
-
http_basic_auth_for(users(:zack)) { UserSession.find(:ziggity_zack) }
|
38
|
-
assert UserSession.find
|
39
|
-
assert UserSession.find(:ziggity_zack)
|
40
|
-
User.forget_all
|
41
|
-
refute UserSession.find
|
42
|
-
refute UserSession.find(:ziggity_zack)
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_forget
|
46
|
-
UserSession.allow_http_basic_auth = true
|
47
|
-
|
48
|
-
ben = users(:ben)
|
49
|
-
zack = users(:zack)
|
50
|
-
http_basic_auth_for(ben) { UserSession.find }
|
51
|
-
http_basic_auth_for(zack) { UserSession.find(:ziggity_zack) }
|
52
|
-
|
53
|
-
assert ben.reload.logged_in?
|
54
|
-
assert zack.reload.logged_in?
|
55
|
-
|
56
|
-
ben.forget!
|
57
|
-
|
58
|
-
refute UserSession.find
|
59
|
-
assert UserSession.find(:ziggity_zack)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class RestfulAuthenticationTest < ActiveSupport::TestCase
|
7
|
-
def setup
|
8
|
-
@old_deprecation_behavior = ::ActiveSupport::Deprecation.behavior
|
9
|
-
::ActiveSupport::Deprecation.behavior = :silence
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
::ActiveSupport::Deprecation.behavior = @old_deprecation_behavior
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_act_like_restful_authentication_config
|
17
|
-
refute User.act_like_restful_authentication
|
18
|
-
refute Employee.act_like_restful_authentication
|
19
|
-
|
20
|
-
User.act_like_restful_authentication = true
|
21
|
-
assert User.act_like_restful_authentication
|
22
|
-
assert_equal Authlogic::CryptoProviders::Sha1, User.crypto_provider
|
23
|
-
assert defined?(::REST_AUTH_SITE_KEY)
|
24
|
-
assert_equal "", ::REST_AUTH_SITE_KEY
|
25
|
-
assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
|
26
|
-
|
27
|
-
User.act_like_restful_authentication false
|
28
|
-
refute User.act_like_restful_authentication
|
29
|
-
|
30
|
-
User.crypto_provider = Authlogic::CryptoProviders::Sha512
|
31
|
-
User.transition_from_crypto_providers = []
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_transition_from_restful_authentication_config
|
35
|
-
refute User.transition_from_restful_authentication
|
36
|
-
refute Employee.transition_from_restful_authentication
|
37
|
-
|
38
|
-
User.transition_from_restful_authentication = true
|
39
|
-
assert User.transition_from_restful_authentication
|
40
|
-
assert defined?(::REST_AUTH_SITE_KEY)
|
41
|
-
assert_equal "", ::REST_AUTH_SITE_KEY
|
42
|
-
assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
|
43
|
-
|
44
|
-
User.transition_from_restful_authentication false
|
45
|
-
refute User.transition_from_restful_authentication
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,150 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class SessionMaintenanceTest < ActiveSupport::TestCase
|
7
|
-
def setup
|
8
|
-
User.log_in_after_create = true
|
9
|
-
User.log_in_after_password_change = true
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_log_in_after_create_config
|
13
|
-
assert User.log_in_after_create
|
14
|
-
User.log_in_after_create = false
|
15
|
-
refute User.log_in_after_create
|
16
|
-
User.log_in_after_create = true
|
17
|
-
assert User.log_in_after_create
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_log_in_after_password_change_config
|
21
|
-
assert User.log_in_after_password_change
|
22
|
-
User.log_in_after_password_change = false
|
23
|
-
refute User.log_in_after_password_change
|
24
|
-
User.log_in_after_password_change = true
|
25
|
-
assert User.log_in_after_password_change
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_login_after_create
|
29
|
-
User.log_in_after_create = true
|
30
|
-
user = User.create(
|
31
|
-
login: "awesome",
|
32
|
-
password: "saweeeet",
|
33
|
-
password_confirmation: "saweeeet",
|
34
|
-
email: "awesome@awesome.com"
|
35
|
-
)
|
36
|
-
assert user.persisted?
|
37
|
-
assert UserSession.find
|
38
|
-
logged_in_user = UserSession.find.user
|
39
|
-
assert_equal logged_in_user, user
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_no_login_after_create
|
43
|
-
old_user = User.create(
|
44
|
-
login: "awesome",
|
45
|
-
password: "saweeeet",
|
46
|
-
password_confirmation: "saweeeet",
|
47
|
-
email: "awesome@awesome.com"
|
48
|
-
)
|
49
|
-
User.log_in_after_create = false
|
50
|
-
user2 = User.create(
|
51
|
-
login: "awesome2",
|
52
|
-
password: "saweeeet2",
|
53
|
-
password_confirmation: "saweeeet2",
|
54
|
-
email: "awesome2@awesome.com"
|
55
|
-
)
|
56
|
-
assert user2.persisted?
|
57
|
-
logged_in_user = UserSession.find.user
|
58
|
-
assert_not_equal logged_in_user, user2
|
59
|
-
assert_equal logged_in_user, old_user
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_updating_session_with_failed_magic_state
|
63
|
-
ben = users(:ben)
|
64
|
-
ben.confirmed = false
|
65
|
-
ben.password = "newpasswd"
|
66
|
-
ben.password_confirmation = "newpasswd"
|
67
|
-
assert ben.save
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_update_session_after_password_modify
|
71
|
-
User.log_in_after_password_change = true
|
72
|
-
ben = users(:ben)
|
73
|
-
UserSession.create(ben)
|
74
|
-
old_session_key = controller.session["user_credentials"]
|
75
|
-
old_cookie_key = controller.cookies["user_credentials"]
|
76
|
-
ben.password = "newpasswd"
|
77
|
-
ben.password_confirmation = "newpasswd"
|
78
|
-
assert ben.save
|
79
|
-
assert controller.session["user_credentials"]
|
80
|
-
assert controller.cookies["user_credentials"]
|
81
|
-
assert_not_equal controller.session["user_credentials"], old_session_key
|
82
|
-
assert_not_equal controller.cookies["user_credentials"], old_cookie_key
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_no_update_session_after_password_modify
|
86
|
-
User.log_in_after_password_change = false
|
87
|
-
ben = users(:ben)
|
88
|
-
UserSession.create(ben)
|
89
|
-
old_session_key = controller.session["user_credentials"]
|
90
|
-
old_cookie_key = controller.cookies["user_credentials"]
|
91
|
-
ben.password = "newpasswd"
|
92
|
-
ben.password_confirmation = "newpasswd"
|
93
|
-
assert ben.save
|
94
|
-
assert controller.session["user_credentials"]
|
95
|
-
assert controller.cookies["user_credentials"]
|
96
|
-
assert_equal controller.session["user_credentials"], old_session_key
|
97
|
-
assert_equal controller.cookies["user_credentials"], old_cookie_key
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_no_session_update_after_modify
|
101
|
-
ben = users(:ben)
|
102
|
-
UserSession.create(ben)
|
103
|
-
old_session_key = controller.session["user_credentials"]
|
104
|
-
old_cookie_key = controller.cookies["user_credentials"]
|
105
|
-
ben.first_name = "Ben"
|
106
|
-
assert ben.save
|
107
|
-
assert_equal controller.session["user_credentials"], old_session_key
|
108
|
-
assert_equal controller.cookies["user_credentials"], old_cookie_key
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_creating_other_user
|
112
|
-
ben = users(:ben)
|
113
|
-
UserSession.create(ben)
|
114
|
-
old_session_key = controller.session["user_credentials"]
|
115
|
-
old_cookie_key = controller.cookies["user_credentials"]
|
116
|
-
user = User.create(
|
117
|
-
login: "awesome",
|
118
|
-
password: "saweet", # Password is too short, user invalid
|
119
|
-
password_confirmation: "saweet",
|
120
|
-
email: "awesome@saweet.com"
|
121
|
-
)
|
122
|
-
refute user.persisted?
|
123
|
-
assert_equal controller.session["user_credentials"], old_session_key
|
124
|
-
assert_equal controller.cookies["user_credentials"], old_cookie_key
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_updating_other_user
|
128
|
-
ben = users(:ben)
|
129
|
-
UserSession.create(ben)
|
130
|
-
old_session_key = controller.session["user_credentials"]
|
131
|
-
old_cookie_key = controller.cookies["user_credentials"]
|
132
|
-
zack = users(:zack)
|
133
|
-
zack.password = "newpasswd"
|
134
|
-
zack.password_confirmation = "newpasswd"
|
135
|
-
assert zack.save
|
136
|
-
assert_equal controller.session["user_credentials"], old_session_key
|
137
|
-
assert_equal controller.cookies["user_credentials"], old_cookie_key
|
138
|
-
end
|
139
|
-
|
140
|
-
def test_resetting_password_when_logged_out
|
141
|
-
ben = users(:ben)
|
142
|
-
refute UserSession.find
|
143
|
-
ben.password = "newpasswd"
|
144
|
-
ben.password_confirmation = "newpasswd"
|
145
|
-
assert ben.save
|
146
|
-
assert UserSession.find
|
147
|
-
assert_equal ben, UserSession.find.record
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module ActsAsAuthenticTest
|
6
|
-
class SingleAccessTest < ActiveSupport::TestCase
|
7
|
-
def test_change_single_access_token_with_password_config
|
8
|
-
refute User.change_single_access_token_with_password
|
9
|
-
refute Employee.change_single_access_token_with_password
|
10
|
-
|
11
|
-
User.change_single_access_token_with_password = true
|
12
|
-
assert User.change_single_access_token_with_password
|
13
|
-
User.change_single_access_token_with_password false
|
14
|
-
refute User.change_single_access_token_with_password
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_validates_uniqueness_of_single_access_token
|
18
|
-
u = User.new
|
19
|
-
u.single_access_token = users(:ben).single_access_token
|
20
|
-
refute u.valid?
|
21
|
-
refute u.errors[:single_access_token].empty?
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_before_validation_reset_single_access_token
|
25
|
-
u = User.new
|
26
|
-
refute u.valid?
|
27
|
-
assert_not_nil u.single_access_token
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_after_password_set_reset_single_access_token
|
31
|
-
User.change_single_access_token_with_password = true
|
32
|
-
|
33
|
-
ben = users(:ben)
|
34
|
-
old_single_access_token = ben.single_access_token
|
35
|
-
ben.password = "new_pass"
|
36
|
-
assert_not_equal old_single_access_token, ben.single_access_token
|
37
|
-
|
38
|
-
User.change_single_access_token_with_password = false
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_after_password_set_is_not_called
|
42
|
-
ldaper = Ldaper.new
|
43
|
-
assert ldaper.save
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/test/adapter_test.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "test_helper"
|
4
|
-
|
5
|
-
module Authlogic
|
6
|
-
module ControllerAdapters
|
7
|
-
class AbstractAdapterTest < ActiveSupport::TestCase
|
8
|
-
def test_controller
|
9
|
-
controller = Class.new(MockController) do
|
10
|
-
def controller.an_arbitrary_method
|
11
|
-
"bar"
|
12
|
-
end
|
13
|
-
end.new
|
14
|
-
adapter = Authlogic::ControllerAdapters::AbstractAdapter.new(controller)
|
15
|
-
|
16
|
-
assert_equal controller, adapter.controller
|
17
|
-
assert controller.params.equal?(adapter.params)
|
18
|
-
assert adapter.respond_to?(:an_arbitrary_method)
|
19
|
-
assert_equal "bar", adapter.an_arbitrary_method
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|