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))

Roundup Issue Tracker: http://roundup-tracker.org/