authlogic 3.8.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/lib/authlogic/acts_as_authentic/base.rb +33 -36
  3. data/lib/authlogic/acts_as_authentic/email.rb +8 -141
  4. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +17 -10
  5. data/lib/authlogic/acts_as_authentic/login.rb +14 -165
  6. data/lib/authlogic/acts_as_authentic/magic_columns.rb +13 -10
  7. data/lib/authlogic/acts_as_authentic/password.rb +186 -254
  8. data/lib/authlogic/acts_as_authentic/perishable_token.rb +30 -22
  9. data/lib/authlogic/acts_as_authentic/persistence_token.rb +19 -18
  10. data/lib/authlogic/acts_as_authentic/queries/case_sensitivity.rb +53 -0
  11. data/lib/authlogic/acts_as_authentic/queries/find_with_case.rb +83 -0
  12. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +94 -62
  13. data/lib/authlogic/acts_as_authentic/single_access_token.rb +28 -14
  14. data/lib/authlogic/config.rb +29 -10
  15. data/lib/authlogic/controller_adapters/abstract_adapter.rb +43 -13
  16. data/lib/authlogic/controller_adapters/rack_adapter.rb +11 -5
  17. data/lib/authlogic/controller_adapters/rails_adapter.rb +11 -29
  18. data/lib/authlogic/controller_adapters/sinatra_adapter.rb +8 -2
  19. data/lib/authlogic/cookie_credentials.rb +63 -0
  20. data/lib/authlogic/crypto_providers/bcrypt.rb +24 -18
  21. data/lib/authlogic/crypto_providers/md5/v2.rb +35 -0
  22. data/lib/authlogic/crypto_providers/md5.rb +8 -6
  23. data/lib/authlogic/crypto_providers/scrypt.rb +24 -17
  24. data/lib/authlogic/crypto_providers/sha1/v2.rb +41 -0
  25. data/lib/authlogic/crypto_providers/sha1.rb +12 -5
  26. data/lib/authlogic/crypto_providers/sha256/v2.rb +58 -0
  27. data/lib/authlogic/crypto_providers/sha256.rb +18 -9
  28. data/lib/authlogic/crypto_providers/sha512/v2.rb +39 -0
  29. data/lib/authlogic/crypto_providers/sha512.rb +9 -26
  30. data/lib/authlogic/crypto_providers.rb +77 -1
  31. data/lib/authlogic/errors.rb +35 -0
  32. data/lib/authlogic/i18n/translator.rb +4 -1
  33. data/lib/authlogic/i18n.rb +29 -20
  34. data/lib/authlogic/random.rb +12 -28
  35. data/lib/authlogic/session/base.rb +2087 -33
  36. data/lib/authlogic/session/magic_column/assigns_last_request_at.rb +46 -0
  37. data/lib/authlogic/test_case/mock_controller.rb +7 -4
  38. data/lib/authlogic/test_case/mock_cookie_jar.rb +19 -3
  39. data/lib/authlogic/test_case/mock_logger.rb +2 -0
  40. data/lib/authlogic/test_case/mock_request.rb +8 -3
  41. data/lib/authlogic/test_case/rails_request_adapter.rb +5 -2
  42. data/lib/authlogic/test_case.rb +74 -2
  43. data/lib/authlogic/version.rb +22 -0
  44. data/lib/authlogic.rb +33 -54
  45. metadata +208 -234
  46. data/.github/ISSUE_TEMPLATE.md +0 -13
  47. data/.gitignore +0 -14
  48. data/.rubocop.yml +0 -33
  49. data/.rubocop_todo.yml +0 -391
  50. data/.travis.yml +0 -48
  51. data/CHANGELOG.md +0 -5
  52. data/CONTRIBUTING.md +0 -60
  53. data/Gemfile +0 -5
  54. data/LICENSE +0 -20
  55. data/README.md +0 -294
  56. data/Rakefile +0 -21
  57. data/authlogic.gemspec +0 -27
  58. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +0 -70
  59. data/lib/authlogic/acts_as_authentic/validations_scope.rb +0 -32
  60. data/lib/authlogic/authenticates_many/association.rb +0 -50
  61. data/lib/authlogic/authenticates_many/base.rb +0 -65
  62. data/lib/authlogic/crypto_providers/aes256.rb +0 -66
  63. data/lib/authlogic/crypto_providers/wordpress.rb +0 -43
  64. data/lib/authlogic/regex.rb +0 -48
  65. data/lib/authlogic/session/activation.rb +0 -70
  66. data/lib/authlogic/session/active_record_trickery.rb +0 -61
  67. data/lib/authlogic/session/brute_force_protection.rb +0 -120
  68. data/lib/authlogic/session/callbacks.rb +0 -105
  69. data/lib/authlogic/session/cookies.rb +0 -244
  70. data/lib/authlogic/session/existence.rb +0 -93
  71. data/lib/authlogic/session/foundation.rb +0 -55
  72. data/lib/authlogic/session/http_auth.rb +0 -100
  73. data/lib/authlogic/session/id.rb +0 -48
  74. data/lib/authlogic/session/klass.rb +0 -70
  75. data/lib/authlogic/session/magic_columns.rb +0 -116
  76. data/lib/authlogic/session/magic_states.rb +0 -76
  77. data/lib/authlogic/session/params.rb +0 -116
  78. data/lib/authlogic/session/password.rb +0 -308
  79. data/lib/authlogic/session/perishable_token.rb +0 -23
  80. data/lib/authlogic/session/persistence.rb +0 -71
  81. data/lib/authlogic/session/priority_record.rb +0 -35
  82. data/lib/authlogic/session/scopes.rb +0 -119
  83. data/lib/authlogic/session/session.rb +0 -67
  84. data/lib/authlogic/session/timeout.rb +0 -103
  85. data/lib/authlogic/session/unauthorized_record.rb +0 -51
  86. data/lib/authlogic/session/validation.rb +0 -93
  87. data/test/acts_as_authentic_test/base_test.rb +0 -25
  88. data/test/acts_as_authentic_test/email_test.rb +0 -240
  89. data/test/acts_as_authentic_test/logged_in_status_test.rb +0 -62
  90. data/test/acts_as_authentic_test/login_test.rb +0 -156
  91. data/test/acts_as_authentic_test/magic_columns_test.rb +0 -27
  92. data/test/acts_as_authentic_test/password_test.rb +0 -249
  93. data/test/acts_as_authentic_test/perishable_token_test.rb +0 -90
  94. data/test/acts_as_authentic_test/persistence_token_test.rb +0 -56
  95. data/test/acts_as_authentic_test/restful_authentication_test.rb +0 -37
  96. data/test/acts_as_authentic_test/session_maintenance_test.rb +0 -96
  97. data/test/acts_as_authentic_test/single_access_test.rb +0 -44
  98. data/test/authenticates_many_test.rb +0 -31
  99. data/test/config_test.rb +0 -36
  100. data/test/crypto_provider_test/aes256_test.rb +0 -14
  101. data/test/crypto_provider_test/bcrypt_test.rb +0 -14
  102. data/test/crypto_provider_test/scrypt_test.rb +0 -14
  103. data/test/crypto_provider_test/sha1_test.rb +0 -23
  104. data/test/crypto_provider_test/sha256_test.rb +0 -14
  105. data/test/crypto_provider_test/sha512_test.rb +0 -14
  106. data/test/fixtures/companies.yml +0 -5
  107. data/test/fixtures/employees.yml +0 -17
  108. data/test/fixtures/projects.yml +0 -3
  109. data/test/fixtures/users.yml +0 -41
  110. data/test/gemfiles/Gemfile.rails-3.2.x +0 -7
  111. data/test/gemfiles/Gemfile.rails-4.0.x +0 -7
  112. data/test/gemfiles/Gemfile.rails-4.1.x +0 -7
  113. data/test/gemfiles/Gemfile.rails-4.2.x +0 -7
  114. data/test/gemfiles/Gemfile.rails-5.0.x +0 -6
  115. data/test/gemfiles/Gemfile.rails-5.1.x +0 -6
  116. data/test/gemfiles/Gemfile.rails-5.2.x +0 -6
  117. data/test/i18n/lol.yml +0 -4
  118. data/test/i18n_test.rb +0 -33
  119. data/test/libs/affiliate.rb +0 -7
  120. data/test/libs/company.rb +0 -6
  121. data/test/libs/employee.rb +0 -7
  122. data/test/libs/employee_session.rb +0 -2
  123. data/test/libs/ldaper.rb +0 -3
  124. data/test/libs/project.rb +0 -3
  125. data/test/libs/user.rb +0 -7
  126. data/test/libs/user_session.rb +0 -25
  127. data/test/random_test.rb +0 -43
  128. data/test/session_test/activation_test.rb +0 -43
  129. data/test/session_test/active_record_trickery_test.rb +0 -75
  130. data/test/session_test/brute_force_protection_test.rb +0 -108
  131. data/test/session_test/callbacks_test.rb +0 -34
  132. data/test/session_test/cookies_test.rb +0 -201
  133. data/test/session_test/credentials_test.rb +0 -0
  134. data/test/session_test/existence_test.rb +0 -75
  135. data/test/session_test/foundation_test.rb +0 -6
  136. data/test/session_test/http_auth_test.rb +0 -56
  137. data/test/session_test/id_test.rb +0 -17
  138. data/test/session_test/klass_test.rb +0 -40
  139. data/test/session_test/magic_columns_test.rb +0 -62
  140. data/test/session_test/magic_states_test.rb +0 -58
  141. data/test/session_test/params_test.rb +0 -53
  142. data/test/session_test/password_test.rb +0 -105
  143. data/test/session_test/perishability_test.rb +0 -15
  144. data/test/session_test/persistence_test.rb +0 -32
  145. data/test/session_test/scopes_test.rb +0 -60
  146. data/test/session_test/session_test.rb +0 -78
  147. data/test/session_test/timeout_test.rb +0 -82
  148. data/test/session_test/unauthorized_record_test.rb +0 -13
  149. data/test/session_test/validation_test.rb +0 -23
  150. data/test/test_helper.rb +0 -233
@@ -1,156 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class LoginTest < ActiveSupport::TestCase
5
- def test_login_field_config
6
- assert_equal :login, User.login_field
7
- assert_nil Employee.login_field
8
-
9
- User.login_field = :nope
10
- assert_equal :nope, User.login_field
11
- User.login_field :login
12
- assert_equal :login, User.login_field
13
- end
14
-
15
- def test_validate_login_field_config
16
- assert User.validate_login_field
17
- assert Employee.validate_login_field
18
-
19
- User.validate_login_field = false
20
- refute User.validate_login_field
21
- User.validate_login_field true
22
- assert User.validate_login_field
23
- end
24
-
25
- def test_validates_length_of_login_field_options_config
26
- assert_equal({ :within => 3..100 }, User.validates_length_of_login_field_options)
27
- assert_equal({ :within => 3..100 }, Employee.validates_length_of_login_field_options)
28
-
29
- User.validates_length_of_login_field_options = { :yes => "no" }
30
- assert_equal({ :yes => "no" }, User.validates_length_of_login_field_options)
31
- User.validates_length_of_login_field_options({ :within => 3..100 })
32
- assert_equal({ :within => 3..100 }, User.validates_length_of_login_field_options)
33
- end
34
-
35
- def test_validates_format_of_login_field_options_config
36
- default = {
37
- :with => /\A[a-zA-Z0-9_][a-zA-Z0-9\.+\-_@ ]+\z/,
38
- :message => proc do
39
- I18n.t(
40
- 'error_messages.login_invalid',
41
- :default => "should use only letters, numbers, spaces, and .-_@+ please."
42
- )
43
- end
44
- }
45
- default_message = default.delete(:message).call
46
-
47
- options = User.validates_format_of_login_field_options
48
- message = options.delete(:message)
49
- assert message.is_a?(Proc)
50
- assert_equal default_message, message.call
51
- assert_equal default, options
52
-
53
- options = Employee.validates_format_of_login_field_options
54
- message = options.delete(:message)
55
- assert message.is_a?(Proc)
56
- assert_equal default_message, message.call
57
- assert_equal default, options
58
-
59
- User.validates_format_of_login_field_options = { :yes => "no" }
60
- assert_equal({ :yes => "no" }, User.validates_format_of_login_field_options)
61
- User.validates_format_of_login_field_options default
62
- assert_equal default, User.validates_format_of_login_field_options
63
- end
64
-
65
- def test_validates_uniqueness_of_login_field_options_config
66
- default = { :case_sensitive => false, :scope => User.validations_scope, :if => "#{User.login_field}_changed?".to_sym }
67
- assert_equal default, User.validates_uniqueness_of_login_field_options
68
-
69
- User.validates_uniqueness_of_login_field_options = { :yes => "no" }
70
- assert_equal({ :yes => "no" }, User.validates_uniqueness_of_login_field_options)
71
- User.validates_uniqueness_of_login_field_options default
72
- assert_equal default, User.validates_uniqueness_of_login_field_options
73
- end
74
-
75
- def test_validates_length_of_login_field
76
- u = User.new
77
- u.login = "a"
78
- refute u.valid?
79
- refute u.errors[:login].empty?
80
-
81
- u.login = "aaaaaaaaaa"
82
- refute u.valid?
83
- assert u.errors[:login].empty?
84
- end
85
-
86
- def test_validates_format_of_login_field
87
- u = User.new
88
- u.login = "fdsf@^&*"
89
- refute u.valid?
90
- refute u.errors[:login].empty?
91
-
92
- u.login = "fdsfdsfdsfdsfs"
93
- refute u.valid?
94
- assert u.errors[:login].empty?
95
-
96
- u.login = "dakota.dux+1@gmail.com"
97
- refute u.valid?
98
- assert u.errors[:login].empty?
99
-
100
- u.login = "marks .-_@+"
101
- refute u.valid?
102
- assert u.errors[:login].empty?
103
-
104
- u.login = " space"
105
- refute u.valid?
106
- refute u.errors[:login].empty?
107
-
108
- u.login = ".dot"
109
- refute u.valid?
110
- refute u.errors[:login].empty?
111
-
112
- u.login = "-hyphen"
113
- refute u.valid?
114
- refute u.errors[:login].empty?
115
-
116
- u.login = "_underscore"
117
- refute u.valid?
118
- assert u.errors[:login].empty?
119
-
120
- u.login = "@atmark"
121
- refute u.valid?
122
- refute u.errors[:login].empty?
123
-
124
- u.login = "+plus"
125
- refute u.valid?
126
- refute u.errors[:login].empty?
127
- end
128
-
129
- def test_validates_uniqueness_of_login_field
130
- u = User.new
131
- u.login = "bjohnson"
132
- refute u.valid?
133
- refute u.errors[:login].empty?
134
-
135
- u.login = "BJOHNSON"
136
- refute u.valid?
137
- refute u.errors[:login].empty?
138
-
139
- u.login = "fdsfdsf"
140
- refute u.valid?
141
- assert u.errors[:login].empty?
142
- end
143
-
144
- def test_find_by_smart_case_login_field
145
- ben = users(:ben)
146
- assert_equal ben, User.find_by_smart_case_login_field("bjohnson")
147
- assert_equal ben, User.find_by_smart_case_login_field("BJOHNSON")
148
- assert_equal ben, User.find_by_smart_case_login_field("Bjohnson")
149
-
150
- drew = employees(:drew)
151
- assert_equal drew, Employee.find_by_smart_case_login_field("dgainor@binarylogic.com")
152
- assert_equal drew, Employee.find_by_smart_case_login_field("Dgainor@binarylogic.com")
153
- assert_equal drew, Employee.find_by_smart_case_login_field("DGAINOR@BINARYLOGIC.COM")
154
- end
155
- end
156
- end
@@ -1,27 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class MagicColumnsTest < ActiveSupport::TestCase
5
- def test_validates_numericality_of_login_count
6
- u = User.new
7
- u.login_count = -1
8
- refute u.valid?
9
- refute u.errors[:login_count].empty?
10
-
11
- u.login_count = 0
12
- refute u.valid?
13
- assert u.errors[:login_count].empty?
14
- end
15
-
16
- def test_validates_numericality_of_failed_login_count
17
- u = User.new
18
- u.failed_login_count = -1
19
- refute u.valid?
20
- refute u.errors[:failed_login_count].empty?
21
-
22
- u.failed_login_count = 0
23
- refute u.valid?
24
- assert u.errors[:failed_login_count].empty?
25
- end
26
- end
27
- end
@@ -1,249 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class PasswordTest < ActiveSupport::TestCase
5
- i_suck_and_my_tests_are_order_dependent! # If test_human_name is executed after test_i18n_of_human_name the test will fail.
6
- def test_crypted_password_field_config
7
- assert_equal :crypted_password, User.crypted_password_field
8
- assert_equal :crypted_password, Employee.crypted_password_field
9
-
10
- User.crypted_password_field = :nope
11
- assert_equal :nope, User.crypted_password_field
12
- User.crypted_password_field :crypted_password
13
- assert_equal :crypted_password, User.crypted_password_field
14
- end
15
-
16
- def test_password_salt_field_config
17
- assert_equal :password_salt, User.password_salt_field
18
- assert_equal :password_salt, Employee.password_salt_field
19
-
20
- User.password_salt_field = :nope
21
- assert_equal :nope, User.password_salt_field
22
- User.password_salt_field :password_salt
23
- assert_equal :password_salt, User.password_salt_field
24
- end
25
-
26
- def test_ignore_blank_passwords_config
27
- assert User.ignore_blank_passwords
28
- assert Employee.ignore_blank_passwords
29
-
30
- User.ignore_blank_passwords = false
31
- refute User.ignore_blank_passwords
32
- User.ignore_blank_passwords true
33
- assert User.ignore_blank_passwords
34
- end
35
-
36
- def test_check_passwords_against_database
37
- assert User.check_passwords_against_database
38
- User.check_passwords_against_database = false
39
- refute User.check_passwords_against_database
40
- User.check_passwords_against_database true
41
- assert User.check_passwords_against_database
42
- end
43
-
44
- def test_validate_password_field_config
45
- assert User.validate_password_field
46
- assert Employee.validate_password_field
47
-
48
- User.validate_password_field = false
49
- refute User.validate_password_field
50
- User.validate_password_field true
51
- assert User.validate_password_field
52
- end
53
-
54
- def test_validates_length_of_password_field_options_config
55
- default = { :minimum => 8, :if => :require_password? }
56
- assert_equal default, User.validates_length_of_password_field_options
57
- assert_equal default, Employee.validates_length_of_password_field_options
58
-
59
- User.validates_length_of_password_field_options = { :yes => "no" }
60
- assert_equal({ :yes => "no" }, User.validates_length_of_password_field_options)
61
- User.validates_length_of_password_field_options default
62
- assert_equal default, User.validates_length_of_password_field_options
63
- end
64
-
65
- def test_validates_confirmation_of_password_field_options_config
66
- default = { :if => :require_password? }
67
- assert_equal default, User.validates_confirmation_of_password_field_options
68
- assert_equal default, Employee.validates_confirmation_of_password_field_options
69
-
70
- User.validates_confirmation_of_password_field_options = { :yes => "no" }
71
- assert_equal({ :yes => "no" }, User.validates_confirmation_of_password_field_options)
72
- User.validates_confirmation_of_password_field_options default
73
- assert_equal default, User.validates_confirmation_of_password_field_options
74
- end
75
-
76
- def test_validates_length_of_password_confirmation_field_options_config
77
- default = { :minimum => 8, :if => :require_password? }
78
- assert_equal default, User.validates_length_of_password_confirmation_field_options
79
- assert_equal default, Employee.validates_length_of_password_confirmation_field_options
80
-
81
- User.validates_length_of_password_confirmation_field_options = { :yes => "no" }
82
- assert_equal({ :yes => "no" }, User.validates_length_of_password_confirmation_field_options)
83
- User.validates_length_of_password_confirmation_field_options default
84
- assert_equal default, User.validates_length_of_password_confirmation_field_options
85
- end
86
-
87
- def test_crypto_provider_config
88
- assert_equal Authlogic::CryptoProviders::SCrypt, User.crypto_provider
89
- assert_equal Authlogic::CryptoProviders::AES256, Employee.crypto_provider
90
-
91
- User.crypto_provider = Authlogic::CryptoProviders::BCrypt
92
- assert_equal Authlogic::CryptoProviders::BCrypt, User.crypto_provider
93
- User.crypto_provider Authlogic::CryptoProviders::Sha512
94
- assert_equal Authlogic::CryptoProviders::Sha512, User.crypto_provider
95
- end
96
-
97
- def test_transition_from_crypto_providers_config
98
- assert_equal [Authlogic::CryptoProviders::Sha512], User.transition_from_crypto_providers
99
- assert_equal [], Employee.transition_from_crypto_providers
100
-
101
- User.transition_from_crypto_providers = [Authlogic::CryptoProviders::BCrypt]
102
- assert_equal [Authlogic::CryptoProviders::BCrypt], User.transition_from_crypto_providers
103
- User.transition_from_crypto_providers []
104
- assert_equal [], User.transition_from_crypto_providers
105
- end
106
-
107
- def test_validates_length_of_password
108
- u = User.new(login: "abcde", email: "abcde@test.com", password: "abcdefgh", password_confirmation: "abcdefgh")
109
- assert u.valid?
110
-
111
- u.password = u.password_confirmation = "abcdef"
112
- refute u.valid?
113
-
114
- assert u.errors[:password].include?("is too short (minimum is 8 characters)")
115
- assert u.errors[:password_confirmation].include?("is too short (minimum is 8 characters)")
116
- end
117
-
118
- def test_validates_confirmation_of_password
119
- u = User.new(login: "abcde", email: "abcde@test.com", password: "abcdefgh", password_confirmation: "abcdefgh")
120
- assert u.valid?
121
-
122
- u.password_confirmation = "abcdefghij"
123
- refute u.valid?
124
-
125
- if ActiveModel.respond_to?(:version) and ActiveModel.version.segments.first >= 4
126
- assert u.errors[:password_confirmation].include?("doesn't match Password")
127
- else
128
- assert u.errors[:password].include?("doesn't match confirmation")
129
- end
130
- end
131
-
132
- def test_validates_length_of_password_confirmation
133
- u = User.new
134
-
135
- u.password = "testpass"
136
- u.password_confirmation = ""
137
- refute u.valid?
138
- refute u.errors[:password_confirmation].empty?
139
-
140
- u.password_confirmation = "testpass"
141
- refute u.valid?
142
- assert u.errors[:password_confirmation].empty?
143
-
144
- ben = users(:ben)
145
- assert ben.valid?
146
-
147
- ben.password = "newpasswd"
148
- refute ben.valid?
149
- refute ben.errors[:password_confirmation].empty?
150
-
151
- ben.password_confirmation = "newpasswd"
152
- assert ben.valid?
153
- end
154
-
155
- def test_password
156
- u = User.new
157
- old_password_salt = u.password_salt
158
- old_crypted_password = u.crypted_password
159
- u.password = "test"
160
- assert_not_equal old_password_salt, u.password_salt
161
- assert_not_equal old_crypted_password, u.crypted_password
162
- end
163
-
164
- def test_transitioning_password
165
- ben = users(:ben)
166
-
167
- transition_password_to(Authlogic::CryptoProviders::BCrypt, ben)
168
- transition_password_to(
169
- Authlogic::CryptoProviders::Sha1,
170
- ben,
171
- [Authlogic::CryptoProviders::Sha512, Authlogic::CryptoProviders::BCrypt]
172
- )
173
- transition_password_to(
174
- Authlogic::CryptoProviders::Sha512,
175
- ben,
176
- [Authlogic::CryptoProviders::Sha1, Authlogic::CryptoProviders::BCrypt]
177
- )
178
- end
179
-
180
- def test_checks_password_against_database
181
- ben = users(:aaron)
182
- ben.password = "new pass"
183
- refute ben.valid_password?("new pass")
184
- assert ben.valid_password?("aaronrocks")
185
- end
186
-
187
- def test_checks_password_against_database_and_always_fails_on_new_records
188
- user = User.new
189
- user.password = "new pass"
190
- refute user.valid_password?("new pass")
191
- end
192
-
193
- def test_checks_password_against_object
194
- ben = users(:ben)
195
- ben.password = "new pass"
196
- assert ben.valid_password?("new pass", false)
197
- refute ben.valid_password?("benrocks", false)
198
- end
199
-
200
- def test_reset_password
201
- ben = users(:ben)
202
- old_crypted_password = ben.crypted_password
203
- old_password_salt = ben.password_salt
204
-
205
- # soft reset
206
- ben.reset_password
207
- assert_not_equal old_crypted_password, ben.crypted_password
208
- assert_not_equal old_password_salt, ben.password_salt
209
-
210
- # make sure it didn't go into the db
211
- ben.reload
212
- assert_equal old_crypted_password, ben.crypted_password
213
- assert_equal old_password_salt, ben.password_salt
214
-
215
- # hard reset
216
- assert 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 did go into the db
221
- ben.reload
222
- assert_not_equal old_crypted_password, ben.crypted_password
223
- assert_not_equal old_password_salt, ben.password_salt
224
- end
225
-
226
- private
227
-
228
- def transition_password_to(crypto_provider, records, from_crypto_providers = Authlogic::CryptoProviders::Sha512)
229
- records = [records] unless records.is_a?(Array)
230
- User.acts_as_authentic do |c|
231
- c.crypto_provider = crypto_provider
232
- c.transition_from_crypto_providers = from_crypto_providers
233
- end
234
- records.each do |record|
235
- old_hash = record.crypted_password
236
- old_persistence_token = record.persistence_token
237
- assert record.valid_password?(password_for(record))
238
- assert_not_equal old_hash.to_s, record.crypted_password.to_s
239
- assert_not_equal old_persistence_token.to_s, record.persistence_token.to_s
240
-
241
- old_hash = record.crypted_password
242
- old_persistence_token = record.persistence_token
243
- assert record.valid_password?(password_for(record))
244
- assert_equal old_hash.to_s, record.crypted_password.to_s
245
- assert_equal old_persistence_token.to_s, record.persistence_token.to_s
246
- end
247
- end
248
- end
249
- end
@@ -1,90 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class PerishableTokenTest < ActiveSupport::TestCase
5
- def test_perishable_token_valid_for_config
6
- assert_equal 10.minutes.to_i, User.perishable_token_valid_for
7
- assert_equal 10.minutes.to_i, Employee.perishable_token_valid_for
8
-
9
- User.perishable_token_valid_for = 1.hour
10
- assert_equal 1.hour.to_i, User.perishable_token_valid_for
11
- User.perishable_token_valid_for 10.minutes
12
- assert_equal 10.minutes.to_i, User.perishable_token_valid_for
13
- end
14
-
15
- def test_disable_perishable_token_maintenance_config
16
- refute User.disable_perishable_token_maintenance
17
- refute Employee.disable_perishable_token_maintenance
18
-
19
- User.disable_perishable_token_maintenance = true
20
- assert User.disable_perishable_token_maintenance
21
- User.disable_perishable_token_maintenance false
22
- refute User.disable_perishable_token_maintenance
23
- end
24
-
25
- def test_validates_uniqueness_of_perishable_token
26
- u = User.new
27
- u.perishable_token = users(:ben).perishable_token
28
- refute u.valid?
29
- refute u.errors[:perishable_token].empty?
30
- end
31
-
32
- def test_before_save_reset_perishable_token
33
- ben = users(:ben)
34
- old_perishable_token = ben.perishable_token
35
- assert ben.save
36
- assert_not_equal old_perishable_token, ben.perishable_token
37
- end
38
-
39
- def test_reset_perishable_token
40
- ben = users(:ben)
41
- old_perishable_token = ben.perishable_token
42
-
43
- assert ben.reset_perishable_token
44
- assert_not_equal old_perishable_token, ben.perishable_token
45
-
46
- ben.reload
47
- assert_equal old_perishable_token, ben.perishable_token
48
-
49
- assert ben.reset_perishable_token!
50
- assert_not_equal old_perishable_token, ben.perishable_token
51
-
52
- ben.reload
53
- assert_not_equal old_perishable_token, ben.perishable_token
54
- end
55
-
56
- def test_find_using_perishable_token
57
- ben = users(:ben)
58
- assert_equal ben, User.find_using_perishable_token(ben.perishable_token)
59
- end
60
-
61
- def test_find_using_perishable_token_when_perished
62
- ben = users(:ben)
63
- ActiveRecord::Base.connection.execute("UPDATE users set updated_at = '#{1.week.ago.to_s(:db)}' where id = #{ben.id}")
64
- assert_nil User.find_using_perishable_token(ben.perishable_token)
65
- end
66
-
67
- def test_find_using_perishable_token_when_perished_2
68
- User.perishable_token_valid_for = 1.minute
69
- ben = users(:ben)
70
- ActiveRecord::Base.connection.execute("UPDATE users set updated_at = '#{2.minutes.ago.to_s(:db)}' where id = #{ben.id}")
71
- assert_nil User.find_using_perishable_token(ben.perishable_token)
72
- User.perishable_token_valid_for = 10.minutes
73
- end
74
-
75
- def test_find_using_perishable_token_when_passing_threshold
76
- User.perishable_token_valid_for = 1.minute
77
- ben = users(:ben)
78
- ActiveRecord::Base.connection.execute("UPDATE users set updated_at = '#{10.minutes.ago.to_s(:db)}' where id = #{ben.id}")
79
- assert_nil User.find_using_perishable_token(ben.perishable_token, 5.minutes)
80
- assert_equal ben, User.find_using_perishable_token(ben.perishable_token, 20.minutes)
81
- User.perishable_token_valid_for = 10.minutes
82
- end
83
-
84
- def test_find_perishable_token_with_bang
85
- assert_raises ActiveRecord::RecordNotFound do
86
- User.find_using_perishable_token!('some_bad_value')
87
- end
88
- end
89
- end
90
- end
@@ -1,56 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class PersistenceTokenTest < ActiveSupport::TestCase
5
- def test_after_password_set_reset_persistence_token
6
- ben = users(:ben)
7
- old_persistence_token = ben.persistence_token
8
- ben.password = "newpass"
9
- assert_not_equal old_persistence_token, ben.persistence_token
10
- end
11
-
12
- def test_after_password_verification_reset_persistence_token
13
- aaron = users(:aaron)
14
- old_persistence_token = aaron.persistence_token
15
-
16
- assert aaron.valid_password?(password_for(aaron))
17
- assert_equal old_persistence_token, aaron.reload.persistence_token
18
-
19
- # only update it if it is nil
20
- assert aaron.update_attribute(:persistence_token, nil)
21
- assert aaron.valid_password?(password_for(aaron))
22
- assert_not_equal old_persistence_token, aaron.persistence_token
23
- end
24
-
25
- def test_before_validate_reset_persistence_token
26
- u = User.new
27
- refute u.valid?
28
- assert_not_nil u.persistence_token
29
- end
30
-
31
- def test_forget_all
32
- http_basic_auth_for(users(:ben)) { UserSession.find }
33
- http_basic_auth_for(users(:zack)) { UserSession.find(:ziggity_zack) }
34
- assert UserSession.find
35
- assert UserSession.find(:ziggity_zack)
36
- User.forget_all
37
- refute UserSession.find
38
- refute UserSession.find(:ziggity_zack)
39
- end
40
-
41
- def test_forget
42
- ben = users(:ben)
43
- zack = users(:zack)
44
- http_basic_auth_for(ben) { UserSession.find }
45
- http_basic_auth_for(zack) { UserSession.find(:ziggity_zack) }
46
-
47
- assert ben.reload.logged_in?
48
- assert zack.reload.logged_in?
49
-
50
- ben.forget!
51
-
52
- refute UserSession.find
53
- assert UserSession.find(:ziggity_zack)
54
- end
55
- end
56
- end
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActsAsAuthenticTest
4
- class RestfulAuthenticationTest < ActiveSupport::TestCase
5
- def test_act_like_restful_authentication_config
6
- refute User.act_like_restful_authentication
7
- refute Employee.act_like_restful_authentication
8
-
9
- User.act_like_restful_authentication = true
10
- assert User.act_like_restful_authentication
11
- assert_equal Authlogic::CryptoProviders::Sha1, User.crypto_provider
12
- assert defined?(::REST_AUTH_SITE_KEY)
13
- assert_equal '', ::REST_AUTH_SITE_KEY
14
- assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
15
-
16
- User.act_like_restful_authentication false
17
- refute User.act_like_restful_authentication
18
-
19
- User.crypto_provider = Authlogic::CryptoProviders::Sha512
20
- User.transition_from_crypto_providers = []
21
- end
22
-
23
- def test_transition_from_restful_authentication_config
24
- refute User.transition_from_restful_authentication
25
- refute Employee.transition_from_restful_authentication
26
-
27
- User.transition_from_restful_authentication = true
28
- assert User.transition_from_restful_authentication
29
- assert defined?(::REST_AUTH_SITE_KEY)
30
- assert_equal '', ::REST_AUTH_SITE_KEY
31
- assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
32
-
33
- User.transition_from_restful_authentication false
34
- refute User.transition_from_restful_authentication
35
- end
36
- end
37
- end