authlogic 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of authlogic might be problematic. Click here for more details.

Files changed (54) hide show
  1. data/CHANGELOG.rdoc +19 -0
  2. data/Manifest +29 -15
  3. data/README.rdoc +17 -15
  4. data/Rakefile +1 -1
  5. data/authlogic.gemspec +7 -7
  6. data/lib/authlogic.rb +21 -4
  7. data/lib/authlogic/controller_adapters/abstract_adapter.rb +19 -4
  8. data/lib/authlogic/controller_adapters/merb_adapter.rb +0 -27
  9. data/lib/authlogic/controller_adapters/rails_adapter.rb +0 -14
  10. data/lib/authlogic/crypto_providers/sha1.rb +24 -0
  11. data/lib/authlogic/crypto_providers/sha512.rb +30 -0
  12. data/lib/authlogic/orm_adapters/active_record_adapter/acts_as_authentic.rb +89 -0
  13. data/lib/authlogic/orm_adapters/active_record_adapter/acts_as_authentic/credentials.rb +144 -0
  14. data/lib/authlogic/orm_adapters/active_record_adapter/acts_as_authentic/logged_in.rb +41 -0
  15. data/lib/authlogic/orm_adapters/active_record_adapter/acts_as_authentic/persistence.rb +62 -0
  16. data/lib/authlogic/orm_adapters/active_record_adapter/acts_as_authentic/session_maintenance.rb +83 -0
  17. data/lib/authlogic/orm_adapters/active_record_adapter/authenticates_many.rb +58 -0
  18. data/lib/authlogic/{active_record/scoped_session.rb → session/authenticates_many_association.rb} +12 -3
  19. data/lib/authlogic/session/base.rb +63 -93
  20. data/lib/authlogic/session/callbacks.rb +15 -3
  21. data/lib/authlogic/session/config.rb +130 -26
  22. data/lib/authlogic/session/cookies.rb +39 -0
  23. data/lib/authlogic/session/openid.rb +106 -0
  24. data/lib/authlogic/session/params.rb +28 -0
  25. data/lib/authlogic/session/session.rb +33 -0
  26. data/lib/authlogic/testing/shoulda_macros.rb +17 -0
  27. data/lib/authlogic/version.rb +1 -1
  28. data/test/fixtures/users.yml +2 -2
  29. data/{test_libs → test/libs}/aes128_crypto_provider.rb +0 -0
  30. data/{test_libs → test/libs}/mock_controller.rb +7 -0
  31. data/{test_libs → test/libs}/mock_cookie_jar.rb +0 -0
  32. data/{test_libs → test/libs}/mock_request.rb +0 -0
  33. data/{test_libs → test/libs}/ordered_hash.rb +0 -0
  34. data/test/orm_adapters_tests/active_record_adapter_tests/acts_as_authentic_test.rb +217 -0
  35. data/test/orm_adapters_tests/active_record_adapter_tests/authenticates_many_test.rb +32 -0
  36. data/test/session_tests/active_record_trickery_test.rb +14 -0
  37. data/test/session_tests/authenticates_many_association_test.rb +20 -0
  38. data/test/session_tests/base_test.rb +264 -0
  39. data/test/session_tests/config_test.rb +165 -0
  40. data/test/session_tests/cookies_test.rb +32 -0
  41. data/test/session_tests/params_test.rb +16 -0
  42. data/test/session_tests/scopes_test.rb +60 -0
  43. data/test/session_tests/session_test.rb +45 -0
  44. data/test/test_helper.rb +14 -5
  45. metadata +57 -29
  46. data/lib/authlogic/active_record/acts_as_authentic.rb +0 -297
  47. data/lib/authlogic/active_record/authenticates_many.rb +0 -56
  48. data/lib/authlogic/sha512_crypto_provider.rb +0 -18
  49. data/test/active_record_acts_as_authentic_test.rb +0 -213
  50. data/test/active_record_authenticates_many_test.rb +0 -28
  51. data/test/user_session_active_record_trickery_test.rb +0 -12
  52. data/test/user_session_base_test.rb +0 -316
  53. data/test/user_session_config_test.rb +0 -144
  54. data/test/user_session_scopes_test.rb +0 -19
@@ -1,28 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class ActiveRecordAuthenticatesManyTest < ActiveSupport::TestCase
4
- def test_authenticates_many_new
5
- binary_logic = companies(:binary_logic)
6
- user_session = binary_logic.user_sessions.new
7
- assert_equal({:find_options => {:conditions => "\"users\".company_id = #{binary_logic.id}"}, :id => nil}, user_session.scope)
8
-
9
- employee_session = binary_logic.employee_sessions.new
10
- assert_equal({:find_options => {:conditions => "\"employees\".company_id = #{binary_logic.id}"}, :id => nil}, employee_session.scope)
11
- end
12
-
13
- def test_authenticates_many_create_and_find
14
- binary_logic = companies(:binary_logic)
15
- logic_over_data = companies(:logic_over_data)
16
- ben = users(:ben)
17
- zack = users(:zack)
18
-
19
- assert !binary_logic.user_sessions.find
20
- assert !logic_over_data.user_sessions.find
21
- assert logic_over_data.user_sessions.create(zack)
22
- assert !binary_logic.user_sessions.find
23
- assert logic_over_data.user_sessions.find
24
- assert binary_logic.user_sessions.create(ben)
25
- assert binary_logic.user_sessions.find
26
- assert !logic_over_data.user_sessions.find
27
- end
28
- end
@@ -1,12 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class UserSessionActiveRecordTrickeryTest < ActiveSupport::TestCase
4
- def test_human_attribute_name
5
- assert_equal "Some attribute", UserSession.human_attribute_name("some_attribute")
6
- end
7
-
8
- def test_new_record
9
- session = UserSession.new
10
- assert session.new_record?
11
- end
12
- end
@@ -1,316 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class UserSessionBaseTest < ActiveSupport::TestCase
4
- def test_activated
5
- assert UserSession.activated?
6
- Authlogic::Session::Base.reset_controllers!
7
- assert !UserSession.activated?
8
- end
9
-
10
- def test_controllers
11
- Authlogic::Session::Base.reset_controllers!
12
- assert_equal 0, Authlogic::Session::Base.send(:controllers).size
13
- thread1 = Thread.new do
14
- controller = MockController.new
15
- Authlogic::Session::Base.controller = controller
16
- assert_equal controller, Authlogic::Session::Base.controller
17
- end
18
- thread1.join
19
- assert_equal 1, Authlogic::Session::Base.send(:controllers).size
20
- assert_equal nil, Authlogic::Session::Base.controller
21
- thread2 = Thread.new do
22
- controller = MockController.new
23
- Authlogic::Session::Base.controller = controller
24
- assert_equal controller, Authlogic::Session::Base.controller
25
- end
26
- thread2.join
27
- assert_equal 2, Authlogic::Session::Base.send(:controllers).size
28
- assert_equal nil, Authlogic::Session::Base.controller
29
- end
30
-
31
- def test_create
32
- ben = users(:ben)
33
- assert !UserSession.create(ben.login, "badpw")
34
- assert UserSession.create(ben.login, "benrocks")
35
- assert_raise(Authlogic::Session::SessionInvalid) { UserSession.create!(ben.login, "badpw") }
36
- assert UserSession.create!(ben.login, "benrocks")
37
- end
38
-
39
- def test_find
40
- ben = users(:ben)
41
- assert !UserSession.find
42
- http_basic_auth_for(ben) { assert UserSession.find }
43
- set_cookie_for(ben)
44
- assert UserSession.find
45
- unset_cookie
46
- set_session_for(ben)
47
- session = UserSession.find
48
- assert session
49
- assert !session.record.last_request_at.nil?
50
- end
51
-
52
- def test_klass
53
- assert_equal User, UserSession.klass
54
- end
55
-
56
- def test_klass_name
57
- assert_equal "User", UserSession.klass_name
58
- end
59
-
60
- def test_scope_method # test_scope is reserved
61
- UserSession.with_scope(:find_options => {:conditions => "1 = 1"}, :id => "some_id") do
62
- assert_equal({:find_options => {:conditions => "1 = 1"}, :id => "some_id"}, UserSession.scope)
63
-
64
- ben = users(:ben)
65
- session = UserSession.new
66
- assert_equal({:find_options => {:conditions => "1 = 1"}, :id => "some_id"}, session.scope)
67
-
68
- session.id = :another_id
69
- session.unauthorized_record = ben
70
- assert session.save
71
- assert_equal ben.remember_token, @controller.session["another_id_some_id_user_credentials"]
72
- assert_equal ben.remember_token, @controller.cookies["another_id_some_id_user_credentials"]
73
- end
74
-
75
- assert_equal nil, UserSession.scope
76
- end
77
-
78
- def test_with_scope_method # test_with_scope is reserved
79
- assert_raise(ArgumentError) { UserSession.with_scope }
80
- # the rest of the method was tested in test_scope
81
- end
82
-
83
- def test_init
84
- UserSession.reset_controllers!
85
- assert_raise(Authlogic::Session::NotActivated) { UserSession.new }
86
- UserSession.controller = @controller
87
-
88
- session = UserSession.new
89
- assert session.respond_to?(:login)
90
- assert session.respond_to?(:login=)
91
- assert session.respond_to?(:password)
92
- assert session.respond_to?(:password=)
93
- assert session.respond_to?(:protected_password, true)
94
-
95
-
96
- session = UserSession.new(:my_id)
97
- assert_equal :my_id, session.id
98
-
99
- session = UserSession.new("login", "pass", true, :my_id)
100
- assert_equal "login", session.login
101
- assert_equal nil, session.password
102
- assert_equal "pass", session.send(:protected_password)
103
- assert_equal true, session.remember_me
104
- assert_equal :my_id, session.id
105
-
106
- session = UserSession.new({:login => "login", :password => "pass", :remember_me => true}, :my_id)
107
- assert_equal "login", session.login
108
- assert_equal nil, session.password
109
- assert_equal "pass", session.send(:protected_password)
110
- assert_equal true, session.remember_me
111
- assert_equal :my_id, session.id
112
-
113
- session = UserSession.new(users(:ben), :my_id)
114
- assert_equal nil, session.login
115
- assert_equal nil, session.password
116
- assert_equal nil, session.send(:protected_password)
117
- assert_equal nil, session.remember_me
118
- assert_equal :my_id, session.id
119
- assert_equal users(:ben), session.unauthorized_record
120
- end
121
-
122
- def test_credentials
123
- session = UserSession.new
124
- session.credentials = {:login => "login", :password => "pass", :remember_me => true}
125
- assert_equal "login", session.login
126
- assert_equal nil, session.password
127
- assert_equal "pass", session.send(:protected_password)
128
- assert_equal true, session.remember_me
129
- assert_equal({:password => "<Protected>", :login => "login"}, session.credentials)
130
- end
131
-
132
- def test_destroy
133
- ben = users(:ben)
134
- session = UserSession.create(ben)
135
- assert session
136
- assert_equal ben.remember_token, @controller.session["user_credentials"]
137
- assert_equal ben.remember_token, @controller.cookies["user_credentials"]
138
- session.destroy
139
- assert_equal nil, @controller.session["user_credentials"]
140
- assert_equal nil, @controller.cookies["user_credentials"]
141
- end
142
-
143
- def test_errors
144
- session = UserSession.new
145
- assert session.errors.is_a?(Authlogic::Session::Errors)
146
- end
147
-
148
- def test_find_record
149
- # tested thoroughly in test_find
150
- end
151
-
152
- def test_id
153
- ben = users(:ben)
154
- session = UserSession.new(ben, :my_id)
155
- assert_equal :my_id, session.id
156
- assert session.save
157
- assert_equal ben.remember_token, @controller.session["my_id_user_credentials"]
158
- assert_equal ben.remember_token, @controller.cookies["my_id_user_credentials"]
159
- end
160
-
161
- def test_inspect
162
- session = UserSession.new
163
- assert_equal "#<UserSession {:unauthorized_record=>\"<protected>\"}>", session.inspect
164
- session.login = "login"
165
- session.password = "pass"
166
- assert "#<UserSession {:login=>\"login\", :password=>\"<protected>\"}>" == session.inspect || "#<UserSession {:password=>\"<protected>\", :login=>\"login\"}>" == session.inspect
167
- end
168
-
169
- def test_new_session
170
- session = UserSession.new
171
- assert session.new_session?
172
-
173
- set_session_for(users(:ben))
174
- session = UserSession.find
175
- assert !session.new_session?
176
- end
177
-
178
- def test_remember_me
179
- session = UserSession.new
180
- assert_equal nil, session.remember_me
181
- assert !session.remember_me?
182
-
183
- session.remember_me = false
184
- assert_equal false, session.remember_me
185
- assert !session.remember_me?
186
-
187
- session.remember_me = true
188
- assert_equal true, session.remember_me
189
- assert session.remember_me?
190
-
191
- session.remember_me = nil
192
- assert_equal nil, session.remember_me
193
- assert !session.remember_me?
194
-
195
- session.remember_me = "1"
196
- assert_equal "1", session.remember_me
197
- assert session.remember_me?
198
-
199
- session.remember_me = "true"
200
- assert_equal "true", session.remember_me
201
- assert session.remember_me?
202
- end
203
-
204
- def test_remember_me_until
205
- session = UserSession.new
206
- assert_equal nil, session.remember_me_until
207
-
208
- session.remember_me = true
209
- assert 3.months.from_now <= session.remember_me_until
210
- end
211
-
212
- def test_save_with_nothing
213
- session = UserSession.new
214
- assert !session.save
215
- assert session.new_session?
216
- end
217
-
218
- def test_save_with_record
219
- ben = users(:ben)
220
- session = UserSession.new(ben.login, "benrocks")
221
- assert session.save
222
- assert !session.new_session?
223
- assert_equal ben.remember_token, @controller.session["user_credentials"]
224
- assert_equal ben.remember_token, @controller.cookies["user_credentials"]
225
- assert_equal 1, session.record.login_count
226
- assert Time.now >= session.record.current_login_at
227
- assert_equal "1.1.1.1", session.record.current_login_ip
228
- unset_cookie
229
- unset_session
230
- end
231
-
232
- def test_save_with_credentials
233
- ben = users(:ben)
234
- session = UserSession.new(ben)
235
- assert session.save
236
- assert !session.new_session?
237
- assert_equal ben.remember_token, @controller.session["user_credentials"]
238
- assert_equal ben.remember_token, @controller.cookies["user_credentials"]
239
- assert_equal 1, session.record.login_count
240
- assert Time.now >= session.record.current_login_at
241
- assert_equal "1.1.1.1", session.record.current_login_ip
242
- end
243
-
244
- def test_save_with_bang
245
- session = UserSession.new
246
- assert_raise(Authlogic::Session::SessionInvalid) { session.save! }
247
-
248
- session.unauthorized_record = users(:ben)
249
- assert session.save!
250
- end
251
-
252
- def test_unauthorized_record
253
- session = UserSession.new
254
- ben = users(:ben)
255
- session.unauthorized_record = ben
256
- assert_equal ben, session.unauthorized_record
257
- assert_equal :unauthorized_record, session.login_with
258
- end
259
-
260
- def test_valid
261
- session = UserSession.new
262
- assert !session.valid?
263
- assert_equal nil, session.record
264
- assert session.errors.count > 0
265
-
266
- ben = users(:ben)
267
- session.unauthorized_record = ben
268
- assert session.valid?
269
- assert_equal ben, session.record
270
- assert session.errors.empty?
271
- end
272
-
273
- def test_valid_http_auth
274
- ben = users(:ben)
275
- session = UserSession.new
276
-
277
- http_basic_auth_for { assert !session.valid_http_auth? }
278
-
279
- http_basic_auth_for(ben) do
280
- assert session.valid_http_auth?
281
- assert_equal ben, session.record
282
- assert_equal ben.remember_token, @controller.session["user_credentials"]
283
- assert_equal ben.login, session.login
284
- assert_equal ben.crypted_password, session.send(:protected_password)
285
- assert !session.new_session?
286
- end
287
- end
288
-
289
- def test_valid_cookie
290
- ben = users(:ben)
291
- session = UserSession.new
292
-
293
- assert !session.valid_cookie?
294
-
295
- set_cookie_for(ben)
296
- assert session.valid_cookie?
297
- assert_equal ben, session.record
298
- assert_equal ben.remember_token, @controller.session["user_credentials"]
299
- assert_equal ben, session.unauthorized_record
300
- assert !session.new_session?
301
- end
302
-
303
- def test_valid_session
304
- ben = users(:ben)
305
- session = UserSession.new
306
-
307
- assert !session.valid_session?
308
-
309
- set_session_for(ben)
310
- assert session.valid_session?
311
- assert_equal ben, session.record
312
- assert_equal ben.remember_token, @controller.session["user_credentials"]
313
- assert_equal ben, session.unauthorized_record
314
- assert !session.new_session?
315
- end
316
- end
@@ -1,144 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class UserSessionConfigTest < ActiveSupport::TestCase
4
- def test_authenticate_with
5
- UserSession.authenticate_with = Employee
6
- assert_equal "Employee", UserSession.klass_name
7
- assert_equal Employee, UserSession.klass
8
-
9
- UserSession.authenticate_with User
10
- assert_equal "User", UserSession.klass_name
11
- assert_equal User, UserSession.klass
12
- end
13
-
14
- def test_cookie_key
15
- UserSession.cookie_key = "my_cookie_key"
16
- assert_equal "my_cookie_key", UserSession.cookie_key
17
- session = UserSession.new
18
- assert_equal "my_cookie_key", session.cookie_key
19
-
20
- UserSession.cookie_key "user_credentials"
21
- assert_equal "user_credentials", UserSession.cookie_key
22
- session = UserSession.new
23
- assert_equal "user_credentials", session.cookie_key
24
- end
25
-
26
- def test_find_by_login_method
27
- UserSession.find_by_login_method = "my_login_method"
28
- assert_equal "my_login_method", UserSession.find_by_login_method
29
- session = UserSession.new
30
- assert_equal "my_login_method", session.find_by_login_method
31
-
32
- UserSession.find_by_login_method "find_by_login"
33
- assert_equal "find_by_login", UserSession.find_by_login_method
34
- session = UserSession.new
35
- assert_equal "find_by_login", session.find_by_login_method
36
- end
37
-
38
- def test_find_with
39
- UserSession.find_with = [:session]
40
- assert_equal [:session], UserSession.find_with
41
- session = UserSession.new
42
- assert_equal [:session], session.find_with
43
-
44
- set_cookie_for(users(:ben))
45
- assert !UserSession.find
46
-
47
- UserSession.find_with :session, :cookie, :http_auth
48
- assert_equal [:session, :cookie, :http_auth], UserSession.find_with
49
- session = UserSession.new
50
- assert_equal [:session, :cookie, :http_auth], session.find_with
51
-
52
- assert UserSession.find
53
- end
54
-
55
- def test_login_field
56
- UserSession.login_field = :saweet
57
- assert_equal :saweet, UserSession.login_field
58
- session = UserSession.new
59
- assert_equal :saweet, session.login_field
60
- assert session.respond_to?(:saweet)
61
-
62
- UserSession.login_field :login
63
- assert_equal :login, UserSession.login_field
64
- session = UserSession.new
65
- assert_equal :login, session.login_field
66
- assert session.respond_to?(:login)
67
- end
68
-
69
- def test_password_field
70
- UserSession.password_field = :saweet
71
- assert_equal :saweet, UserSession.password_field
72
- session = UserSession.new
73
- assert_equal :saweet, session.password_field
74
- assert session.respond_to?(:saweet)
75
-
76
- UserSession.password_field :password
77
- assert_equal :password, UserSession.password_field
78
- session = UserSession.new
79
- assert_equal :password, session.password_field
80
- assert session.respond_to?(:password)
81
- end
82
-
83
- def test_remember_me
84
- UserSession.remember_me = true
85
- assert_equal true, UserSession.remember_me
86
- session = UserSession.new
87
- assert_equal true, session.remember_me
88
-
89
- UserSession.remember_me false
90
- assert_equal false, UserSession.remember_me
91
- session = UserSession.new
92
- assert_equal false, session.remember_me
93
- end
94
-
95
- def test_remember_me_for
96
- UserSession.remember_me_for = 3.years
97
- assert_equal 3.years, UserSession.remember_me_for
98
- session = UserSession.new
99
- session.remember_me = true
100
- assert_equal 3.years, session.remember_me_for
101
-
102
- UserSession.remember_me_for 3.months
103
- assert_equal 3.months, UserSession.remember_me_for
104
- session = UserSession.new
105
- session.remember_me = true
106
- assert_equal 3.months, session.remember_me_for
107
- end
108
-
109
- def test_remember_token_field
110
- UserSession.remember_token_field = :saweet
111
- assert_equal :saweet, UserSession.remember_token_field
112
- session = UserSession.new
113
- assert_equal :saweet, session.remember_token_field
114
-
115
- UserSession.remember_token_field :remember_token
116
- assert_equal :remember_token, UserSession.remember_token_field
117
- session = UserSession.new
118
- assert_equal :remember_token, session.remember_token_field
119
- end
120
-
121
- def test_session_key
122
- UserSession.session_key = "my_session_key"
123
- assert_equal "my_session_key", UserSession.session_key
124
- session = UserSession.new
125
- assert_equal "my_session_key", session.session_key
126
-
127
- UserSession.session_key "user_credentials"
128
- assert_equal "user_credentials", UserSession.session_key
129
- session = UserSession.new
130
- assert_equal "user_credentials", session.session_key
131
- end
132
-
133
- def test_verify_password_method
134
- UserSession.verify_password_method = "my_login_method"
135
- assert_equal "my_login_method", UserSession.verify_password_method
136
- session = UserSession.new
137
- assert_equal "my_login_method", session.verify_password_method
138
-
139
- UserSession.verify_password_method "valid_password?"
140
- assert_equal "valid_password?", UserSession.verify_password_method
141
- session = UserSession.new
142
- assert_equal "valid_password?", session.verify_password_method
143
- end
144
- end