diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2015-01-04 09:17:18 -0800 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2015-01-04 09:17:18 -0800 |
commit | 33a13c929d0f4d1f7fa84ac99e8ff72e5c8d084e (patch) | |
tree | dc88adfa9181fc9f9263ce5c63ade06c2678ec5f /activerecord/test | |
parent | 8c5983c5f00f6b77bd88f6ebad0ae31573f0ef96 (diff) | |
parent | 5a58ba3366ec6092fcd0e69340acd93f347d2576 (diff) | |
download | rails-33a13c929d0f4d1f7fa84ac99e8ff72e5c8d084e.tar.gz rails-33a13c929d0f4d1f7fa84ac99e8ff72e5c8d084e.tar.bz2 rails-33a13c929d0f4d1f7fa84ac99e8ff72e5c8d084e.zip |
Merge pull request #18217 from robertomiranda/has_secure_token
Add has_secure_token to Active Record
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/secure_token_test.rb | 39 | ||||
-rw-r--r-- | activerecord/test/models/user.rb | 4 | ||||
-rw-r--r-- | activerecord/test/schema/schema.rb | 5 |
3 files changed, 48 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..400fce8c6e --- /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 + + test "assing unique token values" do + @user.save + assert_not_nil @user.token + assert_not_nil @user.auth_token + end + + test "regenerate the secure key for the attribute" do + @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 + + test "raise and exception when with 10 attemps is reached" do + User.stubs(:exists?).returns(*Array.new(10, true)) + assert_raises(RuntimeError) do + @user.save + end + end + + test "assing unique token after 9 attemps reached" do + 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 diff --git a/activerecord/test/models/user.rb b/activerecord/test/models/user.rb new file mode 100644 index 0000000000..23cd2e0e1c --- /dev/null +++ b/activerecord/test/models/user.rb @@ -0,0 +1,4 @@ +class User < ActiveRecord::Base + has_secure_token + has_secure_token :auth_token +end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index 5907d6ef97..e283f7a9cc 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -892,6 +892,11 @@ ActiveRecord::Schema.define do t.string :overloaded_string_with_limit, limit: 255 t.string :string_with_default, default: 'the original default' end + + create_table :users, force: true do |t| + t.string :token + t.string :auth_token + end end Course.connection.create_table :courses, force: true do |t| |