Пример #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(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/')
Пример #3
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/')
Пример #4
0
    def test_initialization(self):
        """Test whether attributes are initializated"""

        backend = MBox('http://example.com/', self.tmp_path, origin='test')

        self.assertEqual(backend.uri, 'http://example.com/')
        self.assertEqual(backend.dirpath, self.tmp_path)
        self.assertEqual(backend.origin, 'test')

        # When origin is empty or None it will be set to
        # the value in uri
        backend = MBox('http://example.com/', self.tmp_path)
        self.assertEqual(backend.origin, 'http://example.com/')

        backend = MBox('http://example.com/', self.tmp_path, origin='')
        self.assertEqual(backend.origin, 'http://example.com/')
Пример #5
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)