# 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
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)