]> source.dussan.org Git - redmine.git/commitdiff
Merged r9419 from trunk.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Apr 2012 17:42:09 +0000 (17:42 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Apr 2012 17:42:09 +0000 (17:42 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.4-stable@9435 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index d1fa2822a77cf53591abf750b0f663d2e25212d6..86820769799fc160001c561f0090a44175affade 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 e698207da148dbed36001c0ac95484c301a8e699..a78cb3c70623067d808d4a87cc786b957f74a5d9 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)