authlogic 2.0.1 → 2.1.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.
Files changed (86) hide show
  1. data/.gitignore +9 -0
  2. data/CHANGELOG.rdoc +110 -1
  3. data/{MIT-LICENSE → LICENSE} +1 -1
  4. data/README.rdoc +138 -161
  5. data/Rakefile +40 -19
  6. data/VERSION.yml +4 -0
  7. data/authlogic.gemspec +212 -0
  8. data/init.rb +1 -1
  9. data/lib/authlogic/acts_as_authentic/base.rb +44 -35
  10. data/lib/authlogic/acts_as_authentic/email.rb +47 -14
  11. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +20 -14
  12. data/lib/authlogic/acts_as_authentic/login.rb +84 -8
  13. data/lib/authlogic/acts_as_authentic/password.rb +207 -88
  14. data/lib/authlogic/acts_as_authentic/perishable_token.rb +9 -4
  15. data/lib/authlogic/acts_as_authentic/persistence_token.rb +4 -2
  16. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +5 -4
  17. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +16 -4
  18. data/lib/authlogic/acts_as_authentic/single_access_token.rb +10 -3
  19. data/lib/authlogic/acts_as_authentic/validations_scope.rb +1 -1
  20. data/lib/authlogic/controller_adapters/abstract_adapter.rb +13 -1
  21. data/lib/authlogic/controller_adapters/rails_adapter.rb +14 -4
  22. data/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
  23. data/lib/authlogic/crypto_providers/aes256.rb +2 -2
  24. data/lib/authlogic/crypto_providers/bcrypt.rb +3 -1
  25. data/lib/authlogic/crypto_providers/sha1.rb +2 -2
  26. data/lib/authlogic/i18n/translator.rb +15 -0
  27. data/lib/authlogic/i18n.rb +43 -14
  28. data/lib/authlogic/regex.rb +25 -0
  29. data/lib/authlogic/session/activation.rb +2 -0
  30. data/lib/authlogic/session/active_record_trickery.rb +26 -5
  31. data/lib/authlogic/session/brute_force_protection.rb +30 -11
  32. data/lib/authlogic/session/callbacks.rb +18 -7
  33. data/lib/authlogic/session/cookies.rb +21 -17
  34. data/lib/authlogic/session/existence.rb +6 -2
  35. data/lib/authlogic/session/foundation.rb +1 -1
  36. data/lib/authlogic/session/http_auth.rb +46 -11
  37. data/lib/authlogic/session/magic_columns.rb +29 -9
  38. data/lib/authlogic/session/magic_states.rb +6 -5
  39. data/lib/authlogic/session/params.rb +16 -10
  40. data/lib/authlogic/session/password.rb +115 -31
  41. data/lib/authlogic/session/priority_record.rb +1 -1
  42. data/lib/authlogic/session/session.rb +5 -3
  43. data/lib/authlogic/session/timeout.rb +1 -1
  44. data/lib/authlogic/session/validation.rb +13 -7
  45. data/lib/authlogic/test_case/mock_controller.rb +45 -0
  46. data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  47. data/lib/authlogic/test_case/mock_logger.rb +10 -0
  48. data/lib/authlogic/test_case/mock_request.rb +19 -0
  49. data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  50. data/lib/authlogic/test_case.rb +114 -0
  51. data/lib/authlogic.rb +4 -3
  52. data/rails/init.rb +1 -0
  53. data/shoulda_macros/authlogic.rb +3 -2
  54. data/test/acts_as_authentic_test/base_test.rb +6 -0
  55. data/test/acts_as_authentic_test/email_test.rb +25 -7
  56. data/test/acts_as_authentic_test/login_test.rb +37 -7
  57. data/test/acts_as_authentic_test/magic_columns_test.rb +4 -4
  58. data/test/acts_as_authentic_test/password_test.rb +46 -44
  59. data/test/acts_as_authentic_test/perishable_token_test.rb +36 -2
  60. data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  61. data/test/acts_as_authentic_test/session_maintenance_test.rb +26 -18
  62. data/test/acts_as_authentic_test/single_access_test.rb +6 -1
  63. data/test/i18n_test.rb +33 -0
  64. data/test/libs/affiliate.rb +7 -0
  65. data/test/libs/ldaper.rb +3 -0
  66. data/test/random_test.rb +2 -2
  67. data/test/session_test/activation_test.rb +1 -1
  68. data/test/session_test/active_record_trickery_test.rb +12 -2
  69. data/test/session_test/brute_force_protection_test.rb +37 -12
  70. data/test/session_test/cookies_test.rb +3 -3
  71. data/test/session_test/existence_test.rb +3 -3
  72. data/test/session_test/http_auth_test.rb +20 -8
  73. data/test/session_test/magic_columns_test.rb +9 -6
  74. data/test/session_test/magic_states_test.rb +3 -3
  75. data/test/session_test/params_test.rb +4 -4
  76. data/test/session_test/password_test.rb +23 -1
  77. data/test/session_test/session_test.rb +9 -9
  78. data/test/session_test/timeout_test.rb +10 -1
  79. data/test/test_helper.rb +53 -23
  80. metadata +42 -27
  81. data/Manifest.txt +0 -111
  82. data/lib/authlogic/testing/test_unit_helpers.rb +0 -39
  83. data/lib/authlogic/version.rb +0 -56
  84. data/test/libs/mock_controller.rb +0 -35
  85. data/test/libs/mock_cookie_jar.rb +0 -10
  86. data/test/libs/mock_request.rb +0 -5
@@ -2,6 +2,14 @@ require File.dirname(__FILE__) + '/../test_helper.rb'
2
2
 
3
3
  module ActsAsAuthenticTest
4
4
  class SessionMaintenanceTest < ActiveSupport::TestCase
5
+ def test_maintain_sessions_config
6
+ assert User.maintain_sessions
7
+ User.maintain_sessions = false
8
+ assert !User.maintain_sessions
9
+ User.maintain_sessions true
10
+ assert User.maintain_sessions
11
+ end
12
+
5
13
  def test_login_after_create
6
14
  assert User.create(:login => "awesome", :password => "saweet", :password_confirmation => "saweet", :email => "awesome@awesome.com")
7
15
  assert UserSession.find
@@ -18,49 +26,49 @@ module ActsAsAuthenticTest
18
26
  def test_update_session_after_password_modify
19
27
  ben = users(:ben)
20
28
  UserSession.create(ben)
21
- old_session_key = @controller.session["user_credentials"]
22
- old_cookie_key = @controller.cookies["user_credentials"]
29
+ old_session_key = controller.session["user_credentials"]
30
+ old_cookie_key = controller.cookies["user_credentials"]
23
31
  ben.password = "newpass"
24
32
  ben.password_confirmation = "newpass"
25
33
  assert ben.save
26
- assert @controller.session["user_credentials"]
27
- assert @controller.cookies["user_credentials"]
28
- assert_not_equal @controller.session["user_credentials"], old_session_key
29
- assert_not_equal @controller.cookies["user_credentials"], old_cookie_key
34
+ assert controller.session["user_credentials"]
35
+ assert controller.cookies["user_credentials"]
36
+ assert_not_equal controller.session["user_credentials"], old_session_key
37
+ assert_not_equal controller.cookies["user_credentials"], old_cookie_key
30
38
  end
31
39
 
32
40
  def test_no_session_update_after_modify
33
41
  ben = users(:ben)
34
42
  UserSession.create(ben)
35
- old_session_key = @controller.session["user_credentials"]
36
- old_cookie_key = @controller.cookies["user_credentials"]
43
+ old_session_key = controller.session["user_credentials"]
44
+ old_cookie_key = controller.cookies["user_credentials"]
37
45
  ben.first_name = "Ben"
38
46
  assert ben.save
39
- assert_equal @controller.session["user_credentials"], old_session_key
40
- assert_equal @controller.cookies["user_credentials"], old_cookie_key
47
+ assert_equal controller.session["user_credentials"], old_session_key
48
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
41
49
  end
42
50
 
43
51
  def test_creating_other_user
44
52
  ben = users(:ben)
45
53
  UserSession.create(ben)
46
- old_session_key = @controller.session["user_credentials"]
47
- old_cookie_key = @controller.cookies["user_credentials"]
54
+ old_session_key = controller.session["user_credentials"]
55
+ old_cookie_key = controller.cookies["user_credentials"]
48
56
  assert User.create(:login => "awesome", :password => "saweet", :password_confirmation => "saweet", :email => "awesome@saweet.com")
49
- assert_equal @controller.session["user_credentials"], old_session_key
50
- assert_equal @controller.cookies["user_credentials"], old_cookie_key
57
+ assert_equal controller.session["user_credentials"], old_session_key
58
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
51
59
  end
52
60
 
53
61
  def test_updating_other_user
54
62
  ben = users(:ben)
55
63
  UserSession.create(ben)
56
- old_session_key = @controller.session["user_credentials"]
57
- old_cookie_key = @controller.cookies["user_credentials"]
64
+ old_session_key = controller.session["user_credentials"]
65
+ old_cookie_key = controller.cookies["user_credentials"]
58
66
  zack = users(:zack)
59
67
  zack.password = "newpass"
60
68
  zack.password_confirmation = "newpass"
61
69
  assert zack.save
62
- assert_equal @controller.session["user_credentials"], old_session_key
63
- assert_equal @controller.cookies["user_credentials"], old_cookie_key
70
+ assert_equal controller.session["user_credentials"], old_session_key
71
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
64
72
  end
65
73
 
66
74
  def test_resetting_password_when_logged_out
@@ -16,7 +16,7 @@ module ActsAsAuthenticTest
16
16
  u = User.new
17
17
  u.single_access_token = users(:ben).single_access_token
18
18
  assert !u.valid?
19
- assert u.errors.on(:single_access_token)
19
+ assert u.errors[:single_access_token].size > 0
20
20
  end
21
21
 
22
22
  def test_before_validation_reset_single_access_token
@@ -35,5 +35,10 @@ module ActsAsAuthenticTest
35
35
 
36
36
  User.change_single_access_token_with_password = false
37
37
  end
38
+
39
+ def test_after_password_set_is_not_called
40
+ ldaper = Ldaper.new
41
+ assert ldaper.save
42
+ end
38
43
  end
39
44
  end
data/test/i18n_test.rb ADDED
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class I18nTest < ActiveSupport::TestCase
4
+ def test_uses_authlogic_as_scope_by_default
5
+ assert_equal :authlogic, Authlogic::I18n.scope
6
+ end
7
+
8
+ def test_can_set_scope
9
+ assert_nothing_raised { Authlogic::I18n.scope = [:a, :b] }
10
+ assert_equal [:a, :b], Authlogic::I18n.scope
11
+ Authlogic::I18n.scope = :authlogic
12
+ end
13
+
14
+ def test_uses_built_in_translator_by_default
15
+ assert_equal Authlogic::I18n::Translator, Authlogic::I18n.translator.class
16
+ end
17
+
18
+ def test_can_set_custom_translator
19
+ old_translator = Authlogic::I18n.translator
20
+
21
+ assert_nothing_raised do
22
+ Authlogic::I18n.translator = Class.new do
23
+ def translate(key, options = {})
24
+ "Translated: #{key}"
25
+ end
26
+ end.new
27
+ end
28
+
29
+ assert_equal "Translated: x", Authlogic::I18n.translate(:x)
30
+
31
+ Authlogic::I18n.translator = old_translator
32
+ end
33
+ end
@@ -0,0 +1,7 @@
1
+ class Affiliate < ActiveRecord::Base
2
+ acts_as_authentic do |c|
3
+ c.crypted_password_field = :pw_hash
4
+ end
5
+
6
+ belongs_to :company
7
+ end
@@ -0,0 +1,3 @@
1
+ class Ldaper < ActiveRecord::Base
2
+ acts_as_authentic
3
+ end
data/test/random_test.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper.rb'
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  class RandomTest < ActiveSupport::TestCase
4
4
  def test_random_tokens_have_consisten_length
@@ -36,7 +36,7 @@ class RandomTest < ActiveSupport::TestCase
36
36
  def reload_authlogic_with_sec_random!(secure_random, enabled = true)
37
37
  silence_warnings do
38
38
  secure_random.parent.const_set(secure_random.name.sub("#{secure_random.parent}::", ''), enabled ? secure_random : nil)
39
- load(File.dirname(__FILE__) + '/../../lib/authlogic/random.rb')
39
+ load(File.dirname(__FILE__) + '/../lib/authlogic/random.rb')
40
40
  end
41
41
  end
42
42
 
@@ -36,7 +36,7 @@ module SessionTest
36
36
  def test_init
37
37
  UserSession.controller = nil
38
38
  assert_raise(Authlogic::Session::Activation::NotActivatedError) { UserSession.new }
39
- UserSession.controller = @controller
39
+ UserSession.controller = controller
40
40
  end
41
41
  end
42
42
  end
@@ -5,15 +5,20 @@ module SessionTest
5
5
  class ClassMethodsTest < ActiveSupport::TestCase
6
6
  def test_human_attribute_name
7
7
  assert_equal "Some attribute", UserSession.human_attribute_name("some_attribute")
8
+ assert_equal "Some attribute", UserSession.human_attribute_name(:some_attribute)
8
9
  end
9
10
 
10
11
  def test_human_name
11
- assert_equal "User", UserSession.human_name
12
+ assert_equal "Usersession", UserSession.human_name
12
13
  end
13
14
 
14
15
  def test_self_and_descendents_from_active_record
15
16
  assert_equal [UserSession], UserSession.self_and_descendents_from_active_record
16
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
17
22
  end
18
23
 
19
24
  class InstanceMethodsTest < ActiveSupport::TestCase
@@ -21,6 +26,11 @@ module SessionTest
21
26
  session = UserSession.new
22
27
  assert session.new_record?
23
28
  end
29
+
30
+ def test_to_model
31
+ session = UserSession.new
32
+ assert session, session.to_model
33
+ end
24
34
  end
25
35
  end
26
- end
36
+ end
@@ -32,10 +32,10 @@ module SessionTest
32
32
  ben = users(:ben)
33
33
  ben.failed_login_count = UserSession.consecutive_failed_logins_limit
34
34
  assert ben.save
35
- assert !UserSession.create(:login => ben.login, :password => "benrocks")
36
- assert !UserSession.create(ben)
35
+ assert UserSession.create(:login => ben.login, :password => "benrocks").new_session?
36
+ assert UserSession.create(ben).new_session?
37
37
  ben.updated_at = (UserSession.failed_login_ban_for + 2.hours.to_i).seconds.ago
38
- assert UserSession.create(ben)
38
+ assert !UserSession.create(ben).new_session?
39
39
  end
40
40
 
41
41
  def test_exceeding_failed_logins_limit
@@ -45,31 +45,56 @@ module SessionTest
45
45
  2.times do |i|
46
46
  session = UserSession.new(:login => ben.login, :password => "badpassword1")
47
47
  assert !session.save
48
- assert session.errors.on(:password)
48
+ assert session.errors[:password].size > 0
49
49
  assert_equal i + 1, ben.reload.failed_login_count
50
50
  end
51
-
51
+
52
52
  session = UserSession.new(:login => ben.login, :password => "badpassword2")
53
53
  assert !session.save
54
- assert !session.errors.on(:password)
55
- assert_equal 2, ben.reload.failed_login_count
54
+ assert session.errors[:password].size == 0
55
+ assert_equal 3, ben.reload.failed_login_count
56
56
 
57
57
  UserSession.consecutive_failed_logins_limit = 50
58
58
  end
59
-
60
- def test_resetting_failed_logins_count
59
+
60
+ def test_exceeded_ban_for
61
+ UserSession.consecutive_failed_logins_limit = 2
62
+ UserSession.generalize_credentials_error_messages true
61
63
  ben = users(:ben)
62
64
 
63
65
  2.times do |i|
64
- session = UserSession.new(:login => ben.login, :password => "badpassword")
66
+ session = UserSession.new(:login => ben.login, :password => "badpassword1")
65
67
  assert !session.save
66
- assert session.errors.on(:password)
68
+ assert session.invalid_password?
67
69
  assert_equal i + 1, ben.reload.failed_login_count
68
70
  end
69
-
71
+
72
+ ActiveRecord::Base.connection.execute("update users set updated_at = '#{1.day.ago.to_s(:db)}' where login = '#{ben.login}'")
70
73
  session = UserSession.new(:login => ben.login, :password => "benrocks")
71
74
  assert session.save
72
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
73
98
  end
74
99
  end
75
100
  end
@@ -91,16 +91,16 @@ module SessionTest
91
91
  ben = users(:ben)
92
92
  session = UserSession.new(ben)
93
93
  assert session.save
94
- assert_equal ben.persistence_token, @controller.cookies["user_credentials"]
94
+ assert_equal "#{ben.persistence_token}::#{ben.id}", controller.cookies["user_credentials"]
95
95
  end
96
96
 
97
97
  def test_after_destroy_destroy_cookie
98
98
  ben = users(:ben)
99
99
  set_cookie_for(ben)
100
100
  session = UserSession.find
101
- assert @controller.cookies["user_credentials"]
101
+ assert controller.cookies["user_credentials"]
102
102
  assert session.destroy
103
- assert !@controller.cookies["user_credentials"]
103
+ assert !controller.cookies["user_credentials"]
104
104
  end
105
105
  end
106
106
  end
@@ -5,10 +5,10 @@ module SessionTest
5
5
  class ClassMethodsTest < ActiveSupport::TestCase
6
6
  def test_create
7
7
  ben = users(:ben)
8
- assert !UserSession.create(:login => "somelogin", :password => "badpw2")
9
- assert UserSession.create(:login => ben.login, :password => "benrocks")
8
+ assert UserSession.create(:login => "somelogin", :password => "badpw2").new_session?
9
+ assert !UserSession.create(:login => ben.login, :password => "benrocks").new_session?
10
10
  assert_raise(Authlogic::Session::Existence::SessionInvalidError) { UserSession.create!(:login => ben.login, :password => "badpw") }
11
- assert UserSession.create!(:login => ben.login, :password => "benrocks")
11
+ assert !UserSession.create!(:login => ben.login, :password => "benrocks").new_session?
12
12
  end
13
13
  end
14
14
 
@@ -2,14 +2,26 @@ require File.dirname(__FILE__) + '/../test_helper.rb'
2
2
 
3
3
  module SessionTest
4
4
  class HttpAuthTest < ActiveSupport::TestCase
5
- def test_persist_persist_by_http_auth
6
- ben = users(:ben)
7
- http_basic_auth_for { assert !UserSession.find }
8
- http_basic_auth_for(ben) do
9
- assert session = UserSession.find
10
- assert_equal ben, session.record
11
- assert_equal ben.login, session.login
12
- assert_equal "benrocks", session.send(:protected_password)
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
+ end
14
+
15
+ class InstanceMethodsTest < ActiveSupport::TestCase
16
+ def test_persist_persist_by_http_auth
17
+ ben = users(:ben)
18
+ http_basic_auth_for { assert !UserSession.find }
19
+ http_basic_auth_for(ben) do
20
+ assert session = UserSession.find
21
+ assert_equal ben, session.record
22
+ assert_equal ben.login, session.login
23
+ assert_equal "benrocks", session.send(:protected_password)
24
+ end
13
25
  end
14
26
  end
15
27
  end
@@ -15,6 +15,8 @@ module SessionTest
15
15
  class InstanceMethodsTest < ActiveSupport::TestCase
16
16
  def test_after_persisting_set_last_request_at
17
17
  ben = users(:ben)
18
+ assert !UserSession.create(ben).new_session?
19
+
18
20
  set_cookie_for(ben)
19
21
  old_last_request_at = ben.last_request_at
20
22
  assert UserSession.find
@@ -22,10 +24,10 @@ module SessionTest
22
24
  assert ben.last_request_at != old_last_request_at
23
25
  end
24
26
 
25
- def test_valide_increase_failed_login_count
27
+ def test_valid_increase_failed_login_count
26
28
  ben = users(:ben)
27
29
  old_failed_login_count = ben.failed_login_count
28
- assert !UserSession.create(:login => ben.login, :password => "wrong")
30
+ assert UserSession.create(:login => ben.login, :password => "wrong").new_session?
29
31
  ben.reload
30
32
  assert_equal old_failed_login_count + 1, ben.failed_login_count
31
33
  end
@@ -34,7 +36,7 @@ module SessionTest
34
36
  ben = users(:ben)
35
37
 
36
38
  # increase failed login count
37
- assert !UserSession.create(:login => ben.login, :password => "wrong")
39
+ assert UserSession.create(:login => ben.login, :password => "wrong").new_session?
38
40
  ben.reload
39
41
 
40
42
  # grab old values
@@ -45,10 +47,11 @@ module SessionTest
45
47
  old_last_login_ip = ben.last_login_ip
46
48
  old_current_login_ip = ben.current_login_ip
47
49
 
48
- assert UserSession.create(ben)
49
-
50
+ assert !UserSession.create(:login => ben.login, :password => "benrocks").new_session?
51
+
52
+ ben.reload
50
53
  assert_equal old_login_count + 1, ben.login_count
51
- assert_equal old_failed_login_count - 1, ben.failed_login_count
54
+ assert_equal 0, ben.failed_login_count
52
55
  assert_equal old_current_login_at, ben.last_login_at
53
56
  assert ben.current_login_at != old_current_login_at
54
57
  assert_equal old_current_login_ip, ben.last_login_ip
@@ -31,7 +31,7 @@ module SessionTest
31
31
 
32
32
  ben.update_attribute(:active, false)
33
33
  assert !session.valid?
34
- assert session.errors.on_base.size > 0
34
+ assert session.errors[:base].size > 0
35
35
  end
36
36
 
37
37
  def test_validate_validate_magic_states_approved
@@ -42,7 +42,7 @@ module SessionTest
42
42
 
43
43
  ben.update_attribute(:approved, false)
44
44
  assert !session.valid?
45
- assert session.errors.on_base.size > 0
45
+ assert session.errors[:base].size > 0
46
46
  end
47
47
 
48
48
  def test_validate_validate_magic_states_confirmed
@@ -53,7 +53,7 @@ module SessionTest
53
53
 
54
54
  ben.update_attribute(:confirmed, false)
55
55
  assert !session.valid?
56
- assert session.errors.on_base.size > 0
56
+ assert session.errors[:base].size > 0
57
57
  end
58
58
  end
59
59
  end
@@ -31,22 +31,22 @@ module SessionTest
31
31
  assert !session.persisting?
32
32
  assert !session.unauthorized_record
33
33
  assert !session.record
34
- assert_nil @controller.session["user_credentials"]
34
+ assert_nil controller.session["user_credentials"]
35
35
 
36
36
  set_request_content_type("text/plain")
37
37
  assert !session.persisting?
38
38
  assert !session.unauthorized_record
39
- assert_nil @controller.session["user_credentials"]
39
+ assert_nil controller.session["user_credentials"]
40
40
 
41
41
  set_request_content_type("application/atom+xml")
42
42
  assert session.persisting?
43
43
  assert_equal ben, session.record
44
- assert_nil @controller.session["user_credentials"] # should not persist since this is single access
44
+ assert_nil controller.session["user_credentials"] # should not persist since this is single access
45
45
 
46
46
  set_request_content_type("application/rss+xml")
47
47
  assert session.persisting?
48
48
  assert_equal ben, session.unauthorized_record
49
- assert_nil @controller.session["user_credentials"]
49
+ assert_nil controller.session["user_credentials"]
50
50
  end
51
51
  end
52
52
  end
@@ -19,6 +19,28 @@ module SessionTest
19
19
  assert_equal "valid_password?", UserSession.verify_password_method
20
20
  end
21
21
 
22
+ def test_generalize_credentials_error_mesages_set_to_false
23
+ UserSession.generalize_credentials_error_messages false
24
+ assert !UserSession.generalize_credentials_error_messages
25
+ session = UserSession.create(:login => users(:ben).login, :password => "invalud-password")
26
+ assert_equal ["Password is not valid"], session.errors.full_messages
27
+ end
28
+
29
+ def test_generalize_credentials_error_messages_set_to_true
30
+ UserSession.generalize_credentials_error_messages true
31
+ assert UserSession.generalize_credentials_error_messages
32
+ session = UserSession.create(:login => users(:ben).login, :password => "invalud-password")
33
+ assert_equal ["Login/Password combination is not valid"], session.errors.full_messages
34
+ end
35
+
36
+ def test_generalize_credentials_error_messages_set_to_string
37
+ UserSession.generalize_credentials_error_messages= "Custom Error Message"
38
+ assert UserSession.generalize_credentials_error_messages
39
+ session = UserSession.create(:login => users(:ben).login, :password => "invalud-password")
40
+ assert_equal ["Custom Error Message"], session.errors.full_messages
41
+ end
42
+
43
+
22
44
  def test_login_field
23
45
  UserSession.configured_password_methods = false
24
46
  UserSession.login_field = :saweet
@@ -81,4 +103,4 @@ module SessionTest
81
103
  end
82
104
  end
83
105
  end
84
- end
106
+ end
@@ -18,41 +18,41 @@ module SessionTest
18
18
  set_session_for(ben)
19
19
  assert session = UserSession.find
20
20
  assert_equal ben, session.record
21
- assert_equal ben.persistence_token, @controller.session["user_credentials"]
21
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
22
22
  end
23
23
 
24
24
  def test_persist_persist_by_session_with_token_only
25
25
  ben = users(:ben)
26
26
  set_session_for(ben)
27
- @controller.session["user_credentials_id"] = nil
27
+ controller.session["user_credentials_id"] = nil
28
28
  assert session = UserSession.find
29
29
  assert_equal ben, session.record
30
- assert_equal ben.persistence_token, @controller.session["user_credentials"]
30
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
31
31
  end
32
32
 
33
33
  def test_after_save_update_session
34
34
  ben = users(:ben)
35
35
  session = UserSession.new(ben)
36
- assert @controller.session["user_credentials"].blank?
36
+ assert controller.session["user_credentials"].blank?
37
37
  assert session.save
38
- assert_equal ben.persistence_token, @controller.session["user_credentials"]
38
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
39
39
  end
40
40
 
41
41
  def test_after_destroy_update_session
42
42
  ben = users(:ben)
43
43
  set_session_for(ben)
44
- assert_equal ben.persistence_token, @controller.session["user_credentials"]
44
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
45
45
  assert session = UserSession.find
46
46
  assert session.destroy
47
- assert @controller.session["user_credentials"].blank?
47
+ assert controller.session["user_credentials"].blank?
48
48
  end
49
49
 
50
50
  def test_after_persisting_update_session
51
51
  ben = users(:ben)
52
52
  set_cookie_for(ben)
53
- assert @controller.session["user_credentials"].blank?
53
+ assert controller.session["user_credentials"].blank?
54
54
  assert UserSession.find
55
- assert_equal ben.persistence_token, @controller.session["user_credentials"]
55
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
56
56
  end
57
57
  end
58
58
  end
@@ -25,7 +25,7 @@ module SessionTest
25
25
  assert session.stale?
26
26
  assert_equal ben, session.stale_record
27
27
  assert_nil session.record
28
- assert_nil @controller.session["user_credentials_id"]
28
+ assert_nil controller.session["user_credentials_id"]
29
29
 
30
30
  set_session_for(ben)
31
31
 
@@ -38,6 +38,15 @@ module SessionTest
38
38
 
39
39
  UserSession.logout_on_timeout = false
40
40
  end
41
+
42
+ def test_successful_login
43
+ UserSession.logout_on_timeout = true
44
+ ben = users(:ben)
45
+ assert UserSession.create(:login => ben.login, :password => "benrocks")
46
+ assert session = UserSession.find
47
+ assert_equal ben, session.record
48
+ UserSession.logout_on_timeout = false
49
+ end
41
50
  end
42
51
  end
43
52
  end