aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/secure_token_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/cases/secure_token_test.rb')
-rw-r--r--activerecord/test/cases/secure_token_test.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/activerecord/test/cases/secure_token_test.rb b/activerecord/test/cases/secure_token_test.rb
new file mode 100644
index 0000000000..dc12b528dc
--- /dev/null
+++ b/activerecord/test/cases/secure_token_test.rb
@@ -0,0 +1,39 @@
+require 'cases/helper'
+require 'models/user'
+
+class SecureTokenTest < ActiveRecord::TestCase
+ setup do
+ @user = User.new
+ end
+
+ def test_token_values_are_generated_for_specified_attributes_and_persisted_on_save
+ @user.save
+ assert_not_nil @user.token
+ assert_not_nil @user.auth_token
+ end
+
+ def test_regenerating_the_secure_token
+ @user.save
+ old_token = @user.token
+ old_auth_token = @user.auth_token
+ @user.regenerate_token
+ @user.regenerate_auth_token
+
+ assert_not_equal @user.token, old_token
+ assert_not_equal @user.auth_token, old_auth_token
+ end
+
+ def test_raise_after_ten_unsuccessful_attempts_to_generate_a_unique_token
+ User.stubs(:exists?).returns(*Array.new(10, true))
+ assert_raises(RuntimeError) do
+ @user.save
+ end
+ end
+
+ def test_return_unique_token_after_nine_unsuccessful_attempts
+ User.stubs(:exists?).returns(*Array.new(10) { |i| i == 9 ? false : true })
+ @user.save
+ assert_not_nil @user.token
+ assert_not_nil @user.auth_token
+ end
+end