diff --git a/plugins/RSS/plugin.py b/plugins/RSS/plugin.py index 7b68f7e35..29e0edd0e 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -280,7 +280,7 @@ class RSS(callbacks.Plugin): raise callbacks.Error(s) if url: feed = self.feeds.get(url) - if feed and feed.name != feed.url: + if feed and feed.name != feed.url and feed.name in self.feed_names: s = format(_('I already have a feed with that URL named %s.'), feed.name) raise callbacks.Error(s) diff --git a/plugins/RSS/test.py b/plugins/RSS/test.py index 71c9d7dc5..494b1e9b0 100644 --- a/plugins/RSS/test.py +++ b/plugins/RSS/test.py @@ -84,7 +84,7 @@ def mock_urllib(f): url = 'http://www.advogato.org/rss/articles.xml' class RSSTestCase(ChannelPluginTestCase): - plugins = ('RSS','Plugin') + plugins = ('RSS', 'Plugin') timeout = 1 @@ -121,6 +121,27 @@ class RSSTestCase(ChannelPluginTestCase): self.assertEqual(self.irc.getCallback('RSS').feed_names, {}) self.assertTrue(self.irc.getCallback('RSS').get_feed('http://xkcd.com/rss.xml')) + @mock_urllib + def testChangeUrl(self, mock): + try: + self.assertNotError('rss add xkcd http://xkcd.com/rss.xml') + self.assertNotError('rss remove xkcd') + self.assertNotError('rss add xkcd https://xkcd.com/rss.xml') + self.assertRegexp('help xkcd', 'https://') + finally: + self._feedMsg('rss remove xkcd') + + @mock_urllib + def testChangeName(self, mock): + try: + self.assertNotError('rss add xkcd http://xkcd.com/rss.xml') + self.assertNotError('rss remove xkcd') + self.assertNotError('rss add xkcd2 http://xkcd.com/rss.xml') + self.assertRegexp('help xkcd2', 'http://xkcd.com') + finally: + self._feedMsg('rss remove xkcd') + self._feedMsg('rss remove xkcd2') + @mock_urllib def testInitialAnnounceNewest(self, mock): mock._data = xkcd_new