Пример #1
0
 def test_filter(self):
     should_match = ["title XYZ", "description XYZ", "body XYZ", "XYZ"]
     for s in should_match:
         match_re = re.compile(s)
         reader = RssReader(self.url, accept_filter=match_re.search)
         entries = reader.get_entries()
         self.assertEqual(1, len(entries))
         self.assertEqual("title XYZ", entries[0].title)
Пример #2
0
    def test_reader(self):
        reader = RssReader(self.url)
        entries = reader.get_entries()
        self.assertEqual(3, len(entries))

        self.assertEqual("file://example/ABC.xml", entries[0].id)
        self.assertEqual("title ABC", entries[0].title)

        self.assertEqual("file://example/XYZ.xml", entries[1].id)
        self.assertEqual("title XYZ", entries[1].title)

        self.assertEqual("file://example/LMN.xml", entries[2].id)
        self.assertEqual("No Title", entries[2].title)
Пример #3
0
    def test_reader(self):
        reader = RssReader(self.url)
        entries = reader.get_entries()
        self.assertEqual(3, len(entries))

        self.assertEqual("file://example/ABC.xml", entries[0].id)
        self.assertEqual("title ABC", entries[0].title)

        self.assertEqual("file://example/XYZ.xml", entries[1].id)
        self.assertEqual("title XYZ", entries[1].title)

        self.assertEqual("file://example/LMN.xml", entries[2].id)
        self.assertEqual("No Title", entries[2].title)
Пример #4
0
 def test_bad_feed_data(self):
     bad_file = tempfile.NamedTemporaryFile()
     bad_file.write("Ceci n'est pas un flux RSS")
     bad_file.flush()
     url = "file://{}".format(bad_file.name)
     reader = RssReader(url)
     self.assertRaises(Exception, reader.get_entries)
Пример #5
0
    def test_timeout(self):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        host = ""
        port = 0  # automatically assign port
        sock.bind((host, port))
        host, port = sock.getsockname()  # get actual port
        sock.listen(1)
        reader = RssReader("http://{}:{}/".format(host, port), timeout=0.01)

        self.assertEqual(0, reader.consecutive_failures)
        self.assertSocketTimeout(reader.get_entries)
        self.assertEqual(1, reader.consecutive_failures)
        self.assertSocketTimeout(reader.get_entries)
        self.assertEqual(2, reader.consecutive_failures)

        # point the reader at a valid file to test that consecutive_failures
        # gets reset
        reader.feed_url = self.url
        entries = reader.get_entries()
        self.assertEqual(3, len(entries))
        self.assertEqual(0, reader.consecutive_failures)

        sock.close()
Пример #6
0
    def test_timeout(self):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        host = ""
        port = 0 # automatically assign port
        sock.bind((host, port))
        host, port = sock.getsockname() # get actual port
        sock.listen(1)
        reader = RssReader("http://{}:{}/".format(host, port), timeout=0.01)

        self.assertEqual(0, reader.consecutive_failures)
        self.assertSocketTimeout(reader.get_entries)
        self.assertEqual(1, reader.consecutive_failures)
        self.assertSocketTimeout(reader.get_entries)
        self.assertEqual(2, reader.consecutive_failures)

        # point the reader at a valid file to test that consecutive_failures
        # gets reset
        reader.feed_url = self.url
        entries = reader.get_entries()
        self.assertEqual(3, len(entries))
        self.assertEqual(0, reader.consecutive_failures)

        sock.close()
Пример #7
0
 def test_filter(self):
     keywords = ["title XYZ", "description XYZ", "body XYZ", "XYZ"]
     reader = RssReader(self.url, keywords=keywords)
     entries = reader.get_entries()
     self.assertEqual(1, len(entries))
     self.assertEqual("title XYZ", entries[0].title)