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