Пример #1
0
    def test_ignore_messages(self):
        """Test if it ignores some messages without mandatory fields"""

        backend = MBox('http://example.com/', self.tmp_error_path)
        messages = [m for m in backend.fetch()]

        # There are only two valid message on the mbox
        self.assertEqual(len(messages), 2)

        expected = {
                    'From' : 'goran at domain.com ( Göran Lastname )',
                    'Date' : 'Wed, 01 Dec 2010 14:26:40 +0100',
                    'Subject' : '[List-name] Protocol Buffers anyone?',
                    'Message-ID' : '<*****@*****.**>',
                    'unixfrom' : 'goran at domain.com  Wed Dec  1 08:26:40 2010',
                    'body': {
                             'plain' : "Hi!\n\nA message in English, with a signature "
                                       "with a different encoding.\n\nregards, G?ran"
                                       "\n",
                            }
                   }

        message = messages[0]['data']
        self.assertDictEqual(message, expected)

        # On the second message, the only change is that 'Message-id'
        # is replaced by 'Message-ID'
        message = messages[1]['data']
        self.assertDictEqual(message, expected)
Пример #2
0
    def test_fetch_from_date(self):
        """Test whether a list of messages is returned since a given date"""

        from_date = datetime.datetime(2008, 1, 1)

        backend = MBox('http://example.com/', self.tmp_path)
        messages = [m for m in backend.fetch(from_date=from_date)]

        expected = [('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>',
                     '51535703010a3e63d5272202942c283394cdebca', 1205746505.0),
                    ('<019801ca633f$f4376140$dca623c0$@[email protected]>',
                     '302e314c07242bb4750351286862f49e758f3e17', 1257992964.0),
                    ('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0)]

        self.assertEqual(len(messages), len(expected))

        for x in range(len(messages)):
            message = messages[x]
            self.assertEqual(message['data']['Message-ID'], expected[x][0])
            self.assertEqual(message['origin'], 'http://example.com/')
            self.assertEqual(message['uuid'], expected[x][1])
            self.assertEqual(message['updated_on'], expected[x][2])
            self.assertEqual(message['category'], 'message')
            self.assertEqual(message['tag'], 'http://example.com/')
Пример #3
0
    def test_fetch(self):
        """Test whether it parses a set of mbox files"""

        backend = MBox('http://example.com/', self.tmp_path)
        messages = [m for m in backend.fetch()]

        expected = [('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>', 'bd0185317b013beb21ad3ea04635de3db72496ad', 1095843820.0),
                    ('<*****@*****.**>', '51535703010a3e63d5272202942c283394cdebca', 1205746505.0),
                    ('<019801ca633f$f4376140$dca623c0$@[email protected]>', '302e314c07242bb4750351286862f49e758f3e17', 1257992964.0),
                    ('<*****@*****.**>', 'ddda42422c55d08d56c017a6f128fcd7447484ea', 1043881350.0),
                    ('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>', '4e255acab6442424ecbf05cb0feb1eccb587f7de', 1030123489.0)]

        self.assertEqual(len(messages), len(expected))

        for x in range(len(messages)):
            message = messages[x]
            self.assertEqual(message['data']['Message-ID'], expected[x][0])
            self.assertEqual(message['origin'], 'http://example.com/')
            self.assertEqual(message['uuid'], expected[x][1])
            self.assertEqual(message['updated_on'], expected[x][2])
            self.assertEqual(message['category'], 'message')
            self.assertEqual(message['tag'], 'http://example.com/')
Пример #4
0
    def test_ignore_messages(self):
        """Test if it ignores some messages without mandatory fields"""

        backend = MBox('http://example.com/', self.tmp_error_path)
        messages = [m for m in backend.fetch()]

        # There are only two valid message on the mbox
        self.assertEqual(len(messages), 2)

        expected = {
            'From': 'goran at domain.com ( Göran Lastname )',
            'Date': 'Wed, 01 Dec 2010 14:26:40 +0100',
            'Subject': '[List-name] Protocol Buffers anyone?',
            'Message-ID': '<*****@*****.**>',
            'unixfrom': 'goran at domain.com  Wed Dec  1 08:26:40 2010',
            'body': {
                'plain':
                "Hi!\n\nA message in English, with a signature "
                "with a different encoding.\n\nregards, G?ran"
                "\n",
            }
        }

        message = messages[0]['data']
        self.assertDictEqual(message, expected)

        # On the second message, the only change is that 'Message-id'
        # is replaced by 'Message-ID'
        message = messages[1]['data']
        self.assertDictEqual(message, expected)
Пример #5
0
    def test_fetch(self):
        """Test whether it parses a set of mbox files"""

        backend = MBox('http://example.com/', self.tmp_path)
        messages = [m for m in backend.fetch()]

        expected = [('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>',
                     'bd0185317b013beb21ad3ea04635de3db72496ad', 1095843820.0),
                    ('<*****@*****.**>',
                     '51535703010a3e63d5272202942c283394cdebca', 1205746505.0),
                    ('<019801ca633f$f4376140$dca623c0$@[email protected]>',
                     '302e314c07242bb4750351286862f49e758f3e17', 1257992964.0),
                    ('<*****@*****.**>',
                     'ddda42422c55d08d56c017a6f128fcd7447484ea', 1043881350.0),
                    ('<*****@*****.**>',
                     '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>',
                     '4e255acab6442424ecbf05cb0feb1eccb587f7de', 1030123489.0)]

        self.assertEqual(len(messages), len(expected))

        for x in range(len(messages)):
            message = messages[x]
            self.assertEqual(message['data']['Message-ID'], expected[x][0])
            self.assertEqual(message['origin'], 'http://example.com/')
            self.assertEqual(message['uuid'], expected[x][1])
            self.assertEqual(message['updated_on'], expected[x][2])
            self.assertEqual(message['category'], 'message')
            self.assertEqual(message['tag'], 'http://example.com/')
Пример #6
0
    def test_ignore_messages(self):
        """Test if it ignores some messages without mandatory fields"""

        backend = MBox("http://example.com/", self.tmp_error_path)
        messages = [m for m in backend.fetch()]

        # There are only two valid message on the mbox
        self.assertEqual(len(messages), 2)

        expected = {
            "From": "goran at domain.com ( Göran Lastname )",
            "Date": "Wed, 01 Dec 2010 14:26:40 +0100",
            "Subject": "[List-name] Protocol Buffers anyone?",
            "Message-ID": "<*****@*****.**>",
            "unixfrom": "goran at domain.com  Wed Dec  1 08:26:40 2010",
            "body": {
                "plain": "Hi!\n\nA message in English, with a signature "
                "with a different encoding.\n\nregards, G?ran"
                "\n"
            },
        }

        message = messages[0]["data"]
        self.assertDictEqual(message, expected)

        # On the second message, the only change is that 'Message-id'
        # is replaced by 'Message-ID'
        message = messages[1]["data"]
        self.assertDictEqual(message, expected)
Пример #7
0
    def test_fetch_from_date(self):
        """Test whether a list of messages is returned since a given date"""

        from_date = datetime.datetime(2008, 1, 1)

        backend = MBox("http://example.com/", self.tmp_path)
        messages = [m for m in backend.fetch(from_date=from_date)]

        expected = [
            ("<*****@*****.**>", "86315b479b4debe320b59c881c1e375216cbf333", 1291210000.0),
            ("<*****@*****.**>", "86315b479b4debe320b59c881c1e375216cbf333", 1291210000.0),
            ("<*****@*****.**>", "51535703010a3e63d5272202942c283394cdebca", 1205746505.0),
            (
                "<019801ca633f$f4376140$dca623c0$@[email protected]>",
                "302e314c07242bb4750351286862f49e758f3e17",
                1257992964.0,
            ),
            ("<*****@*****.**>", "86315b479b4debe320b59c881c1e375216cbf333", 1291210000.0),
        ]

        self.assertEqual(len(messages), len(expected))

        for x in range(len(messages)):
            message = messages[x]
            self.assertEqual(message["data"]["Message-ID"], expected[x][0])
            self.assertEqual(message["origin"], "http://example.com/")
            self.assertEqual(message["uuid"], expected[x][1])
            self.assertEqual(message["updated_on"], expected[x][2])
Пример #8
0
    def test_ignore_file_errors(self):
        """Files with IO errors should be ignored"""

        tmp_path_ign = tempfile.mkdtemp(prefix='perceval_')

        shutil.copy('data/mbox_single.mbox', tmp_path_ign)
        shutil.copy('data/mbox_multipart.mbox', tmp_path_ign)

        # Update file mode to make it unable to access
        os.chmod(os.path.join(tmp_path_ign, 'mbox_multipart.mbox'), 0o000)

        backend = MBox('http://example.com/', tmp_path_ign)
        messages = [m for m in backend.fetch()]

        # Only one message is read
        self.assertEqual(len(messages), 1)
        self.assertEqual(messages[0]['data']['Message-ID'], '<*****@*****.**>')
        self.assertEqual(messages[0]['data']['Date'], 'Wed, 01 Dec 2010 14:26:40 +0100')

        shutil.rmtree(tmp_path_ign)
Пример #9
0
    def test_ignore_file_errors(self):
        """Files with IO errors should be ignored"""

        tmp_path_ign = tempfile.mkdtemp(prefix="perceval_")

        shutil.copy("data/mbox_single.mbox", tmp_path_ign)
        shutil.copy("data/mbox_multipart.mbox", tmp_path_ign)

        # Update file mode to make it unable to access
        os.chmod(os.path.join(tmp_path_ign, "mbox_multipart.mbox"), 0o000)

        backend = MBox("http://example.com/", tmp_path_ign)
        messages = [m for m in backend.fetch()]

        # Only one message is read
        self.assertEqual(len(messages), 1)
        self.assertEqual(messages[0]["data"]["Message-ID"], "<*****@*****.**>")
        self.assertEqual(messages[0]["data"]["Date"], "Wed, 01 Dec 2010 14:26:40 +0100")

        shutil.rmtree(tmp_path_ign)
Пример #10
0
    def test_ignore_file_errors(self):
        """Files with IO errors should be ignored"""

        tmp_path_ign = tempfile.mkdtemp(prefix='perceval_')

        shutil.copy('data/mbox_single.mbox', tmp_path_ign)
        shutil.copy('data/mbox_multipart.mbox', tmp_path_ign)

        # Update file mode to make it unable to access
        os.chmod(os.path.join(tmp_path_ign, 'mbox_multipart.mbox'), 0o000)

        backend = MBox('http://example.com/', tmp_path_ign)
        messages = [m for m in backend.fetch()]

        # Only one message is read
        self.assertEqual(len(messages), 1)
        self.assertEqual(messages[0]['data']['Message-ID'],
                         '<*****@*****.**>')
        self.assertEqual(messages[0]['data']['Date'],
                         'Wed, 01 Dec 2010 14:26:40 +0100')

        shutil.rmtree(tmp_path_ign)
Пример #11
0
    def test_fetch_from_date(self):
        """Test whether a list of messages is returned since a given date"""

        from_date = datetime.datetime(2008, 1, 1)

        backend = MBox('http://example.com/', self.tmp_path)
        messages = [m for m in backend.fetch(from_date=from_date)]

        expected = [('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0),
                    ('<*****@*****.**>', '51535703010a3e63d5272202942c283394cdebca', 1205746505.0),
                    ('<019801ca633f$f4376140$dca623c0$@[email protected]>', '302e314c07242bb4750351286862f49e758f3e17', 1257992964.0),
                    ('<*****@*****.**>', '86315b479b4debe320b59c881c1e375216cbf333', 1291210000.0)]

        self.assertEqual(len(messages), len(expected))

        for x in range(len(messages)):
            message = messages[x]
            self.assertEqual(message['data']['Message-ID'], expected[x][0])
            self.assertEqual(message['origin'], 'http://example.com/')
            self.assertEqual(message['uuid'], expected[x][1])
            self.assertEqual(message['updated_on'], expected[x][2])
            self.assertEqual(message['category'], 'message')