kschrader-authlogic 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 (120) hide show
  1. data/.gitignore +9 -0
  2. data/CHANGELOG.rdoc +346 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +245 -0
  5. data/Rakefile +49 -0
  6. data/VERSION.yml +4 -0
  7. data/authlogic.gemspec +205 -0
  8. data/generators/session/session_generator.rb +9 -0
  9. data/generators/session/templates/session.rb +2 -0
  10. data/init.rb +1 -0
  11. data/lib/authlogic.rb +55 -0
  12. data/lib/authlogic/acts_as_authentic/base.rb +112 -0
  13. data/lib/authlogic/acts_as_authentic/email.rb +110 -0
  14. data/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
  15. data/lib/authlogic/acts_as_authentic/login.rb +141 -0
  16. data/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
  17. data/lib/authlogic/acts_as_authentic/password.rb +344 -0
  18. data/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
  19. data/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
  20. data/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
  21. data/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
  22. data/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
  23. data/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
  24. data/lib/authlogic/authenticates_many/association.rb +42 -0
  25. data/lib/authlogic/authenticates_many/base.rb +55 -0
  26. data/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
  27. data/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
  28. data/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
  29. data/lib/authlogic/crypto_providers/aes256.rb +43 -0
  30. data/lib/authlogic/crypto_providers/bcrypt.rb +89 -0
  31. data/lib/authlogic/crypto_providers/md5.rb +34 -0
  32. data/lib/authlogic/crypto_providers/sha1.rb +35 -0
  33. data/lib/authlogic/crypto_providers/sha512.rb +50 -0
  34. data/lib/authlogic/i18n.rb +63 -0
  35. data/lib/authlogic/random.rb +33 -0
  36. data/lib/authlogic/regex.rb +25 -0
  37. data/lib/authlogic/session/activation.rb +58 -0
  38. data/lib/authlogic/session/active_record_trickery.rb +55 -0
  39. data/lib/authlogic/session/base.rb +37 -0
  40. data/lib/authlogic/session/brute_force_protection.rb +92 -0
  41. data/lib/authlogic/session/callbacks.rb +87 -0
  42. data/lib/authlogic/session/cookies.rb +130 -0
  43. data/lib/authlogic/session/existence.rb +93 -0
  44. data/lib/authlogic/session/foundation.rb +63 -0
  45. data/lib/authlogic/session/http_auth.rb +58 -0
  46. data/lib/authlogic/session/id.rb +41 -0
  47. data/lib/authlogic/session/klass.rb +75 -0
  48. data/lib/authlogic/session/magic_columns.rb +94 -0
  49. data/lib/authlogic/session/magic_states.rb +58 -0
  50. data/lib/authlogic/session/params.rb +100 -0
  51. data/lib/authlogic/session/password.rb +231 -0
  52. data/lib/authlogic/session/perishable_token.rb +18 -0
  53. data/lib/authlogic/session/persistence.rb +70 -0
  54. data/lib/authlogic/session/priority_record.rb +34 -0
  55. data/lib/authlogic/session/scopes.rb +101 -0
  56. data/lib/authlogic/session/session.rb +60 -0
  57. data/lib/authlogic/session/timeout.rb +82 -0
  58. data/lib/authlogic/session/unauthorized_record.rb +50 -0
  59. data/lib/authlogic/session/validation.rb +80 -0
  60. data/lib/authlogic/test_case.rb +114 -0
  61. data/lib/authlogic/test_case/mock_controller.rb +45 -0
  62. data/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  63. data/lib/authlogic/test_case/mock_logger.rb +10 -0
  64. data/lib/authlogic/test_case/mock_request.rb +19 -0
  65. data/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  66. data/rails/init.rb +1 -0
  67. data/shoulda_macros/authlogic.rb +13 -0
  68. data/test/acts_as_authentic_test/base_test.rb +18 -0
  69. data/test/acts_as_authentic_test/email_test.rb +97 -0
  70. data/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
  71. data/test/acts_as_authentic_test/login_test.rb +109 -0
  72. data/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
  73. data/test/acts_as_authentic_test/password_test.rb +236 -0
  74. data/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
  75. data/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
  76. data/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  77. data/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
  78. data/test/acts_as_authentic_test/single_access_test.rb +44 -0
  79. data/test/authenticates_many_test.rb +16 -0
  80. data/test/crypto_provider_test/aes256_test.rb +14 -0
  81. data/test/crypto_provider_test/bcrypt_test.rb +14 -0
  82. data/test/crypto_provider_test/sha1_test.rb +23 -0
  83. data/test/crypto_provider_test/sha512_test.rb +14 -0
  84. data/test/fixtures/companies.yml +5 -0
  85. data/test/fixtures/employees.yml +17 -0
  86. data/test/fixtures/projects.yml +3 -0
  87. data/test/fixtures/users.yml +24 -0
  88. data/test/libs/affiliate.rb +7 -0
  89. data/test/libs/company.rb +6 -0
  90. data/test/libs/employee.rb +7 -0
  91. data/test/libs/employee_session.rb +2 -0
  92. data/test/libs/ldaper.rb +3 -0
  93. data/test/libs/ordered_hash.rb +9 -0
  94. data/test/libs/project.rb +3 -0
  95. data/test/libs/user.rb +5 -0
  96. data/test/libs/user_session.rb +2 -0
  97. data/test/random_test.rb +49 -0
  98. data/test/session_test/activation_test.rb +43 -0
  99. data/test/session_test/active_record_trickery_test.rb +27 -0
  100. data/test/session_test/brute_force_protection_test.rb +101 -0
  101. data/test/session_test/callbacks_test.rb +6 -0
  102. data/test/session_test/cookies_test.rb +107 -0
  103. data/test/session_test/credentials_test.rb +0 -0
  104. data/test/session_test/existence_test.rb +64 -0
  105. data/test/session_test/http_auth_test.rb +28 -0
  106. data/test/session_test/id_test.rb +17 -0
  107. data/test/session_test/klass_test.rb +35 -0
  108. data/test/session_test/magic_columns_test.rb +62 -0
  109. data/test/session_test/magic_states_test.rb +60 -0
  110. data/test/session_test/params_test.rb +53 -0
  111. data/test/session_test/password_test.rb +106 -0
  112. data/test/session_test/perishability_test.rb +15 -0
  113. data/test/session_test/persistence_test.rb +21 -0
  114. data/test/session_test/scopes_test.rb +60 -0
  115. data/test/session_test/session_test.rb +59 -0
  116. data/test/session_test/timeout_test.rb +52 -0
  117. data/test/session_test/unauthorized_record_test.rb +13 -0
  118. data/test/session_test/validation_test.rb +23 -0
  119. data/test/test_helper.rb +174 -0
  120. metadata +229 -0
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module ActsAsAuthenticTest
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
+
13
+ def test_login_after_create
14
+ assert User.create(:login => "awesome", :password => "saweet", :password_confirmation => "saweet", :email => "awesome@awesome.com")
15
+ assert UserSession.find
16
+ end
17
+
18
+ def test_updating_session_with_failed_magic_state
19
+ ben = users(:ben)
20
+ ben.confirmed = false
21
+ ben.password = "newpass"
22
+ ben.password_confirmation = "newpass"
23
+ assert ben.save
24
+ end
25
+
26
+ def test_update_session_after_password_modify
27
+ ben = users(:ben)
28
+ UserSession.create(ben)
29
+ old_session_key = controller.session["user_credentials"]
30
+ old_cookie_key = controller.cookies["user_credentials"]
31
+ ben.password = "newpass"
32
+ ben.password_confirmation = "newpass"
33
+ assert ben.save
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
38
+ end
39
+
40
+ def test_no_session_update_after_modify
41
+ ben = users(:ben)
42
+ UserSession.create(ben)
43
+ old_session_key = controller.session["user_credentials"]
44
+ old_cookie_key = controller.cookies["user_credentials"]
45
+ ben.first_name = "Ben"
46
+ assert ben.save
47
+ assert_equal controller.session["user_credentials"], old_session_key
48
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
49
+ end
50
+
51
+ def test_creating_other_user
52
+ ben = users(:ben)
53
+ UserSession.create(ben)
54
+ old_session_key = controller.session["user_credentials"]
55
+ old_cookie_key = controller.cookies["user_credentials"]
56
+ assert User.create(:login => "awesome", :password => "saweet", :password_confirmation => "saweet", :email => "awesome@saweet.com")
57
+ assert_equal controller.session["user_credentials"], old_session_key
58
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
59
+ end
60
+
61
+ def test_updating_other_user
62
+ ben = users(:ben)
63
+ UserSession.create(ben)
64
+ old_session_key = controller.session["user_credentials"]
65
+ old_cookie_key = controller.cookies["user_credentials"]
66
+ zack = users(:zack)
67
+ zack.password = "newpass"
68
+ zack.password_confirmation = "newpass"
69
+ assert zack.save
70
+ assert_equal controller.session["user_credentials"], old_session_key
71
+ assert_equal controller.cookies["user_credentials"], old_cookie_key
72
+ end
73
+
74
+ def test_resetting_password_when_logged_out
75
+ ben = users(:ben)
76
+ assert !UserSession.find
77
+ ben.password = "newpass"
78
+ ben.password_confirmation = "newpass"
79
+ assert ben.save
80
+ assert UserSession.find
81
+ assert_equal ben, UserSession.find.record
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module ActsAsAuthenticTest
4
+ class SingleAccessTest < ActiveSupport::TestCase
5
+ def test_change_single_access_token_with_password_config
6
+ assert !User.change_single_access_token_with_password
7
+ assert !Employee.change_single_access_token_with_password
8
+
9
+ User.change_single_access_token_with_password = true
10
+ assert User.change_single_access_token_with_password
11
+ User.change_single_access_token_with_password false
12
+ assert !User.change_single_access_token_with_password
13
+ end
14
+
15
+ def test_validates_uniqueness_of_single_access_token
16
+ u = User.new
17
+ u.single_access_token = users(:ben).single_access_token
18
+ assert !u.valid?
19
+ assert u.errors[:single_access_token].size > 0
20
+ end
21
+
22
+ def test_before_validation_reset_single_access_token
23
+ u = User.new
24
+ assert !u.valid?
25
+ assert_not_nil u.single_access_token
26
+ end
27
+
28
+ def test_after_password_set_reset_single_access_token
29
+ User.change_single_access_token_with_password = true
30
+
31
+ ben = users(:ben)
32
+ old_single_access_token = ben.single_access_token
33
+ ben.password = "new_pass"
34
+ assert_not_equal old_single_access_token, ben.single_access_token
35
+
36
+ User.change_single_access_token_with_password = false
37
+ end
38
+
39
+ def test_after_password_set_is_not_called
40
+ ldaper = Ldaper.new
41
+ assert ldaper.save
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class AuthenticatesManyTest < ActiveSupport::TestCase
4
+ def test_scoping
5
+ zack = users(:zack)
6
+ ben = users(:ben)
7
+ binary_logic = companies(:binary_logic)
8
+ set_session_for(zack)
9
+
10
+ assert !binary_logic.user_sessions.find
11
+
12
+ set_session_for(ben)
13
+
14
+ assert binary_logic.user_sessions.find
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module CryptoProviderTest
4
+ class AES256Test < ActiveSupport::TestCase
5
+ def test_encrypt
6
+ assert Authlogic::CryptoProviders::AES256.encrypt("mypass")
7
+ end
8
+
9
+ def test_matches
10
+ hash = Authlogic::CryptoProviders::AES256.encrypt("mypass")
11
+ assert Authlogic::CryptoProviders::AES256.matches?(hash, "mypass")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module CryptoProviderTest
4
+ class BCrpytTest < ActiveSupport::TestCase
5
+ def test_encrypt
6
+ assert Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
7
+ end
8
+
9
+ def test_matches
10
+ hash = Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
11
+ assert Authlogic::CryptoProviders::BCrypt.matches?(hash, "mypass")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module CryptoProviderTest
4
+ class Sha1Test < ActiveSupport::TestCase
5
+ def test_encrypt
6
+ assert Authlogic::CryptoProviders::Sha1.encrypt("mypass")
7
+ end
8
+
9
+ def test_matches
10
+ hash = Authlogic::CryptoProviders::Sha1.encrypt("mypass")
11
+ assert Authlogic::CryptoProviders::Sha1.matches?(hash, "mypass")
12
+ end
13
+
14
+ def test_old_restful_authentication_passwords
15
+ password = "test"
16
+ salt = "7e3041ebc2fc05a40c60028e2c4901a81035d3cd"
17
+ digest = "00742970dc9e6319f8019fd54864d3ea740f04b1"
18
+ Authlogic::CryptoProviders::Sha1.stretches = 1
19
+ assert Authlogic::CryptoProviders::Sha1.matches?(digest, nil, salt, password, nil)
20
+ Authlogic::CryptoProviders::Sha1.stretches = 10
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module CryptoProviderTest
4
+ class Sha512Test < ActiveSupport::TestCase
5
+ def test_encrypt
6
+ assert Authlogic::CryptoProviders::Sha512.encrypt("mypass")
7
+ end
8
+
9
+ def test_matches
10
+ hash = Authlogic::CryptoProviders::Sha512.encrypt("mypass")
11
+ assert Authlogic::CryptoProviders::Sha512.matches?(hash, "mypass")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ binary_logic:
2
+ name: Binary Logic
3
+
4
+ logic_over_data:
5
+ name: Logic Over Data
@@ -0,0 +1,17 @@
1
+ drew:
2
+ company: binary_logic
3
+ email: dgainor@binarylogic.com
4
+ password_salt: <%= salt = Authlogic::Random.hex_token %>
5
+ crypted_password: '<%= Employee.crypto_provider.encrypt("drewrocks" + salt) %>'
6
+ persistence_token: 5273d85ed156e9dbd6a7c1438d319ef8c8d41dd24368db6c222de11346c7b11e53ee08d45ecf619b1c1dc91233d22b372482b751b066d0a6f6f9bac42eacaabf
7
+ first_name: Drew
8
+ last_name: Gainor
9
+
10
+ jennifer:
11
+ company: logic_over_data
12
+ email: jjohnson@logicoverdata.com
13
+ password_salt: <%= salt = Authlogic::Random.hex_token %>
14
+ crypted_password: '<%= Employee.crypto_provider.encrypt("jenniferocks" + salt) %>'
15
+ persistence_token: 2be52a8f741ad00056e6f94eb6844d5316527206da7a3a5e3d0e14d19499ef9fe4c47c89b87febb59a2b41a69edfb4733b6b79302040f3de83f297c6991c75a2
16
+ first_name: Jennifer
17
+ last_name: Johnson
@@ -0,0 +1,3 @@
1
+ web_services:
2
+ name: web services
3
+ users: ben, zack
@@ -0,0 +1,24 @@
1
+ ben:
2
+ company: binary_logic
3
+ projects: web_services
4
+ login: bjohnson
5
+ password_salt: <%= salt = Authlogic::Random.hex_token %>
6
+ crypted_password: <%= Authlogic::CryptoProviders::Sha512.encrypt("benrocks" + salt) %>
7
+ persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
8
+ single_access_token: <%= Authlogic::Random.friendly_token %>
9
+ perishable_token: <%= Authlogic::Random.friendly_token %>
10
+ email: bjohnson@binarylogic.com
11
+ first_name: Ben
12
+ last_name: Johnson
13
+
14
+ zack:
15
+ company: logic_over_data
16
+ projects: web_services
17
+ login: zackham
18
+ password_salt: <%= salt = Authlogic::Random.hex_token %>
19
+ crypted_password: <%= Authlogic::CryptoProviders::Sha512.encrypt("zackrocks" + salt) %>
20
+ persistence_token: fd3c2d5ce09ab98e7547d21f1b3dcf9158a9a19b5d3022c0402f32ae197019fce3fdbc6614d7ee57d719bae53bb089e30edc9e5d6153e5bc3afca0ac1d320342
21
+ single_access_token: <%= Authlogic::Random.friendly_token %>
22
+ email: zham@ziggityzack.com
23
+ first_name: Zack
24
+ last_name: Ham
@@ -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,6 @@
1
+ class Company < ActiveRecord::Base
2
+ authenticates_many :employee_sessions
3
+ authenticates_many :user_sessions
4
+ has_many :employees, :dependent => :destroy
5
+ has_many :users, :dependent => :destroy
6
+ end
@@ -0,0 +1,7 @@
1
+ class Employee < ActiveRecord::Base
2
+ acts_as_authentic do |c|
3
+ c.crypto_provider Authlogic::CryptoProviders::AES256
4
+ end
5
+
6
+ belongs_to :company
7
+ end
@@ -0,0 +1,2 @@
1
+ class EmployeeSession < Authlogic::Session::Base
2
+ end
@@ -0,0 +1,3 @@
1
+ class Ldaper < ActiveRecord::Base
2
+ acts_as_authentic
3
+ end
@@ -0,0 +1,9 @@
1
+ class Hash
2
+ def each(&block)
3
+ sorted_keys = keys.sort { |a, b| a.to_s <=> b.to_s }
4
+ sorted_keys.each do |key|
5
+ yield key, self[key]
6
+ end
7
+ self
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ class Project < ActiveRecord::Base
2
+ has_and_belongs_to_many :users
3
+ end
data/test/libs/user.rb ADDED
@@ -0,0 +1,5 @@
1
+ class User < ActiveRecord::Base
2
+ acts_as_authentic
3
+ belongs_to :company
4
+ has_and_belongs_to_many :projects
5
+ end
@@ -0,0 +1,2 @@
1
+ class UserSession < Authlogic::Session::Base
2
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class RandomTest < ActiveSupport::TestCase
4
+ def test_random_tokens_have_consisten_length
5
+ with_any_random do
6
+ assert_equal 128, Authlogic::Random.hex_token.length
7
+ assert_equal 20, Authlogic::Random.friendly_token.length
8
+ end
9
+ end
10
+
11
+ def test_random_tokens_are_indeed_random
12
+ # this might fail if you are *really* unlucky :)
13
+ with_any_random do
14
+ assert_not_equal Authlogic::Random.hex_token, Authlogic::Random.hex_token
15
+ assert_not_equal Authlogic::Random.friendly_token, Authlogic::Random.friendly_token
16
+ end
17
+ end
18
+
19
+ private
20
+ def with_any_random(&block)
21
+ [true, false].each {|val| with_secure_random_enabled(val, &block)}
22
+ end
23
+
24
+ def with_secure_random_enabled(enabled = true)
25
+ # can't really test SecureRandom if we don't have an implementation
26
+ return if enabled && !Authlogic::Random::SecureRandom
27
+
28
+ current_sec_rand = Authlogic::Random::SecureRandom
29
+ reload_authlogic_with_sec_random!(current_sec_rand, enabled)
30
+
31
+ yield
32
+ ensure
33
+ reload_authlogic_with_sec_random!(current_sec_rand)
34
+ end
35
+
36
+ def reload_authlogic_with_sec_random!(secure_random, enabled = true)
37
+ silence_warnings do
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')
40
+ end
41
+ end
42
+
43
+ def silence_warnings
44
+ old_verbose, $VERBOSE = $VERBOSE, nil
45
+ yield
46
+ ensure
47
+ $VERBOSE = old_verbose
48
+ end
49
+ end
@@ -0,0 +1,43 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module ActivationTest
5
+ class ClassMethodsTest < ActiveSupport::TestCase
6
+ def test_activated
7
+ assert UserSession.activated?
8
+ Authlogic::Session::Base.controller = nil
9
+ assert !UserSession.activated?
10
+ end
11
+
12
+ def test_controller
13
+ Authlogic::Session::Base.controller = nil
14
+ assert_nil Authlogic::Session::Base.controller
15
+ thread1 = Thread.new do
16
+ controller = MockController.new
17
+ Authlogic::Session::Base.controller = controller
18
+ assert_equal controller, Authlogic::Session::Base.controller
19
+ end
20
+ thread1.join
21
+
22
+ assert_nil Authlogic::Session::Base.controller
23
+
24
+ thread2 = Thread.new do
25
+ controller = MockController.new
26
+ Authlogic::Session::Base.controller = controller
27
+ assert_equal controller, Authlogic::Session::Base.controller
28
+ end
29
+ thread2.join
30
+
31
+ assert_nil Authlogic::Session::Base.controller
32
+ end
33
+ end
34
+
35
+ class InstanceMethodsTest < ActiveSupport::TestCase
36
+ def test_init
37
+ UserSession.controller = nil
38
+ assert_raise(Authlogic::Session::Activation::NotActivatedError) { UserSession.new }
39
+ UserSession.controller = controller
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module ActiveRecordTrickeryTest
5
+ class ClassMethodsTest < ActiveSupport::TestCase
6
+ def test_human_attribute_name
7
+ assert_equal "Some attribute", UserSession.human_attribute_name("some_attribute")
8
+ assert_equal "Some attribute", UserSession.human_attribute_name(:some_attribute)
9
+ end
10
+
11
+ def test_human_name
12
+ assert_equal "Usersession", UserSession.human_name
13
+ end
14
+
15
+ def test_self_and_descendents_from_active_record
16
+ assert_equal [UserSession], UserSession.self_and_descendents_from_active_record
17
+ end
18
+ end
19
+
20
+ class InstanceMethodsTest < ActiveSupport::TestCase
21
+ def test_new_record
22
+ session = UserSession.new
23
+ assert session.new_record?
24
+ end
25
+ end
26
+ end
27
+ end