summaryrefslogtreecommitdiff
path: root/tests/test_handlers.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_handlers.py')
-rw-r--r--tests/test_handlers.py114
1 files changed, 112 insertions, 2 deletions
diff --git a/tests/test_handlers.py b/tests/test_handlers.py
index 462fdc80e..8f9db90ef 100644
--- a/tests/test_handlers.py
+++ b/tests/test_handlers.py
@@ -404,7 +404,7 @@ From: dperson@dom.ain
Urgent: zzZZzz
""", Message.Message)
- self.assertRaises(CalcRecips.RejectUrgentMessage,
+ self.assertRaises(Errors.RejectMessage,
CalcRecips.process,
self._mlist, msg, msgdata)
@@ -1454,7 +1454,117 @@ A message.
class TestTagger(TestBase):
- pass
+ def test_short_circuit(self):
+ self._mlist.topics = 0
+ rtn = Tagger.process(self._mlist, None, {})
+ # Not really a great test, but there's little else to assert
+ self.assertEqual(rtn, None)
+
+ def test_simple(self):
+ eq = self.assertEqual
+ mlist = self._mlist
+ mlist.topics = [('bar fight', '.*bar.*', 'catch any bars', 1)]
+ mlist.topics_bodylines_limit = 0
+ msg = email.message_from_string("""\
+Subject: foobar
+Keywords: barbaz
+
+""")
+ msgdata = {}
+ Tagger.process(mlist, msg, msgdata)
+ eq(msg['x-topics'], 'bar fight')
+ eq(msgdata.get('topichits'), ['bar fight'])
+
+ def test_all_body_lines_plain_text(self):
+ eq = self.assertEqual
+ mlist = self._mlist
+ mlist.topics = [('bar fight', '.*bar.*', 'catch any bars', 1)]
+ mlist.topics_bodylines_limit = -1
+ msg = email.message_from_string("""\
+Subject: Was
+Keywords: Raw
+
+Subject: farbaw
+Keywords: barbaz
+""")
+ msgdata = {}
+ Tagger.process(mlist, msg, msgdata)
+ eq(msg['x-topics'], 'bar fight')
+ eq(msgdata.get('topichits'), ['bar fight'])
+
+ def test_no_body_lines(self):
+ eq = self.assertEqual
+ mlist = self._mlist
+ mlist.topics = [('bar fight', '.*bar.*', 'catch any bars', 1)]
+ mlist.topics_bodylines_limit = 0
+ msg = email.message_from_string("""\
+Subject: Was
+Keywords: Raw
+
+Subject: farbaw
+Keywords: barbaz
+""")
+ msgdata = {}
+ Tagger.process(mlist, msg, msgdata)
+ eq(msg['x-topics'], None)
+ eq(msgdata.get('topichits'), None)
+
+ def test_body_lines_in_multipart(self):
+ eq = self.assertEqual
+ mlist = self._mlist
+ mlist.topics = [('bar fight', '.*bar.*', 'catch any bars', 1)]
+ mlist.topics_bodylines_limit = -1
+ msg = email.message_from_string("""\
+Subject: Was
+Keywords: Raw
+Content-Type: multipart/alternative; boundary="BOUNDARY"
+
+--BOUNDARY
+From: sabo
+To: obas
+
+Subject: farbaw
+Keywords: barbaz
+
+--BOUNDARY--
+""")
+ msgdata = {}
+ Tagger.process(mlist, msg, msgdata)
+ eq(msg['x-topics'], None)
+ eq(msgdata.get('topichits'), None)
+
+ def test_body_lines_no_part(self):
+ eq = self.assertEqual
+ mlist = self._mlist
+ mlist.topics = [('bar fight', '.*bar.*', 'catch any bars', 1)]
+ mlist.topics_bodylines_limit = -1
+ msg = email.message_from_string("""\
+Subject: Was
+Keywords: Raw
+Content-Type: multipart/alternative; boundary="BOUNDARY"
+
+--BOUNDARY
+From: sabo
+To: obas
+Content-Type: message/rfc822
+
+Subject: farbaw
+Keywords: barbaz
+
+--BOUNDARY
+From: sabo
+To: obas
+Content-Type: message/rfc822
+
+Subject: farbaw
+Keywords: barbaz
+
+--BOUNDARY--
+""")
+ msgdata = {}
+ Tagger.process(mlist, msg, msgdata)
+ eq(msg['x-topics'], None)
+ eq(msgdata.get('topichits'), None)