From 24c361eb0a122e4a86621879539a067cea068a12 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 15 Apr 2012 15:34:14 +0000 Subject: [PATCH] Fixed that rss key is generated twice when user is not reloaded (#10668). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9419 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/user.rb | 12 ++++++++---- test/unit/user_test.rb | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index b377dda67..6e7e94cf6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -284,14 +284,18 @@ class User < Principal # Return user's RSS key (a 40 chars long string), used to access feeds def rss_key - token = self.rss_token || Token.create(:user => self, :action => 'feeds') - token.value + if rss_token.nil? + create_rss_token(:action => 'feeds') + end + rss_token.value end # Return user's API key (a 40 chars long string), used to access the API def api_key - token = self.api_token || self.create_api_token(:action => 'api') - token.value + if api_token.nil? + create_api_token(:action => 'api') + end + api_token.value end # Return an array of project ids for which the user has explicitly turned mail notifications on diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 607f23770..a85d56adb 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -585,6 +585,22 @@ class UserTest < ActiveSupport::TestCase assert_equal key, @jsmith.rss_key end + def test_rss_key_should_not_be_generated_twice + assert_difference 'Token.count', 1 do + key1 = @jsmith.rss_key + key2 = @jsmith.rss_key + assert_equal key1, key2 + end + end + + def test_api_key_should_not_be_generated_twice + assert_difference 'Token.count', 1 do + key1 = @jsmith.api_key + key2 = @jsmith.api_key + assert_equal key1, key2 + end + end + context "User#api_key" do should "generate a new one if the user doesn't have one" do user = User.generate_with_protected!(:api_token => nil) -- 2.39.5