예제 #1
0
 def test_add_feed(self):
     rfl = RssFeedList()
     assert rfl.feed_list == []
     # Create example rss feed
     rf = RssFeed()
     rf.update_frequency = Commons.load_time_delta("P0T3600S")
     rf.url = "http://spangle.org.uk/hallo/test_feed.xml"
     rfl.add_feed(rf)
     assert len(rfl.feed_list) == 1
     assert rfl.feed_list[0] == rf
예제 #2
0
 def test_format_item(self):
     feed_title = "feed_title1"
     item_title = "test_title1"
     item_link = "http://example.com/item1"
     rf = RssFeed()
     rf.title = feed_title
     rss_data = "<channel><item><title>" + item_title + "</title><link>" + item_link + "</link></item></channel>"
     rss_elem = ElementTree.fromstring(rss_data)
     item_elem = rss_elem.find("item")
     # Get output and check it
     output = rf.format_item(item_elem)
     assert feed_title in output
     assert item_title in output
     assert item_link in output
예제 #3
0
 def test_remove_feed(self):
     # Setup a feed list
     rfl = RssFeedList()
     rf1 = RssFeed()
     rf1.url = "http://spangle.org.uk/hallo/test_feed.xml?1"
     rfl.add_feed(rf1)
     rf2 = RssFeed()
     rf2.url = "http://spangle.org.uk/hallo/test_feed.xml?2"
     rfl.add_feed(rf2)
     assert len(rfl.feed_list) == 2
     # Remove an item from the feed list
     rfl.remove_feed(rf1)
     assert len(rfl.feed_list) == 1
     assert rfl.feed_list[0] == rf2
예제 #4
0
 def test_check_feed(self):
     # Check loading up an example feed
     test_rss_url = "http://spangle.org.uk/hallo/test_rss.xml"
     rf = RssFeed()
     rf.url = test_rss_url
     new_items = rf.check_feed()
     assert rf.title == "Example rss feed"
     assert len(new_items) == 3
     for new_item in new_items:
         format_item = rf.format_item(new_item)
         assert "Item 1" in format_item or \
                "Item 2" in format_item or \
                "Item 3" in format_item, "Item name not in formatted item: " + format_item
         assert "example.com/item1" in format_item or \
                "example.com/item2" in format_item or \
                "example.com/item3" in format_item, "Item link not in formatted item: " + format_item
     # Check that calling twice returns no more items
     next_items = rf.check_feed()
     assert len(next_items) == 0, "More items should not have been found."
예제 #5
0
 def test_xml(self):
     test_rss_url = "http://spangle.org.uk/hallo/test_rss.xml"
     test_seconds = 3600
     test_days = 0
     # Create example feed
     rf = RssFeed()
     rf.url = test_rss_url
     rf.update_frequency = Commons.load_time_delta("P"+str(test_days)+"T"+str(test_seconds)+"S")
     rf.server_name = "test_serv"
     rf.channel_name = "test_chan"
     # Clear off the current items
     rf.check_feed()
     # Ensure there are no new items
     new_items = rf.check_feed()
     assert len(new_items) == 0
     # Save to XML and load up new RssFeed
     rf_xml = rf.to_xml_string()
     rf2 = RssFeed.from_xml_string(rf_xml)
     # Ensure there's still no new items
     new_items = rf2.check_feed()
     assert len(new_items) == 0
     assert rf2.update_frequency.days == test_days
     assert rf2.update_frequency.seconds == test_seconds
예제 #6
0
 def test_remove_multiple_matching_titles(self):
     # Get feed list
     rss_check_class = self.function_dispatcher.get_function_by_name("rss check")
     rss_check_obj = self.function_dispatcher.get_function_object(rss_check_class)  # type: FeedCheck
     rfl = rss_check_obj.rss_feed_list
     # Add RSS feeds to feed list
     rf1 = RssFeed()
     rf1.url = "http://spangle.org.uk/hallo/test_rss.xml?1"
     rf1.title = "test_feed1"
     rf1.server_name = self.server.name
     rf1.channel_name = self.test_chan.name
     rf1.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf1)
     rf2 = RssFeed()
     rf2.url = "http://spangle.org.uk/hallo/test_rss.xml?2"
     rf2.title = "test_feed1"
     rf2.server_name = self.server.name
     rf2.channel_name = "another_channel"
     rf2.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf2)
     rf3 = RssFeed()
     rf3.url = "http://spangle.org.uk/hallo/test_rss.xml?3"
     rf3.title = "test_feed1"
     rf3.server_name = self.server.name
     rf3.channel_name = self.test_chan.name
     rf3.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf3)
     # Remove test feed
     self.function_dispatcher.dispatch("rss remove test_feed1", self.test_user, self.test_chan)
     data = self.server.get_send_data(1, self.test_chan, Server.MSG_MSG)
     assert "error" in data[0][0].lower()
     assert rf1 in rfl.feed_list
     assert rf2 in rfl.feed_list
     assert rf3 in rfl.feed_list
예제 #7
0
 def test_list_feeds(self):
     # Get feed list
     rss_check_class = self.function_dispatcher.get_function_by_name("rss check")
     rss_check_obj = self.function_dispatcher.get_function_object(rss_check_class)  # type: FeedCheck
     rfl = rss_check_obj.rss_feed_list
     # Add RSS feeds to feed list
     rf1 = RssFeed()
     rf1.url = "http://spangle.org.uk/hallo/test_rss.xml?1"
     rf1.title = "test_feed1"
     rf1.server_name = self.server.name
     rf1.channel_name = self.test_chan.name
     rf1.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf1)
     rf2 = RssFeed()
     rf2.url = "http://spangle.org.uk/hallo/test_rss.xml?2"
     rf2.title = "test_feed2"
     rf2.server_name = self.server.name
     rf2.channel_name = "another_channel"
     rf2.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf2)
     rf3 = RssFeed()
     rf3.url = "http://spangle.org.uk/hallo/test_rss.xml?3"
     rf3.title = "test_feed3"
     rf3.server_name = self.server.name
     rf3.channel_name = self.test_chan.name
     rf3.update_frequency = Commons.load_time_delta("PT3600S")
     rfl.add_feed(rf3)
     # Run FeedList and check output
     self.function_dispatcher.dispatch("rss list", self.test_user, self.test_chan)
     data = self.server.get_send_data(1, self.test_chan, Server.MSG_MSG)
     data_split = data[0][0].split("\n")
     assert "rss feeds posting" in data_split[0].lower()
     assert "test_feed1" in data_split[1].lower() or "test_feed1" in data_split[2].lower()
     assert "test_feed3" in data_split[1].lower() or "test_feed3" in data_split[2].lower()
     assert (
         "http://spangle.org.uk/hallo/test_rss.xml?1" in data_split[1].lower()
         or "http://spangle.org.uk/hallo/test_rss.xml?1" in data_split[2].lower()
     )
     assert (
         "http://spangle.org.uk/hallo/test_rss.xml?3" in data_split[1].lower()
         or "http://spangle.org.uk/hallo/test_rss.xml?3" in data_split[2].lower()
     )
     assert "test_feed2" not in data_split[1].lower() and "test_feed2" not in data_split[2].lower()
     assert (
         "http://spangle.org.uk/hallo/test_rss.xml?2" not in data_split[1].lower()
         and "http://spangle.org.uk/hallo/test_rss.xml?2" not in data_split[2].lower()
     )
예제 #8
0
 def test_run_all(self):
     # Set up test servers and channels
     serv1 = ServerMock(None)
     serv1.name = "test_serv1"
     chan1 = serv1.get_channel_by_name("test_chan1")
     chan2 = serv1.get_channel_by_name("test_chan2")
     serv2 = ServerMock(None)
     serv2.name = "test_serv2"
     chan3 = serv2.get_channel_by_name("test_chan1")
     try:
         self.hallo.add_server(serv1)
         self.hallo.add_server(serv2)
         # Set up rss feeds
         rfl = RssFeedList()
         rf1 = RssFeed()
         rf1.url = "http://spangle.org.uk/hallo/test_rss.xml?1"
         rf1.title = "test_feed1"
         rf1.server_name = chan1.server.name
         rf1.channel_name = chan1.name
         rf1.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf1)
         rf2 = RssFeed()
         rf2.url = "http://spangle.org.uk/hallo/test_rss.xml?2"
         rf2.title = "test_feed2"
         rf2.server_name = chan2.server.name
         rf2.channel_name = chan2.name
         rf2.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf2)
         rf3 = RssFeed()
         rf3.url = "http://spangle.org.uk/hallo/test_rss.xml?3"
         rf3.title = "test_feed1"
         rf3.server_name = chan3.server.name
         rf3.channel_name = chan3.name
         rf3.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf3)
         # Splice this rss feed list into the function dispatcher's rss check object
         rss_check_class = self.function_dispatcher.get_function_by_name("rss check")
         rss_check_obj = self.function_dispatcher.get_function_object(rss_check_class)  # type: FeedCheck
         rss_check_obj.rss_feed_list = rfl
         # Test running all feed updates
         self.function_dispatcher.dispatch("rss check all", self.test_user, self.test_chan)
         # Check original calling channel data
         serv0_data = self.server.get_send_data(1, self.test_chan, Server.MSG_MSG)
         assert "feed updates were found" in serv0_data[0][0]
         # Check test server 1 data
         serv1_data = serv1.get_send_data(6)
         chan1_count = 0
         chan2_count = 0
         for data_line in serv1_data:
             if data_line[1] == chan1:
                 chan1_count += 1
             if data_line[1] == chan2:
                 chan2_count += 1
         assert chan1_count == 3
         assert chan2_count == 3
         # Check test server 2 data
         serv2_data = serv2.get_send_data(3, chan3, Server.MSG_MSG)
         # Test running with no new updates.
         self.function_dispatcher.dispatch("rss check all", self.test_user, self.test_chan)
         data = self.server.get_send_data(1, self.test_chan, Server.MSG_MSG)
         assert "no feed updates" in data[0][0], "No further updates should be found."
     finally:
         self.hallo.remove_server(serv2)
         self.hallo.remove_server(serv1)
예제 #9
0
 def test_run_passive(self):
     # Set up test servers and channels
     serv1 = ServerMock(None)
     serv1.name = "test_serv1"
     chan1 = serv1.get_channel_by_name("test_chan1")
     chan2 = serv1.get_channel_by_name("test_chan2")
     serv2 = ServerMock(None)
     serv2.name = "test_serv2"
     chan3 = serv2.get_channel_by_name("test_chan1")
     try:
         self.hallo.add_server(serv1)
         self.hallo.add_server(serv2)
         # Set up rss feeds
         rfl = RssFeedList()
         rf1 = RssFeed()
         rf1.url = "http://spangle.org.uk/hallo/test_rss.xml?1"
         rf1.title = "test_feed1"
         rf1.server_name = chan1.server.name
         rf1.channel_name = chan1.name
         rf1.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf1)
         rf2 = RssFeed()
         rf2.url = "http://spangle.org.uk/hallo/test_rss.xml?2"
         rf2.title = "test_feed2"
         rf2.server_name = chan2.server.name
         rf2.channel_name = chan2.name
         rf2.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf2)
         rf3 = RssFeed()
         rf3.url = "http://spangle.org.uk/hallo/test_rss.xml?3"
         rf3.title = "test_feed1"
         rf3.server_name = chan3.server.name
         rf3.channel_name = chan3.name
         rf3.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf3)
         # Splice this rss feed list into the function dispatcher's rss check object
         rss_check_class = self.function_dispatcher.get_function_by_name("rss check")
         rss_check_obj = self.function_dispatcher.get_function_object(rss_check_class)  # type: FeedCheck
         rss_check_obj.rss_feed_list = rfl
         # Test passive feed updates
         self.function_dispatcher.dispatch_passive(Function.EVENT_MINUTE, None, None, None, None)
         # Check test server 1 data
         serv1_data = serv1.get_send_data(6)
         chan1_count = 0
         chan2_count = 0
         for data_line in serv1_data:
             if data_line[1] == chan1:
                 chan1_count += 1
             if data_line[1] == chan2:
                 chan2_count += 1
         assert chan1_count == 3
         assert chan2_count == 3
         # Check test server 2 data
         serv2_data = serv2.get_send_data(3, chan3, Server.MSG_MSG)
         # Test that no updates are found the second run
         rf1.last_check = None
         rf2.last_check = None
         rf3.last_check = None
         self.function_dispatcher.dispatch_passive(Function.EVENT_MINUTE, None, None, None, None)
         serv1.get_send_data(0)
         serv2.get_send_data(0)
         # Test that no feeds are checked before timeout, set urls to none and see if anything explodes.
         self.failed = False
         rf1.check_feed = self.do_not_call
         rf2.check_feed = self.do_not_call
         rf3.check_feed = self.do_not_call
         self.function_dispatcher.dispatch_passive(Function.EVENT_MINUTE, None, None, None, None)
         serv1.get_send_data(0)
         serv2.get_send_data(0)
         assert not self.failed, "check_feed() should not have been called on any feed."
     finally:
         self.hallo.remove_server(serv2)
         self.hallo.remove_server(serv1)
예제 #10
0
 def test_run_by_title(self):
     # Set up test servers and channels
     serv1 = ServerMock(self.hallo)
     serv1.name = "test_serv1"
     chan1 = serv1.get_channel_by_name("test_chan1")
     chan2 = serv1.get_channel_by_name("test_chan2")
     serv2 = ServerMock(self.hallo)
     serv2.name = "test_serv2"
     chan3 = serv2.get_channel_by_name("test_chan1")
     try:
         self.hallo.add_server(serv1)
         self.hallo.add_server(serv2)
         # Set up rss feeds
         rfl = RssFeedList()
         rf1 = RssFeed()
         rf1.url = "http://spangle.org.uk/hallo/test_rss.xml?1"
         rf1.title = "test_feed1"
         rf1.server_name = chan1.server.name
         rf1.channel_name = chan1.name
         rf1.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf1)
         rf2 = RssFeed()
         rf2.url = "http://spangle.org.uk/hallo/test_rss.xml?2"
         rf2.title = "test_feed2"
         rf2.server_name = chan2.server.name
         rf2.channel_name = chan2.name
         rf2.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf2)
         rf3 = RssFeed()
         rf3.url = "http://spangle.org.uk/hallo/test_rss.xml?3"
         rf3.title = "test_feed1"
         rf3.server_name = chan3.server.name
         rf3.channel_name = chan3.name
         rf3.update_frequency = Commons.load_time_delta("PT3600S")
         rfl.add_feed(rf3)
         # Splice this rss feed list into the function dispatcher's rss check object
         rss_check_class = self.function_dispatcher.get_function_by_name("rss check")
         rss_check_obj = self.function_dispatcher.get_function_object(rss_check_class)  # type: FeedCheck
         rss_check_obj.rss_feed_list = rfl
         # Invalid title
         self.function_dispatcher.dispatch("rss check Not a valid feed", self.test_user, self.test_chan)
         data = self.server.get_send_data(1, self.test_chan, Server.MSG_MSG)
         assert "error" in data[0][0].lower()
         # Correct title but wrong channel
         self.function_dispatcher.dispatch("rss check test_feed2", self.test_user, chan1)
         data = serv1.get_send_data(1, chan1, Server.MSG_MSG)
         assert "error" in data[0][0].lower()
         # Correct title check update
         self.function_dispatcher.dispatch("rss check test_feed2", self.test_user, chan2)
         data = serv1.get_send_data(1, chan2, Server.MSG_MSG)
         assert "feed updates were found" in data[0][0].lower()
         assert len(data[0][0].lower().split("\n")) == 4
         # No updates
         rf2.title = "test_feed2"
         self.function_dispatcher.dispatch("rss check test_feed2", self.test_user, chan2)
         data = serv1.get_send_data(1, chan2, Server.MSG_MSG)
         assert "no updates" in data[0][0], "No further updates should be found."
     finally:
         self.hallo.remove_server(serv2)
         self.hallo.remove_server(serv1)
예제 #11
0
 def test_output_item(self):
     # Create example rss item element
     item_title = "test_title1"
     item_link = "http://example.com/item1"
     feed_title = "feed_title1"
     rss_data = "<channel><item><title>" + item_title + "</title><link>" + item_link + "</link></item></channel>"
     rss_elem = ElementTree.fromstring(rss_data)
     item_elem = rss_elem.find("item")
     # Check output works with given server and channel
     rf1 = RssFeed()
     rf1.update_frequency = Commons.load_time_delta("P1TS")
     rf1.title = feed_title
     serv1 = ServerMock(None)
     serv1.name = "test_serv1"
     chan1 = serv1.get_channel_by_name("test_chan1")
     rf1.output_item(item_elem, None, serv1, chan1)
     data = serv1.get_send_data(1, chan1, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works with given server not channel
     rf2 = RssFeed()
     rf2.update_frequency = Commons.load_time_delta("P1TS")
     rf2.title = feed_title
     rf2.channel_name = "test_chan2"
     serv2 = ServerMock(None)
     serv2.name = "test_serv2"
     chan2 = serv2.get_channel_by_name("test_chan2")
     rf2.output_item(item_elem, None, serv2)
     data = serv2.get_send_data(1, chan2, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works with given server not user
     rf3 = RssFeed()
     rf3.update_frequency = Commons.load_time_delta("P1TS")
     rf3.title = feed_title
     rf3.user_name = "test_user3"
     serv3 = ServerMock(None)
     serv3.name = "test_serv3"
     user3 = serv3.get_user_by_name("test_user3")
     rf3.output_item(item_elem, None, serv3)
     data = serv3.get_send_data(1, user3, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works without given server with given channel
     rf4 = RssFeed()
     rf4.update_frequency = Commons.load_time_delta("P1TS")
     rf4.title = feed_title
     rf4.server_name = "test_serv4"
     serv4 = ServerMock(None)
     serv4.name = "test_serv4"
     hallo4 = Hallo()
     hallo4.add_server(serv4)
     chan4 = serv4.get_channel_by_name("test_chan4")
     rf4.output_item(item_elem, hallo4, None, chan4)
     data = serv4.get_send_data(1, chan4, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works without given server with given user
     rf5 = RssFeed()
     rf5.update_frequency = Commons.load_time_delta("P1TS")
     rf5.title = feed_title
     rf5.server_name = "test_serv5"
     serv5 = ServerMock(None)
     serv5.name = "test_serv5"
     hallo5 = Hallo()
     hallo5.add_server(serv5)
     chan5 = serv5.get_channel_by_name("test_chan5")
     rf5.output_item(item_elem, hallo5, None, chan5)
     data = serv5.get_send_data(1, chan5, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works without given server or channel to channel
     rf6 = RssFeed()
     rf6.update_frequency = Commons.load_time_delta("P1TS")
     rf6.title = feed_title
     rf6.server_name = "test_serv6"
     rf6.channel_name = "test_chan6"
     serv6 = ServerMock(None)
     serv6.name = "test_serv6"
     hallo6 = Hallo()
     hallo6.add_server(serv6)
     chan6 = serv6.get_channel_by_name("test_chan6")
     rf6.output_item(item_elem, hallo6)
     data = serv6.get_send_data(1, chan6, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check output works without given server or channel to user
     rf7 = RssFeed()
     rf7.update_frequency = Commons.load_time_delta("P1TS")
     rf7.title = feed_title
     rf7.server_name = "test_serv7"
     rf7.user_name = "test_user7"
     serv7 = ServerMock(None)
     serv7.name = "test_serv7"
     hallo7 = Hallo()
     hallo7.add_server(serv7)
     user7 = serv7.get_user_by_name("test_user7")
     rf7.output_item(item_elem, hallo7)
     data = serv7.get_send_data(1, user7, Server.MSG_MSG)
     assert feed_title in data[0][0]
     assert item_title in data[0][0]
     assert item_link in data[0][0]
     # Check invalid server output (server name is none)
     rf8 = RssFeed()
     rf8.update_frequency = Commons.load_time_delta("P1TS")
     rf8.title = feed_title
     hallo8 = Hallo()
     resp = rf8.output_item(item_elem, hallo8)
     assert "error" in resp.lower()
     assert "server" in resp.lower()
     # Check invalid server output ( server name is not in hallo obj)
     rf9 = RssFeed()
     rf9.update_frequency = Commons.load_time_delta("P1TS")
     rf9.title = feed_title
     rf9.server_name = "not_a_server"
     hallo9 = Hallo()
     resp = rf9.output_item(item_elem, hallo9)
     assert "error" in resp.lower()
     assert "server" in resp.lower()
     # Check invalid channel/user output (only possible if channel name and user name are none) (with given server)
     rf10 = RssFeed()
     rf10.update_frequency = Commons.load_time_delta("P1TS")
     rf10.title = feed_title
     serv10 = ServerMock(None)
     serv10.name = "test_serv10"
     hallo10 = Hallo()
     hallo10.add_server(serv10)
     resp = rf10.output_item(item_elem, hallo10, serv10)
     assert "error" in resp.lower()
     assert "destination" in resp.lower()
     # Check invalid channel/user output (only possible if channel name and user name are none) (with named server)
     rf11 = RssFeed()
     rf11.update_frequency = Commons.load_time_delta("P1TS")
     rf11.title = feed_title
     rf11.server_name = "test_serv11"
     serv11 = ServerMock(None)
     serv11.name = "test_serv11"
     hallo11 = Hallo()
     hallo11.add_server(serv11)
     resp = rf11.output_item(item_elem, hallo11)
     assert "error" in resp.lower()
     assert "destination" in resp.lower()
예제 #12
0
 def test_needs_check(self):
     rf1 = RssFeed()
     rf1.last_check = datetime.now()
     rf1.update_frequency = Commons.load_time_delta("P1TS")
     assert not rf1.needs_check()
     rf1.last_check = datetime.now() - Commons.load_time_delta("P2TS")
     assert rf1.needs_check()
     rf1.update_frequency = Commons.load_time_delta("P7TS")
     assert not rf1.needs_check()
     rf2 = RssFeed()
     rf2.last_check = datetime.now()
     rf2.update_frequency = Commons.load_time_delta("PT5S")
     assert not rf2.needs_check()
     time.sleep(10)
     assert rf2.needs_check()
예제 #13
0
 def test_get_feeds_by_title(self):
     serv1 = ServerMock(None)
     serv1.name = "test_serv1"
     serv2 = ServerMock(None)
     serv2.name = "test_serv2"
     chan1 = serv1.get_channel_by_name("test_chan1")
     user2 = serv1.get_user_by_name("test_user2")
     chan3 = serv2.get_channel_by_name("test_chan3")
     # Setup a feed list
     rfl = RssFeedList()
     rf1 = RssFeed()
     rf1.url = "http://spangle.org.uk/hallo/test_feed.xml?1"
     rf1.title = "test_feed1"
     rf1.server_name = chan1.server.name
     rf1.channel_name = chan1.name
     rfl.add_feed(rf1)
     rf2 = RssFeed()
     rf2.url = "http://spangle.org.uk/hallo/test_feed.xml?2"
     rf2.title = "test_feed2"
     rf2.server_name = user2.server.name
     rf2.user_name = user2.name
     rfl.add_feed(rf2)
     rf3 = RssFeed()
     rf3.url = "http://spangle.org.uk/hallo/test_feed.xml?3"
     rf3.title = "test_feed3"
     rf3.server_name = chan3.server.name
     rf3.channel_name = chan3.name
     rfl.add_feed(rf3)
     rf4 = RssFeed()
     rf4.url = "http://spangle.org.uk/hallo/test_feed.xml?4"
     rf4.title = "test_feed4"
     rf4.server_name = chan3.server.name
     rf4.channel_name = chan3.name
     rfl.add_feed(rf4)
     rf5 = RssFeed()
     rf5.url = "http://spangle.org.uk/hallo/test_feed.xml?5"
     rf5.title = "test_feed3"
     rf5.server_name = chan3.server.name
     rf5.channel_name = chan3.name
     rfl.add_feed(rf5)
     # Check function
     feed_list = rfl.get_feeds_by_title("test_feed3", chan3)
     assert len(feed_list) == 2
     assert rf3 in feed_list
     assert rf5 in feed_list
예제 #14
0
 def test_xml(self):
     # Setup a feed list
     rfl = RssFeedList()
     rf1 = RssFeed()
     rf1.url = "http://spangle.org.uk/hallo/test_feed.xml?1"
     rf1.title = "test_feed1"
     rf1.update_frequency = Commons.load_time_delta("P0T3600S")
     rf1.server_name = "test_serv1"
     rf1.channel_name = "test_chan1"
     rfl.add_feed(rf1)
     rf2 = RssFeed()
     rf2.url = "http://spangle.org.uk/hallo/test_feed.xml?2"
     rf2.title = "test_feed2"
     rf2.update_frequency = Commons.load_time_delta("P1TS")
     rf2.server_name = "test_serv2"
     rf2.channel_name = "test_chan2"
     rfl.add_feed(rf2)
     rf3 = RssFeed()
     rf3.url = "http://spangle.org.uk/hallo/test_feed.xml?3"
     rf3.title = "test_feed3"
     rf3.update_frequency = Commons.load_time_delta("PT60S")
     rf3.server_name = "test_serv3"
     rf3.user_name = "test_user3"
     rfl.add_feed(rf3)
     # Save to XML and load
     try:
         try:
             os.rename("store/rss_feeds.xml", "store/rss_feeds.xml.tmp")
         except OSError:
             pass
         rfl.to_xml()
         new_rfl = RssFeedList.from_xml()
         assert len(new_rfl.feed_list) == 3
     finally:
         try:
             os.remove("store/rss_feeds.xml")
         except OSError:
             pass
         try:
             os.rename("store/rss_feeds.xml.tmp", "store/rss_feeds.xml")
         except OSError:
             pass