]> source.dussan.org Git - redmine.git/commitdiff
Fixed that rss key is generated twice when user is not reloaded (#10668).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 15 Apr 2012 15:34:14 +0000 (15:34 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 15 Apr 2012 15:34:14 +0000 (15:34 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9419 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/user.rb
test/unit/user_test.rb

index b377dda679410dfbdddf7ed946f41aa7a531b618..6e7e94cf6d4c1215d512e38a218b19f5260f6896 100644 (file)
@@ -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
index 607f2377002557369cf4f479b99556df2108daa9..a85d56adb5408efe2396fccb2a8b7b1e2c710022 100644 (file)
@@ -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)