diff options
| author | Aurélien Bompard <aurelien@bompard.org> | 2012-12-12 14:18:41 +0100 |
|---|---|---|
| committer | Aurélien Bompard <aurelien@bompard.org> | 2012-12-12 14:18:41 +0100 |
| commit | 65c6b94b26d1688e490384325cd23a30554f5fe1 (patch) | |
| tree | b9499dfeb5f677ed85a34bdf6184c32c1bca8860 | |
| parent | 7dfc2ec9317f2c7705ae11ac589226a40812f96f (diff) | |
| download | kittystore-65c6b94b26d1688e490384325cd23a30554f5fe1.tar.gz kittystore-65c6b94b26d1688e490384325cd23a30554f5fe1.tar.xz kittystore-65c6b94b26d1688e490384325cd23a30554f5fe1.zip | |
Handle empty References tag
| -rw-r--r-- | kittystore/test/test_utils.py | 35 | ||||
| -rw-r--r-- | kittystore/utils.py | 5 |
2 files changed, 38 insertions, 2 deletions
diff --git a/kittystore/test/test_utils.py b/kittystore/test/test_utils.py index d097789..7662e81 100644 --- a/kittystore/test/test_utils.py +++ b/kittystore/test/test_utils.py @@ -33,6 +33,41 @@ class TestUtils(unittest.TestCase): msg, "example-list", store)[0] self.assertEqual(ref_id, None) + def test_single_reference(self): + msg = Message() + msg["From"] = "dummy@example.com" + msg["Message-ID"] = "<dummy>" + msg["References"] = " <ref-1> " + msg.set_payload("Dummy message") + store = Mock() + ref_id = kittystore.utils.get_ref_and_thread_id( + msg, "example-list", store)[0] + self.assertEqual(ref_id, "ref-1") + + def test_multiple_reference(self): + msg = Message() + msg["From"] = "dummy@example.com" + msg["Message-ID"] = "<dummy>" + msg["References"] = " <ref-1> <ref-2> " + msg.set_payload("Dummy message") + store = Mock() + ref_id = kittystore.utils.get_ref_and_thread_id( + msg, "example-list", store)[0] + self.assertEqual(ref_id, "ref-1") + + def test_empty_reference(self): + msg = Message() + msg["From"] = "dummy@example.com" + msg["Message-ID"] = "<dummy>" + msg["References"] = " " + msg.set_payload("Dummy message") + store = Mock() + try: + kittystore.utils.get_ref_and_thread_id( + msg, "example-list", store) + except IndexError, e: + self.fail("Empty 'References' tag should be handled") + def test_non_ascii_headers(self): """utils.header_to_unicode must handle non-ascii headers""" testdata = [ diff --git a/kittystore/utils.py b/kittystore/utils.py index 913b229..badf5af 100644 --- a/kittystore/utils.py +++ b/kittystore/utils.py @@ -111,12 +111,13 @@ def get_ref_and_thread_id(message, list_name, store): return None, None # It's a reply, use the thread_id from the parent email ref_id = message.get("References") - if ref_id is not None: + if ref_id is not None and ref_id.strip(): # There can be multiple references, use the first one ref_id = ref_id.split()[0].strip() else: ref_id = message.get("In-Reply-To") - ref_id = IN_BRACKETS_RE.match(ref_id) + if ref_id is not None: + ref_id = IN_BRACKETS_RE.match(ref_id) if ref_id is None: # Can't parse the reference return None, None |
