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,53 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module ParamsTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_params_key
7
+ UserSession.params_key = "my_params_key"
8
+ assert_equal "my_params_key", UserSession.params_key
9
+
10
+ UserSession.params_key "user_credentials"
11
+ assert_equal "user_credentials", UserSession.params_key
12
+ end
13
+
14
+ def test_single_access_allowed_request_types
15
+ UserSession.single_access_allowed_request_types = ["my request type"]
16
+ assert_equal ["my request type"], UserSession.single_access_allowed_request_types
17
+
18
+ UserSession.single_access_allowed_request_types ["application/rss+xml", "application/atom+xml"]
19
+ assert_equal ["application/rss+xml", "application/atom+xml"], UserSession.single_access_allowed_request_types
20
+ end
21
+ end
22
+
23
+ class InstanceMethodsTest < ActiveSupport::TestCase
24
+ def test_persist_persist_by_params
25
+ ben = users(:ben)
26
+ session = UserSession.new
27
+
28
+ assert !session.persisting?
29
+ set_params_for(ben)
30
+
31
+ assert !session.persisting?
32
+ assert !session.unauthorized_record
33
+ assert !session.record
34
+ assert_nil controller.session["user_credentials"]
35
+
36
+ set_request_content_type("text/plain")
37
+ assert !session.persisting?
38
+ assert !session.unauthorized_record
39
+ assert_nil controller.session["user_credentials"]
40
+
41
+ set_request_content_type("application/atom+xml")
42
+ assert session.persisting?
43
+ assert_equal ben, session.record
44
+ assert_nil controller.session["user_credentials"] # should not persist since this is single access
45
+
46
+ set_request_content_type("application/rss+xml")
47
+ assert session.persisting?
48
+ assert_equal ben, session.unauthorized_record
49
+ assert_nil controller.session["user_credentials"]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,106 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module PasswordTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_find_by_login_method
7
+ UserSession.find_by_login_method = "my_login_method"
8
+ assert_equal "my_login_method", UserSession.find_by_login_method
9
+
10
+ UserSession.find_by_login_method "find_by_login"
11
+ assert_equal "find_by_login", UserSession.find_by_login_method
12
+ end
13
+
14
+ def test_verify_password_method
15
+ UserSession.verify_password_method = "my_login_method"
16
+ assert_equal "my_login_method", UserSession.verify_password_method
17
+
18
+ UserSession.verify_password_method "valid_password?"
19
+ assert_equal "valid_password?", UserSession.verify_password_method
20
+ end
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
+
44
+ def test_login_field
45
+ UserSession.configured_password_methods = false
46
+ UserSession.login_field = :saweet
47
+ assert_equal :saweet, UserSession.login_field
48
+ session = UserSession.new
49
+ assert session.respond_to?(:saweet)
50
+
51
+ UserSession.login_field :login
52
+ assert_equal :login, UserSession.login_field
53
+ session = UserSession.new
54
+ assert session.respond_to?(:login)
55
+ end
56
+
57
+ def test_password_field
58
+ UserSession.configured_password_methods = false
59
+ UserSession.password_field = :saweet
60
+ assert_equal :saweet, UserSession.password_field
61
+ session = UserSession.new
62
+ assert session.respond_to?(:saweet)
63
+
64
+ UserSession.password_field :password
65
+ assert_equal :password, UserSession.password_field
66
+ session = UserSession.new
67
+ assert session.respond_to?(:password)
68
+ end
69
+ end
70
+
71
+ class InstanceMethodsTest < ActiveSupport::TestCase
72
+ def test_init
73
+ session = UserSession.new
74
+ assert session.respond_to?(:login)
75
+ assert session.respond_to?(:login=)
76
+ assert session.respond_to?(:password)
77
+ assert session.respond_to?(:password=)
78
+ assert session.respond_to?(:protected_password, true)
79
+ end
80
+
81
+ def test_credentials
82
+ session = UserSession.new
83
+ session.credentials = {:login => "login", :password => "pass"}
84
+ assert_equal "login", session.login
85
+ assert_nil session.password
86
+ assert_equal "pass", session.send(:protected_password)
87
+ assert_equal({:password => "<protected>", :login => "login"}, session.credentials)
88
+ end
89
+
90
+ def test_credentials_are_params_safe
91
+ session = UserSession.new
92
+ assert_nothing_raised { session.credentials = {:hacker_method => "error!"} }
93
+ end
94
+
95
+ def test_save_with_credentials
96
+ ben = users(:ben)
97
+ session = UserSession.new(:login => ben.login, :password => "benrocks")
98
+ assert session.save
99
+ assert !session.new_session?
100
+ assert_equal 1, session.record.login_count
101
+ assert Time.zone.now >= session.record.current_login_at
102
+ assert_equal "1.1.1.1", session.record.current_login_ip
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class PerishabilityTest < ActiveSupport::TestCase
5
+ def test_after_save
6
+ ben = users(:ben)
7
+ old_perishable_token = ben.perishable_token
8
+ session = UserSession.create(ben)
9
+ assert_not_equal old_perishable_token, ben.perishable_token
10
+
11
+ drew = employees(:drew)
12
+ assert UserSession.create(drew)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class PersistenceTest < ActiveSupport::TestCase
5
+ def test_find
6
+ ben = users(:ben)
7
+ assert !UserSession.find
8
+ http_basic_auth_for(ben) { assert UserSession.find }
9
+ set_cookie_for(ben)
10
+ assert UserSession.find
11
+ unset_cookie
12
+ set_session_for(ben)
13
+ session = UserSession.find
14
+ assert session
15
+ end
16
+
17
+ def test_persisting
18
+ # tested thoroughly in test_find
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class ScopesTest < ActiveSupport::TestCase
5
+ def test_scope_method
6
+ assert_nil Authlogic::Session::Base.scope
7
+
8
+ thread1 = Thread.new do
9
+ scope = {:id => :scope1}
10
+ Authlogic::Session::Base.send(:scope=, scope)
11
+ assert_equal scope, Authlogic::Session::Base.scope
12
+ end
13
+ thread1.join
14
+
15
+ assert_nil Authlogic::Session::Base.scope
16
+
17
+ thread2 = Thread.new do
18
+ scope = {:id => :scope2}
19
+ Authlogic::Session::Base.send(:scope=, scope)
20
+ assert_equal scope, Authlogic::Session::Base.scope
21
+ end
22
+ thread2.join
23
+
24
+ assert_nil Authlogic::Session::Base.scope
25
+ end
26
+
27
+ def test_with_scope_method
28
+ assert_raise(ArgumentError) { UserSession.with_scope }
29
+
30
+ UserSession.with_scope(:find_options => {:conditions => "awesome = 1"}, :id => "some_id") do
31
+ assert_equal({:find_options => {:conditions => "awesome = 1"}, :id => "some_id"}, UserSession.scope)
32
+ end
33
+
34
+ assert_nil UserSession.scope
35
+ end
36
+
37
+ def test_initialize
38
+ UserSession.with_scope(:find_options => {:conditions => "awesome = 1"}, :id => "some_id") do
39
+ session = UserSession.new
40
+ assert_equal({:find_options => {:conditions => "awesome = 1"}, :id => "some_id"}, session.scope)
41
+ session.id = :another_id
42
+ assert_equal "another_id_some_id_test", session.send(:build_key, "test")
43
+ end
44
+ end
45
+
46
+ def test_search_for_record_with_scopes
47
+ binary_logic = companies(:binary_logic)
48
+ ben = users(:ben)
49
+ zack = users(:zack)
50
+
51
+ session = UserSession.new
52
+ assert_equal zack, session.send(:search_for_record, "find_by_login", zack.login)
53
+
54
+ session.scope = {:find_options => {:conditions => ["company_id = ?", binary_logic.id]}}
55
+ assert_nil session.send(:search_for_record, "find_by_login", zack.login)
56
+
57
+ assert_equal ben, session.send(:search_for_record, "find_by_login", ben.login)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module SessionTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_session_key
7
+ UserSession.session_key = "my_session_key"
8
+ assert_equal "my_session_key", UserSession.session_key
9
+
10
+ UserSession.session_key "user_credentials"
11
+ assert_equal "user_credentials", UserSession.session_key
12
+ end
13
+ end
14
+
15
+ class InstanceMethodsTest < ActiveSupport::TestCase
16
+ def test_persist_persist_by_session
17
+ ben = users(:ben)
18
+ set_session_for(ben)
19
+ assert session = UserSession.find
20
+ assert_equal ben, session.record
21
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
22
+ end
23
+
24
+ def test_persist_persist_by_session_with_token_only
25
+ ben = users(:ben)
26
+ set_session_for(ben)
27
+ controller.session["user_credentials_id"] = nil
28
+ assert session = UserSession.find
29
+ assert_equal ben, session.record
30
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
31
+ end
32
+
33
+ def test_after_save_update_session
34
+ ben = users(:ben)
35
+ session = UserSession.new(ben)
36
+ assert controller.session["user_credentials"].blank?
37
+ assert session.save
38
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
39
+ end
40
+
41
+ def test_after_destroy_update_session
42
+ ben = users(:ben)
43
+ set_session_for(ben)
44
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
45
+ assert session = UserSession.find
46
+ assert session.destroy
47
+ assert controller.session["user_credentials"].blank?
48
+ end
49
+
50
+ def test_after_persisting_update_session
51
+ ben = users(:ben)
52
+ set_cookie_for(ben)
53
+ assert controller.session["user_credentials"].blank?
54
+ assert UserSession.find
55
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module TimeoutTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_logout_on_timeout
7
+ UserSession.logout_on_timeout = true
8
+ assert UserSession.logout_on_timeout
9
+
10
+ UserSession.logout_on_timeout false
11
+ assert !UserSession.logout_on_timeout
12
+ end
13
+ end
14
+
15
+ class InstanceMethods < ActiveSupport::TestCase
16
+ def test_stale_state
17
+ UserSession.logout_on_timeout = true
18
+ ben = users(:ben)
19
+ ben.last_request_at = 3.years.ago
20
+ ben.save
21
+ set_session_for(ben)
22
+
23
+ session = UserSession.new
24
+ assert session.persisting?
25
+ assert session.stale?
26
+ assert_equal ben, session.stale_record
27
+ assert_nil session.record
28
+ assert_nil controller.session["user_credentials_id"]
29
+
30
+ set_session_for(ben)
31
+
32
+ ben.last_request_at = Time.zone.now
33
+ ben.save
34
+
35
+ assert session.persisting?
36
+ assert !session.stale?
37
+ assert_nil session.stale_record
38
+
39
+ UserSession.logout_on_timeout = false
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
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class UnauthorizedRecordTest < ActiveSupport::TestCase
5
+ def test_credentials
6
+ ben = users(:ben)
7
+ session = UserSession.new
8
+ session.credentials = [ben]
9
+ assert_equal ben, session.unauthorized_record
10
+ assert_equal({:unauthorized_record => "<protected>"}, session.credentials)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class ValidationTest < ActiveSupport::TestCase
5
+ def test_errors
6
+ session = UserSession.new
7
+ assert session.errors.is_a?(Authlogic::Session::Validation::Errors)
8
+ end
9
+
10
+ def test_valid
11
+ session = UserSession.new
12
+ assert !session.valid?
13
+ assert_nil session.record
14
+ assert session.errors.count > 0
15
+
16
+ ben = users(:ben)
17
+ session.unauthorized_record = ben
18
+ assert session.valid?
19
+ assert_equal ben, session.attempted_record
20
+ assert session.errors.empty?
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,174 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require "ruby-debug"
4
+ require "active_record"
5
+ require "active_record/fixtures"
6
+
7
+ # A temporary fix to bring active record errors up to speed with rails edge.
8
+ # I need to remove this once the new gem is released. This is only here so my tests pass.
9
+ class ActiveRecord::Errors
10
+ def [](key)
11
+ value = on(key)
12
+ value.is_a?(Array) ? value : [value].compact
13
+ end
14
+ end
15
+
16
+
17
+ ActiveRecord::Schema.verbose = false
18
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:")
19
+ ActiveRecord::Base.configurations = true
20
+ ActiveRecord::Schema.define(:version => 1) do
21
+ create_table :companies do |t|
22
+ t.datetime :created_at
23
+ t.datetime :updated_at
24
+ t.string :name
25
+ t.boolean :active
26
+ end
27
+
28
+ create_table :projects do |t|
29
+ t.datetime :created_at
30
+ t.datetime :updated_at
31
+ t.string :name
32
+ end
33
+
34
+ create_table :projects_users, :id => false do |t|
35
+ t.integer :project_id
36
+ t.integer :user_id
37
+ end
38
+
39
+ create_table :users do |t|
40
+ t.datetime :created_at
41
+ t.datetime :updated_at
42
+ t.integer :lock_version, :default => 0
43
+ t.integer :company_id
44
+ t.string :login
45
+ t.string :crypted_password
46
+ t.string :password_salt
47
+ t.string :persistence_token
48
+ t.string :single_access_token
49
+ t.string :perishable_token
50
+ t.string :email
51
+ t.string :first_name
52
+ t.string :last_name
53
+ t.integer :login_count, :default => 0, :null => false
54
+ t.integer :failed_login_count, :default => 0, :null => false
55
+ t.datetime :last_request_at
56
+ t.datetime :current_login_at
57
+ t.datetime :last_login_at
58
+ t.string :current_login_ip
59
+ t.string :last_login_ip
60
+ t.boolean :active, :default => true
61
+ t.boolean :approved, :default => true
62
+ t.boolean :confirmed, :default => true
63
+ end
64
+
65
+ create_table :employees do |t|
66
+ t.datetime :created_at
67
+ t.datetime :updated_at
68
+ t.integer :company_id
69
+ t.string :email
70
+ t.string :crypted_password
71
+ t.string :password_salt
72
+ t.string :persistence_token
73
+ t.string :first_name
74
+ t.string :last_name
75
+ t.integer :login_count, :default => 0, :null => false
76
+ t.datetime :last_request_at
77
+ t.datetime :current_login_at
78
+ t.datetime :last_login_at
79
+ t.string :current_login_ip
80
+ t.string :last_login_ip
81
+ end
82
+
83
+ create_table :affiliates do |t|
84
+ t.datetime :created_at
85
+ t.datetime :updated_at
86
+ t.integer :company_id
87
+ t.string :username
88
+ t.string :pw_hash
89
+ t.string :pw_salt
90
+ t.string :persistence_token
91
+ end
92
+
93
+ create_table :ldapers do |t|
94
+ t.datetime :created_at
95
+ t.datetime :updated_at
96
+ t.string :ldap_login
97
+ t.string :persistence_token
98
+ end
99
+ end
100
+
101
+ require File.dirname(__FILE__) + '/../lib/authlogic' unless defined?(Authlogic)
102
+ require File.dirname(__FILE__) + '/../lib/authlogic/test_case'
103
+ require File.dirname(__FILE__) + '/libs/project'
104
+ require File.dirname(__FILE__) + '/libs/affiliate'
105
+ require File.dirname(__FILE__) + '/libs/employee'
106
+ require File.dirname(__FILE__) + '/libs/employee_session'
107
+ require File.dirname(__FILE__) + '/libs/ldaper'
108
+ require File.dirname(__FILE__) + '/libs/user'
109
+ require File.dirname(__FILE__) + '/libs/user_session'
110
+ require File.dirname(__FILE__) + '/libs/company'
111
+
112
+ Authlogic::CryptoProviders::AES256.key = "myafdsfddddddddddddddddddddddddddddddddddddddddddddddd"
113
+
114
+ class ActiveSupport::TestCase
115
+ include ActiveRecord::TestFixtures
116
+ self.fixture_path = File.dirname(__FILE__) + "/fixtures"
117
+ self.use_transactional_fixtures = false
118
+ self.use_instantiated_fixtures = false
119
+ self.pre_loaded_fixtures = false
120
+ fixtures :all
121
+ setup :activate_authlogic
122
+
123
+ private
124
+ def password_for(user)
125
+ case user
126
+ when users(:ben)
127
+ "benrocks"
128
+ when users(:zack)
129
+ "zackrocks"
130
+ end
131
+ end
132
+
133
+ def http_basic_auth_for(user = nil, &block)
134
+ unless user.blank?
135
+ controller.http_user = user.login
136
+ controller.http_password = password_for(user)
137
+ end
138
+ yield
139
+ controller.http_user = controller.http_password = nil
140
+ end
141
+
142
+ def set_cookie_for(user, id = nil)
143
+ controller.cookies["user_credentials"] = {:value => user.persistence_token, :expires => nil}
144
+ end
145
+
146
+ def unset_cookie
147
+ controller.cookies["user_credentials"] = nil
148
+ end
149
+
150
+ def set_params_for(user, id = nil)
151
+ controller.params["user_credentials"] = user.single_access_token
152
+ end
153
+
154
+ def unset_params
155
+ controller.params["user_credentials"] = nil
156
+ end
157
+
158
+ def set_request_content_type(type)
159
+ controller.request_content_type = type
160
+ end
161
+
162
+ def unset_request_content_type
163
+ controller.request_content_type = nil
164
+ end
165
+
166
+ def set_session_for(user, id = nil)
167
+ controller.session["user_credentials"] = user.persistence_token
168
+ controller.session["user_credentials_id"] = user.id
169
+ end
170
+
171
+ def unset_session
172
+ controller.session["user_credentials"] = controller.session["user_credentials_id"] = nil
173
+ end
174
+ end