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)
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/')
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/')
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)
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)
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])
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)
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)
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')