a_b 0.1.0
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.
- data/MIT-LICENSE +18 -0
- data/README.markdown +4 -0
- data/Rakefile +74 -0
- data/config.ru +3 -0
- data/config/database.example.yml +6 -0
- data/config/externals.yml +6 -0
- data/config/mail.example.yml +32 -0
- data/db/migrate/001_a_b_tests.rb +14 -0
- data/db/migrate/002_a_b_variants.rb +19 -0
- data/db/migrate/003_a_b_users.rb +25 -0
- data/db/migrate/004_a_b_tokens.rb +12 -0
- data/features/example.feature +10 -0
- data/features/support/env.rb +35 -0
- data/features/support/rspec.rb +11 -0
- data/features/support/webrat.rb +3 -0
- data/gemspec.rb +41 -0
- data/lib/a_b.rb +31 -0
- data/lib/a_b/boot.rb +30 -0
- data/lib/a_b/controller/api.rb +32 -0
- data/lib/a_b/controller/application.rb +6 -0
- data/lib/a_b/controller/index.rb +16 -0
- data/lib/a_b/controller/sessions.rb +28 -0
- data/lib/a_b/controller/tests.rb +37 -0
- data/lib/a_b/controller/variants.rb +14 -0
- data/lib/a_b/helper/api.rb +8 -0
- data/lib/a_b/helper/application.rb +56 -0
- data/lib/a_b/helper/index.rb +12 -0
- data/lib/a_b/model/a_b_test.rb +65 -0
- data/lib/a_b/model/a_b_variant.rb +131 -0
- data/lib/a_b/model/token.rb +22 -0
- data/lib/a_b/model/user.rb +5 -0
- data/lib/a_b/model/user_session.rb +4 -0
- data/lib/a_b/view/index.haml +129 -0
- data/lib/a_b/view/index.sass +55 -0
- data/lib/a_b/view/layout.haml +15 -0
- data/lib/a_b/view/layout.sass +34 -0
- data/lib/a_b/view/log_in.haml +15 -0
- data/lib/a_b/view/log_in.sass +11 -0
- data/public/css/blueprint/ie.css +35 -0
- data/public/css/blueprint/print.css +29 -0
- data/public/css/blueprint/screen.css +257 -0
- data/public/js/index.js +126 -0
- data/public/js/jquery.js +19 -0
- data/public/js/visit.js +59 -0
- data/script/console +2 -0
- data/script/env.rb +30 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +16 -0
- data/vendor/authlogic/CHANGELOG.rdoc +345 -0
- data/vendor/authlogic/LICENSE +20 -0
- data/vendor/authlogic/README.rdoc +246 -0
- data/vendor/authlogic/Rakefile +42 -0
- data/vendor/authlogic/VERSION.yml +5 -0
- data/vendor/authlogic/authlogic.gemspec +217 -0
- data/vendor/authlogic/generators/session/session_generator.rb +9 -0
- data/vendor/authlogic/generators/session/templates/session.rb +2 -0
- data/vendor/authlogic/init.rb +1 -0
- data/vendor/authlogic/lib/authlogic.rb +57 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/base.rb +107 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/email.rb +110 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/login.rb +141 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/password.rb +344 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
- data/vendor/authlogic/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
- data/vendor/authlogic/lib/authlogic/authenticates_many/association.rb +42 -0
- data/vendor/authlogic/lib/authlogic/authenticates_many/base.rb +55 -0
- data/vendor/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
- data/vendor/authlogic/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
- data/vendor/authlogic/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
- data/vendor/authlogic/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/aes256.rb +43 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/bcrypt.rb +90 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/md5.rb +34 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/sha1.rb +35 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/sha256.rb +50 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/sha512.rb +50 -0
- data/vendor/authlogic/lib/authlogic/crypto_providers/wordpress.rb +43 -0
- data/vendor/authlogic/lib/authlogic/i18n.rb +83 -0
- data/vendor/authlogic/lib/authlogic/i18n/translator.rb +15 -0
- data/vendor/authlogic/lib/authlogic/random.rb +33 -0
- data/vendor/authlogic/lib/authlogic/regex.rb +25 -0
- data/vendor/authlogic/lib/authlogic/session/activation.rb +58 -0
- data/vendor/authlogic/lib/authlogic/session/active_record_trickery.rb +61 -0
- data/vendor/authlogic/lib/authlogic/session/base.rb +37 -0
- data/vendor/authlogic/lib/authlogic/session/brute_force_protection.rb +96 -0
- data/vendor/authlogic/lib/authlogic/session/callbacks.rb +88 -0
- data/vendor/authlogic/lib/authlogic/session/cookies.rb +130 -0
- data/vendor/authlogic/lib/authlogic/session/existence.rb +93 -0
- data/vendor/authlogic/lib/authlogic/session/foundation.rb +63 -0
- data/vendor/authlogic/lib/authlogic/session/http_auth.rb +58 -0
- data/vendor/authlogic/lib/authlogic/session/id.rb +41 -0
- data/vendor/authlogic/lib/authlogic/session/klass.rb +78 -0
- data/vendor/authlogic/lib/authlogic/session/magic_columns.rb +95 -0
- data/vendor/authlogic/lib/authlogic/session/magic_states.rb +59 -0
- data/vendor/authlogic/lib/authlogic/session/params.rb +101 -0
- data/vendor/authlogic/lib/authlogic/session/password.rb +240 -0
- data/vendor/authlogic/lib/authlogic/session/perishable_token.rb +18 -0
- data/vendor/authlogic/lib/authlogic/session/persistence.rb +70 -0
- data/vendor/authlogic/lib/authlogic/session/priority_record.rb +34 -0
- data/vendor/authlogic/lib/authlogic/session/scopes.rb +101 -0
- data/vendor/authlogic/lib/authlogic/session/session.rb +62 -0
- data/vendor/authlogic/lib/authlogic/session/timeout.rb +82 -0
- data/vendor/authlogic/lib/authlogic/session/unauthorized_record.rb +50 -0
- data/vendor/authlogic/lib/authlogic/session/validation.rb +82 -0
- data/vendor/authlogic/lib/authlogic/test_case.rb +120 -0
- data/vendor/authlogic/lib/authlogic/test_case/mock_controller.rb +45 -0
- data/vendor/authlogic/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
- data/vendor/authlogic/lib/authlogic/test_case/mock_logger.rb +10 -0
- data/vendor/authlogic/lib/authlogic/test_case/mock_request.rb +19 -0
- data/vendor/authlogic/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
- data/vendor/authlogic/rails/init.rb +1 -0
- data/vendor/authlogic/shoulda_macros/authlogic.rb +69 -0
- data/vendor/authlogic/test/acts_as_authentic_test/base_test.rb +18 -0
- data/vendor/authlogic/test/acts_as_authentic_test/email_test.rb +97 -0
- data/vendor/authlogic/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
- data/vendor/authlogic/test/acts_as_authentic_test/login_test.rb +109 -0
- data/vendor/authlogic/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
- data/vendor/authlogic/test/acts_as_authentic_test/password_test.rb +236 -0
- data/vendor/authlogic/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
- data/vendor/authlogic/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
- data/vendor/authlogic/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
- data/vendor/authlogic/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
- data/vendor/authlogic/test/acts_as_authentic_test/single_access_test.rb +44 -0
- data/vendor/authlogic/test/authenticates_many_test.rb +16 -0
- data/vendor/authlogic/test/crypto_provider_test/aes256_test.rb +14 -0
- data/vendor/authlogic/test/crypto_provider_test/bcrypt_test.rb +14 -0
- data/vendor/authlogic/test/crypto_provider_test/sha1_test.rb +23 -0
- data/vendor/authlogic/test/crypto_provider_test/sha256_test.rb +14 -0
- data/vendor/authlogic/test/crypto_provider_test/sha512_test.rb +14 -0
- data/vendor/authlogic/test/fixtures/companies.yml +5 -0
- data/vendor/authlogic/test/fixtures/employees.yml +17 -0
- data/vendor/authlogic/test/fixtures/projects.yml +3 -0
- data/vendor/authlogic/test/fixtures/users.yml +24 -0
- data/vendor/authlogic/test/i18n_test.rb +33 -0
- data/vendor/authlogic/test/libs/affiliate.rb +7 -0
- data/vendor/authlogic/test/libs/company.rb +6 -0
- data/vendor/authlogic/test/libs/employee.rb +7 -0
- data/vendor/authlogic/test/libs/employee_session.rb +2 -0
- data/vendor/authlogic/test/libs/ldaper.rb +3 -0
- data/vendor/authlogic/test/libs/ordered_hash.rb +9 -0
- data/vendor/authlogic/test/libs/project.rb +3 -0
- data/vendor/authlogic/test/libs/user.rb +5 -0
- data/vendor/authlogic/test/libs/user_session.rb +6 -0
- data/vendor/authlogic/test/random_test.rb +49 -0
- data/vendor/authlogic/test/session_test/activation_test.rb +43 -0
- data/vendor/authlogic/test/session_test/active_record_trickery_test.rb +36 -0
- data/vendor/authlogic/test/session_test/brute_force_protection_test.rb +101 -0
- data/vendor/authlogic/test/session_test/callbacks_test.rb +6 -0
- data/vendor/authlogic/test/session_test/cookies_test.rb +112 -0
- data/vendor/authlogic/test/session_test/credentials_test.rb +0 -0
- data/vendor/authlogic/test/session_test/existence_test.rb +64 -0
- data/vendor/authlogic/test/session_test/http_auth_test.rb +28 -0
- data/vendor/authlogic/test/session_test/id_test.rb +17 -0
- data/vendor/authlogic/test/session_test/klass_test.rb +40 -0
- data/vendor/authlogic/test/session_test/magic_columns_test.rb +62 -0
- data/vendor/authlogic/test/session_test/magic_states_test.rb +60 -0
- data/vendor/authlogic/test/session_test/params_test.rb +53 -0
- data/vendor/authlogic/test/session_test/password_test.rb +106 -0
- data/vendor/authlogic/test/session_test/perishability_test.rb +15 -0
- data/vendor/authlogic/test/session_test/persistence_test.rb +21 -0
- data/vendor/authlogic/test/session_test/scopes_test.rb +60 -0
- data/vendor/authlogic/test/session_test/session_test.rb +59 -0
- data/vendor/authlogic/test/session_test/timeout_test.rb +52 -0
- data/vendor/authlogic/test/session_test/unauthorized_record_test.rb +13 -0
- data/vendor/authlogic/test/session_test/validation_test.rb +23 -0
- data/vendor/authlogic/test/test_helper.rb +182 -0
- metadata +325 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
|
2
|
+
|
|
3
|
+
module ActsAsAuthenticTest
|
|
4
|
+
class PersistenceTokenTest < ActiveSupport::TestCase
|
|
5
|
+
def test_after_password_set_reset_persistence_token
|
|
6
|
+
ben = users(:ben)
|
|
7
|
+
old_persistence_token = ben.persistence_token
|
|
8
|
+
ben.password = "newpass"
|
|
9
|
+
assert_not_equal old_persistence_token, ben.persistence_token
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_after_password_verification_reset_persistence_token
|
|
13
|
+
ben = users(:ben)
|
|
14
|
+
old_persistence_token = ben.persistence_token
|
|
15
|
+
assert ben.valid_password?(password_for(ben))
|
|
16
|
+
assert_equal old_persistence_token, ben.persistence_token
|
|
17
|
+
|
|
18
|
+
# only update it if it is nil
|
|
19
|
+
assert ben.update_attribute(:persistence_token, nil)
|
|
20
|
+
assert ben.valid_password?(password_for(ben))
|
|
21
|
+
assert_not_equal old_persistence_token, ben.persistence_token
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_before_validate_reset_persistence_token
|
|
25
|
+
u = User.new
|
|
26
|
+
assert !u.valid?
|
|
27
|
+
assert_not_nil u.persistence_token
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_forget_all
|
|
31
|
+
http_basic_auth_for(users(:ben)) { UserSession.find }
|
|
32
|
+
http_basic_auth_for(users(:zack)) { UserSession.find(:ziggity_zack) }
|
|
33
|
+
assert UserSession.find
|
|
34
|
+
assert UserSession.find(:ziggity_zack)
|
|
35
|
+
User.forget_all
|
|
36
|
+
assert !UserSession.find
|
|
37
|
+
assert !UserSession.find(:ziggity_zack)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_forget
|
|
41
|
+
ben = users(:ben)
|
|
42
|
+
zack = users(:zack)
|
|
43
|
+
http_basic_auth_for(ben) { UserSession.find }
|
|
44
|
+
http_basic_auth_for(zack) { UserSession.find(:ziggity_zack) }
|
|
45
|
+
|
|
46
|
+
assert ben.reload.logged_in?
|
|
47
|
+
assert zack.reload.logged_in?
|
|
48
|
+
|
|
49
|
+
ben.forget!
|
|
50
|
+
|
|
51
|
+
assert !UserSession.find
|
|
52
|
+
assert UserSession.find(:ziggity_zack)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
|
2
|
+
|
|
3
|
+
module ActsAsAuthenticTest
|
|
4
|
+
class RestfulAuthenticationTest < ActiveSupport::TestCase
|
|
5
|
+
def test_act_like_restful_authentication_config
|
|
6
|
+
assert !User.act_like_restful_authentication
|
|
7
|
+
assert !Employee.act_like_restful_authentication
|
|
8
|
+
|
|
9
|
+
User.act_like_restful_authentication = true
|
|
10
|
+
assert User.act_like_restful_authentication
|
|
11
|
+
assert_equal Authlogic::CryptoProviders::Sha1, User.crypto_provider
|
|
12
|
+
assert defined?(::REST_AUTH_SITE_KEY)
|
|
13
|
+
assert_equal '', ::REST_AUTH_SITE_KEY
|
|
14
|
+
assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
|
|
15
|
+
|
|
16
|
+
User.act_like_restful_authentication false
|
|
17
|
+
assert !User.act_like_restful_authentication
|
|
18
|
+
|
|
19
|
+
User.crypto_provider = Authlogic::CryptoProviders::Sha512
|
|
20
|
+
User.transition_from_crypto_providers = []
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_transition_from_restful_authentication_config
|
|
24
|
+
assert !User.transition_from_restful_authentication
|
|
25
|
+
assert !Employee.transition_from_restful_authentication
|
|
26
|
+
|
|
27
|
+
User.transition_from_restful_authentication = true
|
|
28
|
+
assert User.transition_from_restful_authentication
|
|
29
|
+
assert defined?(::REST_AUTH_SITE_KEY)
|
|
30
|
+
assert_equal '', ::REST_AUTH_SITE_KEY
|
|
31
|
+
assert_equal 1, Authlogic::CryptoProviders::Sha1.stretches
|
|
32
|
+
|
|
33
|
+
User.transition_from_restful_authentication false
|
|
34
|
+
assert !User.transition_from_restful_authentication
|
|
35
|
+
|
|
36
|
+
User.crypto_provider = Authlogic::CryptoProviders::Sha512
|
|
37
|
+
User.transition_from_crypto_providers = []
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -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 Sha256Test < ActiveSupport::TestCase
|
|
5
|
+
def test_encrypt
|
|
6
|
+
assert Authlogic::CryptoProviders::Sha256.encrypt("mypass")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_matches
|
|
10
|
+
hash = Authlogic::CryptoProviders::Sha256.encrypt("mypass")
|
|
11
|
+
assert Authlogic::CryptoProviders::Sha256.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 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,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,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,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
|