Mercurial > p > roundup > code
comparison test/test_mailgw.py @ 3813:23470ece29de
Modified subject line parser in mail gateway.
Tries to be more forgiving and allows both multiple Re/Ang/Sv and
[mailing-list-id].
| author | Erik Forsberg <forsberg@users.sourceforge.net> |
|---|---|
| date | Sun, 28 Jan 2007 13:49:21 +0000 |
| parents | 27b589d3b79d |
| children | 2b63b1689cef |
comparison
equal
deleted
inserted
replaced
| 3812:27b589d3b79d | 3813:23470ece29de |
|---|---|
| 6 # | 6 # |
| 7 # This module is distributed in the hope that it will be useful, | 7 # This module is distributed in the hope that it will be useful, |
| 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| 10 # | 10 # |
| 11 # $Id: test_mailgw.py,v 1.83 2007-01-21 18:14:35 forsberg Exp $ | 11 # $Id: test_mailgw.py,v 1.84 2007-01-28 13:49:21 forsberg Exp $ |
| 12 | 12 |
| 13 # TODO: test bcc | 13 # TODO: test bcc |
| 14 | 14 |
| 15 import unittest, tempfile, os, shutil, errno, imp, sys, difflib, rfc822, time | 15 import unittest, tempfile, os, shutil, errno, imp, sys, difflib, rfc822, time |
| 16 | 16 |
| 401 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example> | 401 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example> |
| 402 <http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1> | 402 <http://tracker.example/cgi-bin/roundup.cgi/bugs/issue1> |
| 403 _______________________________________________________________________ | 403 _______________________________________________________________________ |
| 404 ''') | 404 ''') |
| 405 | 405 |
| 406 def testFollowupTitleMatchMultiRe(self): | |
| 407 nodeid1 = self.doNewIssue() | |
| 408 nodeid2 = self._handle_mail('''Content-Type: text/plain; | |
| 409 charset="iso-8859-1" | |
| 410 From: richard <richard@test> | |
| 411 To: issue_tracker@your.tracker.email.domain.example | |
| 412 Message-Id: <followup_dummy_id> | |
| 413 Subject: Re: Testing... [assignedto=mary; nosy=+john] | |
| 414 | |
| 415 This is a followup | |
| 416 ''') | |
| 417 | |
| 418 nodeid3 = self._handle_mail('''Content-Type: text/plain; | |
| 419 charset="iso-8859-1" | |
| 420 From: richard <richard@test> | |
| 421 To: issue_tracker@your.tracker.email.domain.example | |
| 422 Message-Id: <followup2_dummy_id> | |
| 423 Subject: Ang: Re: Testing... | |
| 424 | |
| 425 This is a followup | |
| 426 ''') | |
| 427 self.assertEqual(nodeid1, nodeid2) | |
| 428 self.assertEqual(nodeid1, nodeid3) | |
| 429 | |
| 406 def testFollowupTitleMatchNever(self): | 430 def testFollowupTitleMatchNever(self): |
| 407 nodeid = self.doNewIssue() | 431 nodeid = self.doNewIssue() |
| 408 self.db.config.MAILGW_SUBJECT_CONTENT_MATCH = 'never' | 432 self.db.config.MAILGW_SUBJECT_CONTENT_MATCH = 'never' |
| 409 self.assertNotEqual(self._handle_mail('''Content-Type: text/plain; | 433 self.assertNotEqual(self._handle_mail('''Content-Type: text/plain; |
| 410 charset="iso-8859-1" | 434 charset="iso-8859-1" |
| 1171 | 1195 |
| 1172 ''') | 1196 ''') |
| 1173 assert not os.path.exists(SENDMAILDEBUG) | 1197 assert not os.path.exists(SENDMAILDEBUG) |
| 1174 self.assertEqual(self.db.keyword.get('1', 'name'), 'Bar') | 1198 self.assertEqual(self.db.keyword.get('1', 'name'), 'Bar') |
| 1175 | 1199 |
| 1200 def testClassStrictInvalid(self): | |
| 1201 self.instance.config.MAILGW_SUBJECT_PREFIX_PARSING = 'strict' | |
| 1202 self.instance.config.MAILGW_DEFAULT_CLASS = '' | |
| 1203 | |
| 1204 message = '''Content-Type: text/plain; | |
| 1205 charset="iso-8859-1" | |
| 1206 From: Chef <chef@bork.bork.bork> | |
| 1207 To: issue_tracker@your.tracker.email.domain.example | |
| 1208 Subject: Testing... | |
| 1209 Cc: richard@test | |
| 1210 Reply-To: chef@bork.bork.bork | |
| 1211 Message-Id: <dummy_test_message_id> | |
| 1212 | |
| 1213 ''' | |
| 1214 self.assertRaises(MailUsageError, self._handle_mail, message) | |
| 1215 | |
| 1216 def testClassStrictValid(self): | |
| 1217 self.instance.config.MAILGW_SUBJECT_PREFIX_PARSING = 'strict' | |
| 1218 self.instance.config.MAILGW_DEFAULT_CLASS = '' | |
| 1219 | |
| 1220 nodeid = self._handle_mail('''Content-Type: text/plain; | |
| 1221 charset="iso-8859-1" | |
| 1222 From: Chef <chef@bork.bork.bork> | |
| 1223 To: issue_tracker@your.tracker.email.domain.example | |
| 1224 Subject: [issue] Testing... | |
| 1225 Cc: richard@test | |
| 1226 Reply-To: chef@bork.bork.bork | |
| 1227 Message-Id: <dummy_test_message_id> | |
| 1228 | |
| 1229 ''') | |
| 1230 | |
| 1231 assert not os.path.exists(SENDMAILDEBUG) | |
| 1232 self.assertEqual(self.db.issue.get(nodeid, 'title'), 'Testing...') | |
| 1233 | |
| 1176 # | 1234 # |
| 1177 # TEST FOR INVALID COMMANDS HANDLING | 1235 # TEST FOR INVALID COMMANDS HANDLING |
| 1178 # | 1236 # |
| 1179 def testInvalidCommands(self): | 1237 def testInvalidCommands(self): |
| 1180 self.assertRaises(MailUsageError, self._handle_mail, | 1238 self.assertRaises(MailUsageError, self._handle_mail, |
| 1323 Subject: hElp | 1381 Subject: hElp |
| 1324 | 1382 |
| 1325 | 1383 |
| 1326 ''' | 1384 ''' |
| 1327 self.assertRaises(MailUsageHelp, self._handle_mail, message) | 1385 self.assertRaises(MailUsageHelp, self._handle_mail, message) |
| 1386 | |
| 1387 def testMaillistSubject(self): | |
| 1388 self.instance.config.MAILGW_SUBJECT_SUFFIX_DELIMITERS = '[]' | |
| 1389 self.db.keyword.create(name='Foo') | |
| 1390 self._handle_mail('''Content-Type: text/plain; | |
| 1391 charset="iso-8859-1" | |
| 1392 From: Chef <chef@bork.bork.bork> | |
| 1393 To: issue_tracker@your.tracker.email.domain.example | |
| 1394 Subject: [mailinglist-name] [keyword1] Testing.. [name=Bar] | |
| 1395 Cc: richard@test | |
| 1396 Reply-To: chef@bork.bork.bork | |
| 1397 Message-Id: <dummy_test_message_id> | |
| 1398 | |
| 1399 ''') | |
| 1400 | |
| 1401 assert not os.path.exists(SENDMAILDEBUG) | |
| 1402 self.assertEqual(self.db.keyword.get('1', 'name'), 'Bar') | |
| 1403 | |
| 1404 def testUnknownPrefixSubject(self): | |
| 1405 self.db.keyword.create(name='Foo') | |
| 1406 self._handle_mail('''Content-Type: text/plain; | |
| 1407 charset="iso-8859-1" | |
| 1408 From: Chef <chef@bork.bork.bork> | |
| 1409 To: issue_tracker@your.tracker.email.domain.example | |
| 1410 Subject: VeryStrangeRe: [keyword1] Testing.. [name=Bar] | |
| 1411 Cc: richard@test | |
| 1412 Reply-To: chef@bork.bork.bork | |
| 1413 Message-Id: <dummy_test_message_id> | |
| 1414 | |
| 1415 ''') | |
| 1416 | |
| 1417 assert not os.path.exists(SENDMAILDEBUG) | |
| 1418 self.assertEqual(self.db.keyword.get('1', 'name'), 'Bar') | |
| 1419 | |
| 1420 def testIssueidLast(self): | |
| 1421 nodeid1 = self.doNewIssue() | |
| 1422 nodeid2 = self._handle_mail('''Content-Type: text/plain; | |
| 1423 charset="iso-8859-1" | |
| 1424 From: mary <mary@test> | |
| 1425 To: issue_tracker@your.tracker.email.domain.example | |
| 1426 Message-Id: <followup_dummy_id> | |
| 1427 In-Reply-To: <dummy_test_message_id> | |
| 1428 Subject: New title [issue1] | |
| 1429 | |
| 1430 This is a second followup | |
| 1431 ''') | |
| 1432 | |
| 1433 assert nodeid1 == nodeid2 | |
| 1434 self.assertEqual(self.db.issue.get(nodeid2, 'title'), "Testing...") | |
| 1328 | 1435 |
| 1329 | 1436 |
| 1330 def test_suite(): | 1437 def test_suite(): |
| 1331 suite = unittest.TestSuite() | 1438 suite = unittest.TestSuite() |
| 1332 suite.addTest(unittest.makeSuite(MailgwTestCase)) | 1439 suite.addTest(unittest.makeSuite(MailgwTestCase)) |
