From 4a459519f2f841d1283dca347c28cc5e6a4009ea Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 7 Apr 2017 15:15:55 +0300 Subject: Add another msg id extractor test --- distixlib/msg_id_extractor.py | 18 +++++++++++++++++- distixlib/msg_id_extractor_tests.py | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/distixlib/msg_id_extractor.py b/distixlib/msg_id_extractor.py index cbe985d..d789e90 100644 --- a/distixlib/msg_id_extractor.py +++ b/distixlib/msg_id_extractor.py @@ -16,6 +16,22 @@ # =*= License: GPL-3+ =*= +import email + def get_ids_from_message(msg): - return [] + return set(_yield_ids(msg)) + + +def _yield_ids(msg): + header_names = ('Message-Id', 'In-Reply-To', 'References') + for header_name in header_names: + for msg_id in _yield_ids_from_header(msg, header_name): + yield msg_id + + +def _yield_ids_from_header(msg, header_name): + values = msg.get_all(header_name) + if values: + for _, msg_id in email.utils.getaddresses(values): + yield msg_id diff --git a/distixlib/msg_id_extractor_tests.py b/distixlib/msg_id_extractor_tests.py index 6a7e259..b47b0f3 100644 --- a/distixlib/msg_id_extractor_tests.py +++ b/distixlib/msg_id_extractor_tests.py @@ -33,4 +33,18 @@ Subject: O, Romeo Wherefore art thou? ''') - self.assertEqual(distixlib.get_ids_from_message(msg), []) + self.assertEqual(distixlib.get_ids_from_message(msg), set()) + + def test_returns_id_from_message_id(self): + msg_text = '''\ +From: user@example.com +To: other@example.com +Subject: O, Romeo +Message-Id: + +Wherefore art thou? +''' + + msg = email.message_from_string(msg_text) + self.assertEqual( + distixlib.get_ids_from_message(msg), set(['capulet123@verona'])) -- cgit v1.2.1