From 6d8649b9d3c4f3047e185cc23e17faf4deca4c1b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Wed, 18 Apr 2012 17:42:09 +0000 Subject: [PATCH] Merged r9419 from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.4-stable@9435 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 d1fa2822a..868207697 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 e698207da..a78cb3c70 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