aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test
diff options
context:
space:
mode:
authorUnathi Chonco <choncou@Unathis-MacBook-Pro.local>2016-10-12 01:01:01 +0800
committerUnathi Chonco <choncou@Unathis-MacBook-Pro.local>2016-10-12 01:02:27 +0800
commit86a48b4da3cbd925d30b0fbe472edbda7171ea9e (patch)
tree43bb5b6b618a1f7415353a6b6a497785ea481baf /activemodel/test
parent32617a2ca3aec1b2649eb86d2b698a0ee04dcb8a (diff)
downloadrails-86a48b4da3cbd925d30b0fbe472edbda7171ea9e.tar.gz
rails-86a48b4da3cbd925d30b0fbe472edbda7171ea9e.tar.bz2
rails-86a48b4da3cbd925d30b0fbe472edbda7171ea9e.zip
This addition will now allow configuring an attribute name for the
existing `#has_secure_password`. This can be useful when one would like to store some secure field as a digest, just like a password. The method still defaults to `password`. It now also allows using the same `#authenticate` method which now accepts a second argument for specifying the attribute to be authenticated, or will default to 'password`. A new method is also added for generating a new token for an attribute by calling `#regenerate_XXXX` where `XXXX` is the attribute name.
Diffstat (limited to 'activemodel/test')
-rw-r--r--activemodel/test/cases/secure_password_test.rb13
-rw-r--r--activemodel/test/models/user.rb3
2 files changed, 15 insertions, 1 deletions
diff --git a/activemodel/test/cases/secure_password_test.rb b/activemodel/test/cases/secure_password_test.rb
index 9423df2c09..abbd182f66 100644
--- a/activemodel/test/cases/secure_password_test.rb
+++ b/activemodel/test/cases/secure_password_test.rb
@@ -184,9 +184,13 @@ class SecurePasswordTest < ActiveModel::TestCase
test "authenticate" do
@user.password = "secret"
+ @user.activation_token = "new_token"
assert !@user.authenticate("wrong")
assert @user.authenticate("secret")
+
+ assert !@user.authenticate("wrong", :activation_token)
+ assert @user.authenticate("new_token", :activation_token)
end
test "Password digest cost defaults to bcrypt default cost when min_cost is false" do
@@ -215,4 +219,13 @@ class SecurePasswordTest < ActiveModel::TestCase
@user.password = "secret"
assert_equal BCrypt::Engine::MIN_COST, @user.password_digest.cost
end
+
+ test "regenerate attribute method" do
+ old_digest = @user.activation_token_digest
+ @user.regenerate_activation_token
+
+ assert_not_nil @user.activation_token
+ assert_not_nil @user.activation_token_digest
+ assert_not_equal old_digest, @user.activation_token_digest
+ end
end
diff --git a/activemodel/test/models/user.rb b/activemodel/test/models/user.rb
index 6556b1a7d9..ab424efb9b 100644
--- a/activemodel/test/models/user.rb
+++ b/activemodel/test/models/user.rb
@@ -5,6 +5,7 @@ class User
define_model_callbacks :create
has_secure_password
+ has_secure_password :activation_token, validations: false
- attr_accessor :password_digest
+ attr_accessor :password_digest, :activation_token_digest
end