sorcery 0.8.4 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sorcery might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +54 -0
- data/.travis.yml +13 -1
- data/CHANGELOG.md +234 -0
- data/Gemfile +17 -14
- data/Gemfile.rails4 +24 -0
- data/README.md +300 -0
- data/Rakefile +3 -79
- data/VERSION +1 -1
- data/lib/generators/sorcery/helpers.rb +40 -0
- data/lib/generators/sorcery/install_generator.rb +21 -17
- data/lib/generators/sorcery/templates/initializer.rb +1 -1
- data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
- data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -7
- data/lib/generators/sorcery/templates/migration/core.rb +5 -8
- data/lib/generators/sorcery/templates/migration/external.rb +1 -5
- data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
- data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
- data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
- data/lib/sorcery/controller.rb +16 -4
- data/lib/sorcery/controller/submodules/external.rb +9 -8
- data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/facebook.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/github.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/google.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/liveid.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/twitter.rb +3 -2
- data/lib/sorcery/controller/submodules/external/providers/vk.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/xing.rb +2 -1
- data/lib/sorcery/controller/submodules/remember_me.rb +1 -1
- data/lib/sorcery/controller/submodules/session_timeout.rb +1 -1
- data/lib/sorcery/model.rb +9 -3
- data/lib/sorcery/model/adapters/mongoid.rb +3 -3
- data/lib/sorcery/model/submodules/brute_force_protection.rb +6 -8
- data/lib/sorcery/model/submodules/reset_password.rb +5 -1
- data/lib/sorcery/model/submodules/user_activation.rb +18 -4
- data/lib/sorcery/test_helpers/internal.rb +21 -4
- data/lib/sorcery/test_helpers/internal/rails.rb +4 -4
- data/lib/sorcery/test_helpers/rails.rb +2 -2
- data/sorcery.gemspec +25 -363
- data/spec/{rails3/spec → active_record}/controller_activity_logging_spec.rb +29 -19
- data/spec/active_record/controller_brute_force_protection_spec.rb +136 -0
- data/spec/{rails3/spec → active_record}/controller_http_basic_auth_spec.rb +26 -17
- data/spec/{rails3/spec → active_record}/controller_oauth2_spec.rb +93 -56
- data/spec/{rails3/spec → active_record}/controller_oauth_spec.rb +35 -29
- data/spec/{rails3/spec → active_record}/controller_remember_me_spec.rb +28 -28
- data/spec/{rails3/spec → active_record}/controller_session_timeout_spec.rb +11 -11
- data/spec/{rails3/spec → active_record}/controller_spec.rb +19 -19
- data/spec/{rails3/spec → active_record}/integration_spec.rb +2 -2
- data/spec/{rails3/spec → active_record}/user_activation_spec.rb +8 -6
- data/spec/active_record/user_activity_logging_spec.rb +8 -0
- data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +5 -4
- data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +5 -4
- data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +4 -3
- data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +6 -6
- data/spec/{rails3/spec → active_record}/user_spec.rb +12 -10
- data/spec/{rails3_mongo_mapper/spec → mongo_mapper}/controller_spec.rb +15 -15
- data/spec/mongo_mapper/user_activation_spec.rb +10 -0
- data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
- data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
- data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
- data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
- data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
- data/spec/{rails3_mongo_mapper/spec → mongo_mapper}/user_spec.rb +9 -8
- data/spec/{rails3_mongoid/spec → mongoid}/controller_activity_logging_spec.rb +8 -8
- data/spec/{rails3_mongoid/spec → mongoid}/controller_spec.rb +14 -14
- data/spec/mongoid/user_activation_spec.rb +10 -0
- data/spec/mongoid/user_activity_logging_spec.rb +9 -0
- data/spec/mongoid/user_brute_force_protection_spec.rb +9 -0
- data/spec/mongoid/user_oauth_spec.rb +9 -0
- data/spec/mongoid/user_remember_me_spec.rb +9 -0
- data/spec/mongoid/user_reset_password_spec.rb +9 -0
- data/spec/{rails3_mongoid/spec → mongoid}/user_spec.rb +10 -9
- data/spec/orm/active_record.rb +7 -0
- data/spec/orm/mongo_mapper.rb +10 -0
- data/spec/orm/mongoid.rb +17 -0
- data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
- data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
- data/spec/rails_app/app/active_record/user_provider.rb +3 -0
- data/spec/{rails3/app/controllers/application_controller.rb → rails_app/app/controllers/sorcery_controller.rb} +26 -15
- data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
- data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
- data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
- data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +0 -0
- data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
- data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
- data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
- data/spec/{rails3/app/views/sorcery_mailer/activation_success_email.html.erb → rails_app/app/views/sorcery_mailer/activation_needed_email.html.erb} +0 -0
- data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
- data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
- data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
- data/spec/{rails3_mongoid → rails_app}/config/application.rb +13 -8
- data/spec/rails_app/config/boot.rb +4 -0
- data/spec/rails_app/config/database.yml +22 -0
- data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
- data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
- data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
- data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
- data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
- data/spec/{rails3 → rails_app}/config/initializers/session_store.rb +4 -0
- data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
- data/spec/rails_app/config/routes.rb +37 -0
- data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
- data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
- data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
- data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +0 -0
- data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
- data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
- data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
- data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
- data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
- data/spec/{rails3 → rails_app}/public/404.html +0 -0
- data/spec/{rails3 → rails_app}/public/422.html +0 -0
- data/spec/{rails3 → rails_app}/public/500.html +0 -0
- data/spec/{rails3 → rails_app}/public/favicon.ico +0 -0
- data/spec/{rails3 → rails_app}/public/images/rails.png +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/application.js +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/controls.js +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/dragdrop.js +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/effects.js +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/prototype.js +0 -0
- data/spec/{rails3 → rails_app}/public/javascripts/rails.js +0 -0
- data/spec/{rails3 → rails_app}/public/robots.txt +0 -0
- data/spec/{rails3/lib/tasks → rails_app/public/stylesheets}/.gitkeep +0 -0
- data/spec/shared_examples/controller_oauth_shared_examples.rb +22 -8
- data/spec/shared_examples/user_activation_shared_examples.rb +49 -27
- data/spec/shared_examples/user_reset_password_shared_examples.rb +33 -21
- data/spec/shared_examples/user_shared_examples.rb +65 -50
- data/spec/sorcery_crypto_providers_spec.rb +47 -45
- data/spec/spec_helper.rb +38 -4
- metadata +117 -254
- data/Gemfile.lock +0 -175
- data/README.rdoc +0 -261
- data/spec/Gemfile +0 -12
- data/spec/Gemfile.lock +0 -129
- data/spec/README.md +0 -31
- data/spec/Rakefile +0 -12
- data/spec/rails3/.gitignore +0 -4
- data/spec/rails3/.rspec +0 -1
- data/spec/rails3/Gemfile +0 -15
- data/spec/rails3/Gemfile.lock +0 -162
- data/spec/rails3/README +0 -256
- data/spec/rails3/Rakefile +0 -11
- data/spec/rails3/config.ru +0 -4
- data/spec/rails3/config/application.rb +0 -46
- data/spec/rails3/config/boot.rb +0 -13
- data/spec/rails3/config/database.yml +0 -27
- data/spec/rails3/config/environments/development.rb +0 -26
- data/spec/rails3/config/environments/in_memory.rb +0 -35
- data/spec/rails3/config/environments/production.rb +0 -49
- data/spec/rails3/config/environments/test.rb +0 -35
- data/spec/rails3/config/routes.rb +0 -59
- data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
- data/spec/rails3/public/stylesheets/.gitkeep +0 -0
- data/spec/rails3/script/rails +0 -6
- data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
- data/spec/rails3/spec/spec.opts +0 -2
- data/spec/rails3/spec/spec_helper.orig.rb +0 -27
- data/spec/rails3/spec/spec_helper.rb +0 -71
- data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
- data/spec/rails3/vendor/plugins/.gitkeep +0 -0
- data/spec/rails3_mongo_mapper/.gitignore +0 -4
- data/spec/rails3_mongo_mapper/.rspec +0 -1
- data/spec/rails3_mongo_mapper/Gemfile +0 -16
- data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
- data/spec/rails3_mongo_mapper/Rakefile +0 -11
- data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
- data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
- data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
- data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
- data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
- data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
- data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
- data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
- data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
- data/spec/rails3_mongo_mapper/config/application.rb +0 -51
- data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
- data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
- data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
- data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
- data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
- data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
- data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
- data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
- data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
- data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
- data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
- data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
- data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
- data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
- data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
- data/spec/rails3_mongo_mapper/public/404.html +0 -26
- data/spec/rails3_mongo_mapper/public/422.html +0 -26
- data/spec/rails3_mongo_mapper/public/500.html +0 -26
- data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
- data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
- data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
- data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
- data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
- data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
- data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
- data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
- data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
- data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
- data/spec/rails3_mongo_mapper/script/rails +0 -6
- data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
- data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
- data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
- data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
- data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
- data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
- data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
- data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
- data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
- data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
- data/spec/rails3_mongoid/.gitignore +0 -4
- data/spec/rails3_mongoid/.rspec +0 -1
- data/spec/rails3_mongoid/Gemfile +0 -15
- data/spec/rails3_mongoid/Gemfile.lock +0 -146
- data/spec/rails3_mongoid/Rakefile +0 -11
- data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
- data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
- data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
- data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
- data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
- data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
- data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
- data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
- data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
- data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
- data/spec/rails3_mongoid/config.ru +0 -4
- data/spec/rails3_mongoid/config/boot.rb +0 -13
- data/spec/rails3_mongoid/config/environment.rb +0 -5
- data/spec/rails3_mongoid/config/environments/development.rb +0 -26
- data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
- data/spec/rails3_mongoid/config/environments/production.rb +0 -49
- data/spec/rails3_mongoid/config/environments/test.rb +0 -35
- data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
- data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
- data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
- data/spec/rails3_mongoid/config/initializers/session_store.rb +0 -8
- data/spec/rails3_mongoid/config/locales/en.yml +0 -5
- data/spec/rails3_mongoid/config/mongoid.yml +0 -7
- data/spec/rails3_mongoid/config/routes.rb +0 -59
- data/spec/rails3_mongoid/db/schema.rb +0 -23
- data/spec/rails3_mongoid/db/seeds.rb +0 -7
- data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
- data/spec/rails3_mongoid/public/404.html +0 -26
- data/spec/rails3_mongoid/public/422.html +0 -26
- data/spec/rails3_mongoid/public/500.html +0 -26
- data/spec/rails3_mongoid/public/favicon.ico +0 -0
- data/spec/rails3_mongoid/public/images/rails.png +0 -0
- data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
- data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
- data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
- data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
- data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
- data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
- data/spec/rails3_mongoid/public/robots.txt +0 -5
- data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
- data/spec/rails3_mongoid/script/rails +0 -6
- data/spec/rails3_mongoid/spec/spec.opts +0 -2
- data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
- data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
- data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
- data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
- data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
- data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
- data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
- data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
- data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
@@ -3,88 +3,102 @@ shared_examples_for "rails_3_core_model" do
|
|
3
3
|
after(:each) do
|
4
4
|
User.sorcery_config.reset!
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
it "should enable configuration option 'username_attribute_names'" do
|
8
8
|
sorcery_model_property_set(:username_attribute_names, :email)
|
9
9
|
User.sorcery_config.username_attribute_names.should == [:email]
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
it "should enable configuration option 'password_attribute_name'" do
|
13
13
|
sorcery_model_property_set(:password_attribute_name, :mypassword)
|
14
14
|
User.sorcery_config.password_attribute_name.should equal(:mypassword)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "should enable configuration option 'email_attribute_name'" do
|
18
18
|
sorcery_model_property_set(:email_attribute_name, :my_email)
|
19
19
|
User.sorcery_config.email_attribute_name.should equal(:my_email)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
it "should enable configuration option 'crypted_password_attribute_name'" do
|
23
23
|
sorcery_model_property_set(:crypted_password_attribute_name, :password)
|
24
24
|
User.sorcery_config.crypted_password_attribute_name.should equal(:password)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should enable configuration option 'salt_attribute_name'" do
|
28
28
|
sorcery_model_property_set(:salt_attribute_name, :my_salt)
|
29
29
|
User.sorcery_config.salt_attribute_name.should equal(:my_salt)
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
it "should enable configuration option 'encryption_algorithm'" do
|
33
33
|
sorcery_model_property_set(:encryption_algorithm, :none)
|
34
34
|
User.sorcery_config.encryption_algorithm.should equal(:none)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "should enable configuration option 'encryption_key'" do
|
38
38
|
sorcery_model_property_set(:encryption_key, 'asdadas424234242')
|
39
39
|
User.sorcery_config.encryption_key.should == 'asdadas424234242'
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
it "should enable configuration option 'custom_encryption_provider'" do
|
43
43
|
sorcery_model_property_set(:encryption_algorithm, :custom)
|
44
44
|
sorcery_model_property_set(:custom_encryption_provider, Array)
|
45
45
|
User.sorcery_config.custom_encryption_provider.should equal(Array)
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
it "should enable configuration option 'salt_join_token'" do
|
49
49
|
salt_join_token = "--%%*&-"
|
50
50
|
sorcery_model_property_set(:salt_join_token, salt_join_token)
|
51
51
|
User.sorcery_config.salt_join_token.should equal(salt_join_token)
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should enable configuration option 'stretches'" do
|
55
55
|
stretches = 15
|
56
56
|
sorcery_model_property_set(:stretches, stretches)
|
57
57
|
User.sorcery_config.stretches.should equal(stretches)
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
# ----------------- PLUGIN ACTIVATED -----------------------
|
62
62
|
describe User, "when activated with sorcery" do
|
63
63
|
before(:all) do
|
64
|
-
sorcery_reload!
|
64
|
+
sorcery_reload!
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
before(:each) do
|
68
68
|
User.delete_all
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
it "should respond to class method authenticate" do
|
72
72
|
ActiveRecord::Base.should_not respond_to(:authenticate) if defined?(ActiveRecord)
|
73
73
|
User.should respond_to(:authenticate)
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
it "authenticate should return true if credentials are good" do
|
77
77
|
create_new_user
|
78
78
|
User.authenticate(@user.send(User.sorcery_config.username_attribute_names.first), 'secret').should be_true
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
it "authenticate should return false if credentials are bad" do
|
82
82
|
create_new_user
|
83
83
|
User.authenticate(@user.send(User.sorcery_config.username_attribute_names.first), 'wrong!').should be_false
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
|
+
context "with empty credentials" do
|
87
|
+
before do
|
88
|
+
sorcery_model_property_set(:downcase_username_before_authenticating, true)
|
89
|
+
end
|
90
|
+
|
91
|
+
after do
|
92
|
+
sorcery_reload!
|
93
|
+
end
|
94
|
+
|
95
|
+
it "don't downcase empty credentials" do
|
96
|
+
expect(User.authenticate(nil, 'wrong!')).to be_false
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
86
100
|
specify { User.should respond_to(:encrypt) }
|
87
|
-
|
101
|
+
|
88
102
|
it "subclass should inherit config if defined so" do
|
89
103
|
sorcery_reload!([],{:subclasses_inherit_config => true})
|
90
104
|
class Admin < User
|
@@ -92,7 +106,7 @@ shared_examples_for "rails_3_core_model" do
|
|
92
106
|
Admin.sorcery_config.should_not be_nil
|
93
107
|
Admin.sorcery_config.should == User.sorcery_config
|
94
108
|
end
|
95
|
-
|
109
|
+
|
96
110
|
it "subclass should not inherit config if not defined so" do
|
97
111
|
sorcery_reload!([],{:subclasses_inherit_config => false})
|
98
112
|
class Admin2 < User
|
@@ -100,10 +114,10 @@ shared_examples_for "rails_3_core_model" do
|
|
100
114
|
Admin2.sorcery_config.should be_nil
|
101
115
|
end
|
102
116
|
end
|
103
|
-
|
117
|
+
|
104
118
|
# ----------------- REGISTRATION -----------------------
|
105
119
|
describe User, "registration" do
|
106
|
-
|
120
|
+
|
107
121
|
before(:all) do
|
108
122
|
sorcery_reload!()
|
109
123
|
end
|
@@ -111,11 +125,11 @@ shared_examples_for "rails_3_core_model" do
|
|
111
125
|
before(:each) do
|
112
126
|
User.delete_all
|
113
127
|
end
|
114
|
-
|
128
|
+
|
115
129
|
it "by default, encryption_provider should not be nil" do
|
116
130
|
User.sorcery_config.encryption_provider.should_not be_nil
|
117
131
|
end
|
118
|
-
|
132
|
+
|
119
133
|
it "should encrypt password when a new user is saved" do
|
120
134
|
create_new_user
|
121
135
|
User.sorcery_config.encryption_provider.matches?(@user.send(User.sorcery_config.crypted_password_attribute_name),'secret',@user.salt).should be_true
|
@@ -125,18 +139,18 @@ shared_examples_for "rails_3_core_model" do
|
|
125
139
|
create_new_user
|
126
140
|
@user.password.should be_nil
|
127
141
|
end
|
128
|
-
|
142
|
+
|
129
143
|
it "should not clear the virtual password field if save failed due to validity" do
|
130
144
|
create_new_user
|
131
145
|
User.class_eval do
|
132
|
-
validates_format_of :email, :with =>
|
146
|
+
validates_format_of :email, :with => /\A(.)+@(.)+\Z/, :if => Proc.new {|r| r.email}, :message => "is invalid"
|
133
147
|
end
|
134
148
|
@user.password = 'blupush'
|
135
149
|
@user.email = 'asd'
|
136
150
|
@user.save
|
137
151
|
@user.password.should_not be_nil
|
138
152
|
end
|
139
|
-
|
153
|
+
|
140
154
|
it "should not clear the virtual password field if save failed due to exception" do
|
141
155
|
create_new_user
|
142
156
|
@user.password = '4blupush'
|
@@ -150,7 +164,7 @@ shared_examples_for "rails_3_core_model" do
|
|
150
164
|
end
|
151
165
|
@user.password.should_not be_nil
|
152
166
|
end
|
153
|
-
|
167
|
+
|
154
168
|
it "should not encrypt the password twice when a user is updated" do
|
155
169
|
create_new_user
|
156
170
|
@user.email = "blup@bla.com"
|
@@ -166,34 +180,34 @@ shared_examples_for "rails_3_core_model" do
|
|
166
180
|
end
|
167
181
|
|
168
182
|
end
|
169
|
-
|
183
|
+
|
170
184
|
# ----------------- PASSWORD ENCRYPTION -----------------------
|
171
185
|
describe User, "special encryption cases" do
|
172
186
|
before(:all) do
|
173
187
|
sorcery_reload!()
|
174
188
|
@text = "Some Text!"
|
175
189
|
end
|
176
|
-
|
190
|
+
|
177
191
|
before(:each) do
|
178
192
|
User.delete_all
|
179
193
|
end
|
180
|
-
|
194
|
+
|
181
195
|
after(:each) do
|
182
196
|
User.sorcery_config.reset!
|
183
197
|
end
|
184
|
-
|
198
|
+
|
185
199
|
it "should work with no password encryption" do
|
186
200
|
sorcery_model_property_set(:encryption_algorithm, :none)
|
187
201
|
create_new_user
|
188
202
|
User.authenticate(@user.send(User.sorcery_config.username_attribute_names.first), 'secret').should be_true
|
189
203
|
end
|
190
|
-
|
204
|
+
|
191
205
|
it "should work with custom password encryption" do
|
192
206
|
class MyCrypto
|
193
207
|
def self.encrypt(*tokens)
|
194
208
|
tokens.flatten.join('').gsub(/e/,'A')
|
195
209
|
end
|
196
|
-
|
210
|
+
|
197
211
|
def self.matches?(crypted,*tokens)
|
198
212
|
crypted == encrypt(*tokens)
|
199
213
|
end
|
@@ -203,49 +217,49 @@ shared_examples_for "rails_3_core_model" do
|
|
203
217
|
create_new_user
|
204
218
|
User.authenticate(@user.send(User.sorcery_config.username_attribute_names.first), 'secret').should be_true
|
205
219
|
end
|
206
|
-
|
220
|
+
|
207
221
|
it "if encryption algo is aes256, it should set key to crypto provider" do
|
208
222
|
sorcery_model_property_set(:encryption_algorithm, :aes256)
|
209
223
|
sorcery_model_property_set(:encryption_key, nil)
|
210
224
|
expect{User.encrypt(@text)}.to raise_error(ArgumentError)
|
211
225
|
sorcery_model_property_set(:encryption_key, "asd234dfs423fddsmndsflktsdf32343")
|
212
|
-
expect{User.encrypt(@text)}.to_not raise_error
|
226
|
+
expect{User.encrypt(@text)}.to_not raise_error
|
213
227
|
end
|
214
|
-
|
228
|
+
|
215
229
|
it "if encryption algo is aes256, it should set key to crypto provider, even if attributes are set in reverse" do
|
216
230
|
sorcery_model_property_set(:encryption_key, nil)
|
217
231
|
sorcery_model_property_set(:encryption_algorithm, :none)
|
218
232
|
sorcery_model_property_set(:encryption_key, "asd234dfs423fddsmndsflktsdf32343")
|
219
233
|
sorcery_model_property_set(:encryption_algorithm, :aes256)
|
220
|
-
expect{User.encrypt(@text)}.to_not raise_error
|
234
|
+
expect{User.encrypt(@text)}.to_not raise_error
|
221
235
|
end
|
222
|
-
|
236
|
+
|
223
237
|
it "if encryption algo is md5 it should work" do
|
224
238
|
sorcery_model_property_set(:encryption_algorithm, :md5)
|
225
239
|
User.encrypt(@text).should == Sorcery::CryptoProviders::MD5.encrypt(@text)
|
226
240
|
end
|
227
|
-
|
241
|
+
|
228
242
|
it "if encryption algo is sha1 it should work" do
|
229
243
|
sorcery_model_property_set(:encryption_algorithm, :sha1)
|
230
244
|
User.encrypt(@text).should == Sorcery::CryptoProviders::SHA1.encrypt(@text)
|
231
245
|
end
|
232
|
-
|
246
|
+
|
233
247
|
it "if encryption algo is sha256 it should work" do
|
234
248
|
sorcery_model_property_set(:encryption_algorithm, :sha256)
|
235
249
|
User.encrypt(@text).should == Sorcery::CryptoProviders::SHA256.encrypt(@text)
|
236
250
|
end
|
237
|
-
|
251
|
+
|
238
252
|
it "if encryption algo is sha512 it should work" do
|
239
253
|
sorcery_model_property_set(:encryption_algorithm, :sha512)
|
240
254
|
User.encrypt(@text).should == Sorcery::CryptoProviders::SHA512.encrypt(@text)
|
241
255
|
end
|
242
|
-
|
256
|
+
|
243
257
|
it "salt should be random for each user and saved in db" do
|
244
258
|
sorcery_model_property_set(:salt_attribute_name, :salt)
|
245
259
|
create_new_user
|
246
260
|
@user.salt.should_not be_nil
|
247
261
|
end
|
248
|
-
|
262
|
+
|
249
263
|
it "if salt is set should use it to encrypt" do
|
250
264
|
sorcery_model_property_set(:salt_attribute_name, :salt)
|
251
265
|
sorcery_model_property_set(:encryption_algorithm, :sha512)
|
@@ -253,7 +267,7 @@ shared_examples_for "rails_3_core_model" do
|
|
253
267
|
@user.crypted_password.should_not == Sorcery::CryptoProviders::SHA512.encrypt('secret')
|
254
268
|
@user.crypted_password.should == Sorcery::CryptoProviders::SHA512.encrypt('secret',@user.salt)
|
255
269
|
end
|
256
|
-
|
270
|
+
|
257
271
|
it "if salt_join_token is set should use it to encrypt" do
|
258
272
|
sorcery_model_property_set(:salt_attribute_name, :salt)
|
259
273
|
sorcery_model_property_set(:salt_join_token, "-@=>")
|
@@ -265,15 +279,15 @@ shared_examples_for "rails_3_core_model" do
|
|
265
279
|
Sorcery::CryptoProviders::SHA512.join_token = User.sorcery_config.salt_join_token
|
266
280
|
@user.crypted_password.should == Sorcery::CryptoProviders::SHA512.encrypt('secret',@user.salt)
|
267
281
|
end
|
268
|
-
|
282
|
+
|
269
283
|
end
|
270
|
-
|
284
|
+
|
271
285
|
describe User, "ORM adapter" do
|
272
286
|
before(:all) do
|
273
287
|
sorcery_reload!()
|
274
288
|
User.delete_all
|
275
289
|
end
|
276
|
-
|
290
|
+
|
277
291
|
before(:each) do
|
278
292
|
create_new_user
|
279
293
|
end
|
@@ -284,6 +298,7 @@ shared_examples_for "rails_3_core_model" do
|
|
284
298
|
end
|
285
299
|
|
286
300
|
it "find_by_username should work as expected" do
|
301
|
+
sorcery_model_property_set(:username_attribute_names, [:username])
|
287
302
|
User.find_by_username("gizmo").should == @user
|
288
303
|
end
|
289
304
|
|
@@ -302,17 +317,17 @@ shared_examples_for "external_user" do
|
|
302
317
|
before(:each) do
|
303
318
|
User.delete_all
|
304
319
|
end
|
305
|
-
|
320
|
+
|
306
321
|
it "should respond to 'external?'" do
|
307
322
|
create_new_user
|
308
323
|
@user.should respond_to(:external?)
|
309
324
|
end
|
310
|
-
|
325
|
+
|
311
326
|
it "external? should be false for regular users" do
|
312
327
|
create_new_user
|
313
328
|
@user.external?.should be_false
|
314
329
|
end
|
315
|
-
|
330
|
+
|
316
331
|
it "external? should be true for external users" do
|
317
332
|
create_new_external_user(:twitter)
|
318
333
|
@user.external?.should be_true
|
@@ -1,56 +1,56 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Crypto Providers wrappers" do
|
4
4
|
|
5
5
|
describe Sorcery::CryptoProviders::MD5 do
|
6
|
-
|
6
|
+
|
7
7
|
after(:each) do
|
8
8
|
Sorcery::CryptoProviders::MD5.reset!
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "encrypt works via wrapper like normal lib" do
|
12
12
|
Sorcery::CryptoProviders::MD5.encrypt('Noam Ben-Ari').should == Digest::MD5.hexdigest('Noam Ben-Ari')
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it "works with multiple stretches" do
|
16
16
|
Sorcery::CryptoProviders::MD5.stretches = 3
|
17
17
|
Sorcery::CryptoProviders::MD5.encrypt('Noam Ben-Ari').should == Digest::MD5.hexdigest(Digest::MD5.hexdigest(Digest::MD5.hexdigest('Noam Ben-Ari')))
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
it "matches? returns true when matches" do
|
21
21
|
Sorcery::CryptoProviders::MD5.matches?(Digest::MD5.hexdigest('Noam Ben-Ari'), 'Noam Ben-Ari').should be_true
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "matches? returns false when no match" do
|
25
25
|
Sorcery::CryptoProviders::MD5.matches?(Digest::MD5.hexdigest('Noam Ben-Ari'), 'Some Dude').should be_false
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
describe Sorcery::CryptoProviders::SHA1 do
|
31
|
-
|
31
|
+
|
32
32
|
before(:all) do
|
33
33
|
@digest = 'Noam Ben-Ari'
|
34
34
|
Sorcery::CryptoProviders::SHA1.stretches.times {@digest = Digest::SHA1.hexdigest(@digest)}
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
after(:each) do
|
38
38
|
Sorcery::CryptoProviders::SHA1.reset!
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
it "encrypt works via wrapper like normal lib" do
|
42
42
|
Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari').should == @digest
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "works with multiple stretches" do
|
46
46
|
Sorcery::CryptoProviders::SHA1.stretches = 3
|
47
47
|
Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari').should == Digest::SHA1.hexdigest(Digest::SHA1.hexdigest(Digest::SHA1.hexdigest('Noam Ben-Ari')))
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
it "matches? returns true when matches" do
|
51
51
|
Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Noam Ben-Ari').should be_true
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "matches? returns false when no match" do
|
55
55
|
Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Some Dude').should be_false
|
56
56
|
end
|
@@ -62,67 +62,67 @@ describe "Crypto Providers wrappers" do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
describe Sorcery::CryptoProviders::SHA256 do
|
65
|
-
|
65
|
+
|
66
66
|
before(:all) do
|
67
67
|
@digest = 'Noam Ben-Ari'
|
68
68
|
Sorcery::CryptoProviders::SHA256.stretches.times {@digest = Digest::SHA256.hexdigest(@digest)}
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
after(:each) do
|
72
72
|
Sorcery::CryptoProviders::SHA256.reset!
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
it "encrypt works via wrapper like normal lib" do
|
76
76
|
Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari').should == @digest
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
it "works with multiple stretches" do
|
80
80
|
Sorcery::CryptoProviders::SHA256.stretches = 3
|
81
81
|
Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari').should == Digest::SHA256.hexdigest(Digest::SHA256.hexdigest(Digest::SHA256.hexdigest('Noam Ben-Ari')))
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
it "matches? returns true when matches" do
|
85
85
|
Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Noam Ben-Ari').should be_true
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
it "matches? returns false when no match" do
|
89
89
|
Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Some Dude').should be_false
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
describe Sorcery::CryptoProviders::SHA512 do
|
95
|
-
|
95
|
+
|
96
96
|
before(:all) do
|
97
97
|
@digest = 'Noam Ben-Ari'
|
98
98
|
Sorcery::CryptoProviders::SHA512.stretches.times {@digest = Digest::SHA512.hexdigest(@digest)}
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
after(:each) do
|
102
102
|
Sorcery::CryptoProviders::SHA512.reset!
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
it "encrypt works via wrapper like normal lib" do
|
106
106
|
Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari').should == @digest
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
it "works with multiple stretches" do
|
110
110
|
Sorcery::CryptoProviders::SHA512.stretches = 3
|
111
111
|
Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari').should == Digest::SHA512.hexdigest(Digest::SHA512.hexdigest(Digest::SHA512.hexdigest('Noam Ben-Ari')))
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
it "matches? returns true when matches" do
|
115
115
|
Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Noam Ben-Ari').should be_true
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
it "matches? returns false when no match" do
|
119
119
|
Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Some Dude').should be_false
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
122
|
end
|
123
|
-
|
123
|
+
|
124
124
|
describe Sorcery::CryptoProviders::AES256 do
|
125
|
-
|
125
|
+
|
126
126
|
before(:all) do
|
127
127
|
aes = OpenSSL::Cipher::Cipher.new("AES-256-ECB")
|
128
128
|
aes.encrypt
|
@@ -132,19 +132,19 @@ describe "Crypto Providers wrappers" do
|
|
132
132
|
@digest = [aes.update(@digest) + aes.final].pack("m").chomp
|
133
133
|
Sorcery::CryptoProviders::AES256.key = @key
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
136
|
it "encrypt works via wrapper like normal lib" do
|
137
137
|
Sorcery::CryptoProviders::AES256.encrypt('Noam Ben-Ari').should == @digest
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
it "matches? returns true when matches" do
|
141
141
|
Sorcery::CryptoProviders::AES256.matches?(@digest, 'Noam Ben-Ari').should be_true
|
142
142
|
end
|
143
|
-
|
143
|
+
|
144
144
|
it "matches? returns false when no match" do
|
145
145
|
Sorcery::CryptoProviders::AES256.matches?(@digest, 'Some Dude').should be_false
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
it "can be decrypted" do
|
149
149
|
aes = OpenSSL::Cipher::Cipher.new("AES-256-ECB")
|
150
150
|
aes.decrypt
|
@@ -153,31 +153,31 @@ describe "Crypto Providers wrappers" do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
end
|
156
|
-
|
156
|
+
|
157
157
|
describe Sorcery::CryptoProviders::BCrypt do
|
158
|
-
|
158
|
+
|
159
159
|
before(:all) do
|
160
160
|
Sorcery::CryptoProviders::BCrypt.cost = 1
|
161
161
|
@digest = BCrypt::Password.create('Noam Ben-Ari', :cost => Sorcery::CryptoProviders::BCrypt.cost)
|
162
162
|
end
|
163
|
-
|
163
|
+
|
164
164
|
after(:each) do
|
165
165
|
Sorcery::CryptoProviders::BCrypt.reset!
|
166
166
|
end
|
167
|
-
|
167
|
+
|
168
168
|
it "should be comparable with original secret" do
|
169
169
|
BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari')).should == 'Noam Ben-Ari'
|
170
170
|
end
|
171
|
-
|
171
|
+
|
172
172
|
it "works with multiple costs" do
|
173
173
|
Sorcery::CryptoProviders::BCrypt.cost = 3
|
174
174
|
BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari')).should == 'Noam Ben-Ari'
|
175
175
|
end
|
176
|
-
|
176
|
+
|
177
177
|
it "matches? returns true when matches" do
|
178
178
|
Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Noam Ben-Ari').should be_true
|
179
179
|
end
|
180
|
-
|
180
|
+
|
181
181
|
it "matches? returns false when no match" do
|
182
182
|
Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude').should be_false
|
183
183
|
end
|
@@ -188,9 +188,11 @@ describe "Crypto Providers wrappers" do
|
|
188
188
|
|
189
189
|
it "sets cost when stretches is set" do
|
190
190
|
Sorcery::CryptoProviders::BCrypt.stretches = 4
|
191
|
-
|
191
|
+
|
192
|
+
# stubbed in Sorcery::TestHelpers::Internal
|
193
|
+
Sorcery::CryptoProviders::BCrypt.cost.should == 1
|
192
194
|
end
|
193
|
-
|
195
|
+
|
194
196
|
end
|
195
|
-
|
197
|
+
|
196
198
|
end
|