comparison test/test_mailgw.py @ 1299:b2d04ce03802

Email improvements. - updated email package address formatting (deprecation) - copied email address quoting from email v2.4.3 so we're consistent with 2.2 - email summary extraction now takes the first whole sentence or line - whichever is longer
author Richard Jones <richard@users.sourceforge.net>
date Tue, 05 Nov 2002 22:59:46 +0000
parents bc3bc3248dd1
children 3758a5af985f
comparison
equal deleted inserted replaced
1298:f0ab014eaf72 1299:b2d04ce03802
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.32 2002-09-26 03:04:24 richard Exp $ 11 # $Id: test_mailgw.py,v 1.33 2002-11-05 22:59:46 richard Exp $
12 12
13 import unittest, cStringIO, tempfile, os, shutil, errno, imp, sys, difflib 13 import unittest, cStringIO, tempfile, os, shutil, errno, imp, sys, difflib
14 14
15 # Note: Should parse emails according to RFC2822 instead of performing a 15 # Note: Should parse emails according to RFC2822 instead of performing a
16 # literal string comparision. Parsing the messages allows the tests to work for 16 # literal string comparision. Parsing the messages allows the tests to work for
79 # check we can load the package 79 # check we can load the package
80 self.instance = instance.open(self.dirname) 80 self.instance = instance.open(self.dirname)
81 # and open the database 81 # and open the database
82 self.db = self.instance.open('admin') 82 self.db = self.instance.open('admin')
83 self.db.user.create(username='Chef', address='chef@bork.bork.bork', 83 self.db.user.create(username='Chef', address='chef@bork.bork.bork',
84 roles='User') 84 realname='Bork, Chef', roles='User')
85 self.db.user.create(username='richard', address='richard@test', 85 self.db.user.create(username='richard', address='richard@test',
86 roles='User') 86 roles='User')
87 self.db.user.create(username='mary', address='mary@test', 87 self.db.user.create(username='mary', address='mary@test',
88 roles='User') 88 roles='User', realname='Contrary, Mary')
89 self.db.user.create(username='john', address='john@test', 89 self.db.user.create(username='john', address='john@test',
90 alternate_addresses='jondoe@test\njohn.doe@test', roles='User') 90 alternate_addresses='jondoe@test\njohn.doe@test', roles='User',
91 realname='John Doe')
91 92
92 def tearDown(self): 93 def tearDown(self):
93 if os.path.exists(os.environ['SENDMAILDEBUG']): 94 if os.path.exists(os.environ['SENDMAILDEBUG']):
94 os.remove(os.environ['SENDMAILDEBUG']) 95 os.remove(os.environ['SENDMAILDEBUG'])
95 self.db.close() 96 self.db.close()
202 '''FROM: roundup-admin@your.tracker.email.domain.example 203 '''FROM: roundup-admin@your.tracker.email.domain.example
203 TO: chef@bork.bork.bork, mary@test, richard@test 204 TO: chef@bork.bork.bork, mary@test, richard@test
204 Content-Type: text/plain 205 Content-Type: text/plain
205 Subject: [issue1] Testing... 206 Subject: [issue1] Testing...
206 To: chef@bork.bork.bork, mary@test, richard@test 207 To: chef@bork.bork.bork, mary@test, richard@test
207 From: "Chef" <issue_tracker@your.tracker.email.domain.example> 208 From: "Bork, Chef" <issue_tracker@your.tracker.email.domain.example>
208 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 209 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
209 MIME-Version: 1.0 210 MIME-Version: 1.0
210 Message-Id: <dummy_test_message_id> 211 Message-Id: <dummy_test_message_id>
211 X-Roundup-Name: Roundup issue tracker 212 X-Roundup-Name: Roundup issue tracker
212 Content-Transfer-Encoding: quoted-printable 213 Content-Transfer-Encoding: quoted-printable
213 214
214 215
215 New submission from Chef <chef@bork.bork.bork>: 216 New submission from Bork, Chef <chef@bork.bork.bork>:
216 217
217 This is a test submission of a new issue. 218 This is a test submission of a new issue.
218 219
219 220
220 ---------- 221 ----------
221 assignedto: richard 222 assignedto: richard
222 messages: 1 223 messages: 1
223 nosy: Chef, mary, richard 224 nosy: Chef, mary, richard
224 status: unread 225 status: unread
225 title: Testing... 226 title: Testing...
226 _________________________________________________________________________ 227 _______________________________________________________________________
227 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 228 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
228 http://your.tracker.url.example/issue1 229 http://your.tracker.url.example/issue1
229 _________________________________________________________________________ 230 _______________________________________________________________________
230 ''') 231 ''')
231 232
232 # BUG 233 # BUG
233 # def testMultipart(self): 234 # def testMultipart(self):
234 # '''With more than one part''' 235 # '''With more than one part'''
257 '''FROM: roundup-admin@your.tracker.email.domain.example 258 '''FROM: roundup-admin@your.tracker.email.domain.example
258 TO: chef@bork.bork.bork, richard@test 259 TO: chef@bork.bork.bork, richard@test
259 Content-Type: text/plain 260 Content-Type: text/plain
260 Subject: [issue1] Testing... 261 Subject: [issue1] Testing...
261 To: chef@bork.bork.bork, richard@test 262 To: chef@bork.bork.bork, richard@test
262 From: "mary" <issue_tracker@your.tracker.email.domain.example> 263 From: "Contrary, Mary" <issue_tracker@your.tracker.email.domain.example>
263 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 264 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
264 MIME-Version: 1.0 265 MIME-Version: 1.0
265 Message-Id: <followup_dummy_id> 266 Message-Id: <followup_dummy_id>
266 In-Reply-To: <dummy_test_message_id> 267 In-Reply-To: <dummy_test_message_id>
267 X-Roundup-Name: Roundup issue tracker 268 X-Roundup-Name: Roundup issue tracker
268 Content-Transfer-Encoding: quoted-printable 269 Content-Transfer-Encoding: quoted-printable
269 270
270 271
271 mary <mary@test> added the comment: 272 Contrary, Mary <mary@test> added the comment:
272 273
273 This is a second followup 274 This is a second followup
274 275
275 276
276 ---------- 277 ----------
277 status: unread -> chatting 278 status: unread -> chatting
278 _________________________________________________________________________ 279 _______________________________________________________________________
279 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 280 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
280 http://your.tracker.url.example/issue1 281 http://your.tracker.url.example/issue1
281 _________________________________________________________________________ 282 _______________________________________________________________________
282 ''') 283 ''')
283 284
284 def testFollowup(self): 285 def testFollowup(self):
285 self.doNewIssue() 286 self.doNewIssue()
286 287
305 '''FROM: roundup-admin@your.tracker.email.domain.example 306 '''FROM: roundup-admin@your.tracker.email.domain.example
306 TO: chef@bork.bork.bork, john@test, mary@test 307 TO: chef@bork.bork.bork, john@test, mary@test
307 Content-Type: text/plain 308 Content-Type: text/plain
308 Subject: [issue1] Testing... 309 Subject: [issue1] Testing...
309 To: chef@bork.bork.bork, john@test, mary@test 310 To: chef@bork.bork.bork, john@test, mary@test
310 From: "richard" <issue_tracker@your.tracker.email.domain.example> 311 From: richard <issue_tracker@your.tracker.email.domain.example>
311 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 312 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
312 MIME-Version: 1.0 313 MIME-Version: 1.0
313 Message-Id: <followup_dummy_id> 314 Message-Id: <followup_dummy_id>
314 In-Reply-To: <dummy_test_message_id> 315 In-Reply-To: <dummy_test_message_id>
315 X-Roundup-Name: Roundup issue tracker 316 X-Roundup-Name: Roundup issue tracker
316 Content-Transfer-Encoding: quoted-printable 317 Content-Transfer-Encoding: quoted-printable
323 324
324 ---------- 325 ----------
325 assignedto: -> mary 326 assignedto: -> mary
326 nosy: +john, mary 327 nosy: +john, mary
327 status: unread -> chatting 328 status: unread -> chatting
328 _________________________________________________________________________ 329 _______________________________________________________________________
329 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 330 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
330 http://your.tracker.url.example/issue1 331 http://your.tracker.url.example/issue1
331 _________________________________________________________________________ 332 _______________________________________________________________________
332 ''') 333 ''')
333 334
334 def testFollowupTitleMatch(self): 335 def testFollowupTitleMatch(self):
335 self.doNewIssue() 336 self.doNewIssue()
336 message = cStringIO.StringIO('''Content-Type: text/plain; 337 message = cStringIO.StringIO('''Content-Type: text/plain;
351 '''FROM: roundup-admin@your.tracker.email.domain.example 352 '''FROM: roundup-admin@your.tracker.email.domain.example
352 TO: chef@bork.bork.bork, john@test, mary@test 353 TO: chef@bork.bork.bork, john@test, mary@test
353 Content-Type: text/plain 354 Content-Type: text/plain
354 Subject: [issue1] Testing... 355 Subject: [issue1] Testing...
355 To: chef@bork.bork.bork, john@test, mary@test 356 To: chef@bork.bork.bork, john@test, mary@test
356 From: "richard" <issue_tracker@your.tracker.email.domain.example> 357 From: richard <issue_tracker@your.tracker.email.domain.example>
357 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 358 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
358 MIME-Version: 1.0 359 MIME-Version: 1.0
359 Message-Id: <followup_dummy_id> 360 Message-Id: <followup_dummy_id>
360 In-Reply-To: <dummy_test_message_id> 361 In-Reply-To: <dummy_test_message_id>
361 X-Roundup-Name: Roundup issue tracker 362 X-Roundup-Name: Roundup issue tracker
362 Content-Transfer-Encoding: quoted-printable 363 Content-Transfer-Encoding: quoted-printable
369 370
370 ---------- 371 ----------
371 assignedto: -> mary 372 assignedto: -> mary
372 nosy: +john, mary 373 nosy: +john, mary
373 status: unread -> chatting 374 status: unread -> chatting
374 _________________________________________________________________________ 375 _______________________________________________________________________
375 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 376 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
376 http://your.tracker.url.example/issue1 377 http://your.tracker.url.example/issue1
377 _________________________________________________________________________ 378 _______________________________________________________________________
378 ''') 379 ''')
379 380
380 def testFollowupNosyAuthor(self): 381 def testFollowupNosyAuthor(self):
381 self.doNewIssue() 382 self.doNewIssue()
382 self.db.config.ADD_AUTHOR_TO_NOSY = 'yes' 383 self.db.config.ADD_AUTHOR_TO_NOSY = 'yes'
398 '''FROM: roundup-admin@your.tracker.email.domain.example 399 '''FROM: roundup-admin@your.tracker.email.domain.example
399 TO: chef@bork.bork.bork, richard@test 400 TO: chef@bork.bork.bork, richard@test
400 Content-Type: text/plain 401 Content-Type: text/plain
401 Subject: [issue1] Testing... 402 Subject: [issue1] Testing...
402 To: chef@bork.bork.bork, richard@test 403 To: chef@bork.bork.bork, richard@test
403 From: "john" <issue_tracker@your.tracker.email.domain.example> 404 From: John Doe <issue_tracker@your.tracker.email.domain.example>
404 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 405 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
405 MIME-Version: 1.0 406 MIME-Version: 1.0
406 Message-Id: <followup_dummy_id> 407 Message-Id: <followup_dummy_id>
407 In-Reply-To: <dummy_test_message_id> 408 In-Reply-To: <dummy_test_message_id>
408 X-Roundup-Name: Roundup issue tracker 409 X-Roundup-Name: Roundup issue tracker
409 Content-Transfer-Encoding: quoted-printable 410 Content-Transfer-Encoding: quoted-printable
410 411
411 412
412 john <john@test> added the comment: 413 John Doe <john@test> added the comment:
413 414
414 This is a followup 415 This is a followup
415 416
416 417
417 ---------- 418 ----------
418 nosy: +john 419 nosy: +john
419 status: unread -> chatting 420 status: unread -> chatting
420 _________________________________________________________________________ 421 _______________________________________________________________________
421 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 422 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
422 http://your.tracker.url.example/issue1 423 http://your.tracker.url.example/issue1
423 _________________________________________________________________________ 424 _______________________________________________________________________
424 425
425 ''') 426 ''')
426 427
427 def testFollowupNosyRecipients(self): 428 def testFollowupNosyRecipients(self):
428 self.doNewIssue() 429 self.doNewIssue()
446 '''FROM: roundup-admin@your.tracker.email.domain.example 447 '''FROM: roundup-admin@your.tracker.email.domain.example
447 TO: chef@bork.bork.bork 448 TO: chef@bork.bork.bork
448 Content-Type: text/plain 449 Content-Type: text/plain
449 Subject: [issue1] Testing... 450 Subject: [issue1] Testing...
450 To: chef@bork.bork.bork 451 To: chef@bork.bork.bork
451 From: "richard" <issue_tracker@your.tracker.email.domain.example> 452 From: richard <issue_tracker@your.tracker.email.domain.example>
452 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 453 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
453 MIME-Version: 1.0 454 MIME-Version: 1.0
454 Message-Id: <followup_dummy_id> 455 Message-Id: <followup_dummy_id>
455 In-Reply-To: <dummy_test_message_id> 456 In-Reply-To: <dummy_test_message_id>
456 X-Roundup-Name: Roundup issue tracker 457 X-Roundup-Name: Roundup issue tracker
457 Content-Transfer-Encoding: quoted-printable 458 Content-Transfer-Encoding: quoted-printable
463 464
464 465
465 ---------- 466 ----------
466 nosy: +john 467 nosy: +john
467 status: unread -> chatting 468 status: unread -> chatting
468 _________________________________________________________________________ 469 _______________________________________________________________________
469 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 470 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
470 http://your.tracker.url.example/issue1 471 http://your.tracker.url.example/issue1
471 _________________________________________________________________________ 472 _______________________________________________________________________
472 473
473 ''') 474 ''')
474 475
475 def testFollowupNosyAuthorAndCopy(self): 476 def testFollowupNosyAuthorAndCopy(self):
476 self.doNewIssue() 477 self.doNewIssue()
494 '''FROM: roundup-admin@your.tracker.email.domain.example 495 '''FROM: roundup-admin@your.tracker.email.domain.example
495 TO: chef@bork.bork.bork, john@test, richard@test 496 TO: chef@bork.bork.bork, john@test, richard@test
496 Content-Type: text/plain 497 Content-Type: text/plain
497 Subject: [issue1] Testing... 498 Subject: [issue1] Testing...
498 To: chef@bork.bork.bork, john@test, richard@test 499 To: chef@bork.bork.bork, john@test, richard@test
499 From: "john" <issue_tracker@your.tracker.email.domain.example> 500 From: John Doe <issue_tracker@your.tracker.email.domain.example>
500 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 501 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
501 MIME-Version: 1.0 502 MIME-Version: 1.0
502 Message-Id: <followup_dummy_id> 503 Message-Id: <followup_dummy_id>
503 In-Reply-To: <dummy_test_message_id> 504 In-Reply-To: <dummy_test_message_id>
504 X-Roundup-Name: Roundup issue tracker 505 X-Roundup-Name: Roundup issue tracker
505 Content-Transfer-Encoding: quoted-printable 506 Content-Transfer-Encoding: quoted-printable
506 507
507 508
508 john <john@test> added the comment: 509 John Doe <john@test> added the comment:
509 510
510 This is a followup 511 This is a followup
511 512
512 513
513 ---------- 514 ----------
514 nosy: +john 515 nosy: +john
515 status: unread -> chatting 516 status: unread -> chatting
516 _________________________________________________________________________ 517 _______________________________________________________________________
517 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 518 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
518 http://your.tracker.url.example/issue1 519 http://your.tracker.url.example/issue1
519 _________________________________________________________________________ 520 _______________________________________________________________________
520 521
521 ''') 522 ''')
522 523
523 def testFollowupNoNosyAuthor(self): 524 def testFollowupNoNosyAuthor(self):
524 self.doNewIssue() 525 self.doNewIssue()
541 '''FROM: roundup-admin@your.tracker.email.domain.example 542 '''FROM: roundup-admin@your.tracker.email.domain.example
542 TO: chef@bork.bork.bork, richard@test 543 TO: chef@bork.bork.bork, richard@test
543 Content-Type: text/plain 544 Content-Type: text/plain
544 Subject: [issue1] Testing... 545 Subject: [issue1] Testing...
545 To: chef@bork.bork.bork, richard@test 546 To: chef@bork.bork.bork, richard@test
546 From: "john" <issue_tracker@your.tracker.email.domain.example> 547 From: John Doe <issue_tracker@your.tracker.email.domain.example>
547 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 548 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
548 MIME-Version: 1.0 549 MIME-Version: 1.0
549 Message-Id: <followup_dummy_id> 550 Message-Id: <followup_dummy_id>
550 In-Reply-To: <dummy_test_message_id> 551 In-Reply-To: <dummy_test_message_id>
551 X-Roundup-Name: Roundup issue tracker 552 X-Roundup-Name: Roundup issue tracker
552 Content-Transfer-Encoding: quoted-printable 553 Content-Transfer-Encoding: quoted-printable
553 554
554 555
555 john <john@test> added the comment: 556 John Doe <john@test> added the comment:
556 557
557 This is a followup 558 This is a followup
558 559
559 560
560 ---------- 561 ----------
561 status: unread -> chatting 562 status: unread -> chatting
562 _________________________________________________________________________ 563 _______________________________________________________________________
563 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 564 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
564 http://your.tracker.url.example/issue1 565 http://your.tracker.url.example/issue1
565 _________________________________________________________________________ 566 _______________________________________________________________________
566 567
567 ''') 568 ''')
568 569
569 def testFollowupNoNosyRecipients(self): 570 def testFollowupNoNosyRecipients(self):
570 self.doNewIssue() 571 self.doNewIssue()
588 '''FROM: roundup-admin@your.tracker.email.domain.example 589 '''FROM: roundup-admin@your.tracker.email.domain.example
589 TO: chef@bork.bork.bork 590 TO: chef@bork.bork.bork
590 Content-Type: text/plain 591 Content-Type: text/plain
591 Subject: [issue1] Testing... 592 Subject: [issue1] Testing...
592 To: chef@bork.bork.bork 593 To: chef@bork.bork.bork
593 From: "richard" <issue_tracker@your.tracker.email.domain.example> 594 From: richard <issue_tracker@your.tracker.email.domain.example>
594 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 595 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
595 MIME-Version: 1.0 596 MIME-Version: 1.0
596 Message-Id: <followup_dummy_id> 597 Message-Id: <followup_dummy_id>
597 In-Reply-To: <dummy_test_message_id> 598 In-Reply-To: <dummy_test_message_id>
598 X-Roundup-Name: Roundup issue tracker 599 X-Roundup-Name: Roundup issue tracker
599 Content-Transfer-Encoding: quoted-printable 600 Content-Transfer-Encoding: quoted-printable
604 This is a followup 605 This is a followup
605 606
606 607
607 ---------- 608 ----------
608 status: unread -> chatting 609 status: unread -> chatting
609 _________________________________________________________________________ 610 _______________________________________________________________________
610 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 611 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
611 http://your.tracker.url.example/issue1 612 http://your.tracker.url.example/issue1
612 _________________________________________________________________________ 613 _______________________________________________________________________
613 614
614 ''') 615 ''')
615 616
616 def testNosyRemove(self): 617 def testNosyRemove(self):
617 self.doNewIssue() 618 self.doNewIssue()
696 '''FROM: roundup-admin@your.tracker.email.domain.example 697 '''FROM: roundup-admin@your.tracker.email.domain.example
697 TO: chef@bork.bork.bork, richard@test 698 TO: chef@bork.bork.bork, richard@test
698 Content-Type: text/plain 699 Content-Type: text/plain
699 Subject: [issue1] Testing... 700 Subject: [issue1] Testing...
700 To: chef@bork.bork.bork, richard@test 701 To: chef@bork.bork.bork, richard@test
701 From: "mary" <issue_tracker@your.tracker.email.domain.example> 702 From: "Contrary, Mary" <issue_tracker@your.tracker.email.domain.example>
702 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 703 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
703 MIME-Version: 1.0 704 MIME-Version: 1.0
704 Message-Id: <followup_dummy_id> 705 Message-Id: <followup_dummy_id>
705 In-Reply-To: <dummy_test_message_id> 706 In-Reply-To: <dummy_test_message_id>
706 X-Roundup-Name: Roundup issue tracker 707 X-Roundup-Name: Roundup issue tracker
707 Content-Transfer-Encoding: quoted-printable 708 Content-Transfer-Encoding: quoted-printable
708 709
709 710
710 mary <mary@test> added the comment: 711 Contrary, Mary <mary@test> added the comment:
711 712
712 A message with encoding (encoded oe =F6) 713 A message with encoding (encoded oe =F6)
713 714
714 ---------- 715 ----------
715 status: unread -> chatting 716 status: unread -> chatting
716 _________________________________________________________________________ 717 _______________________________________________________________________
717 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 718 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
718 http://your.tracker.url.example/issue1 719 http://your.tracker.url.example/issue1
719 _________________________________________________________________________ 720 _______________________________________________________________________
720 ''') 721 ''')
721 722
722 723
723 def testMultipartEnc01(self): 724 def testMultipartEnc01(self):
724 self.doNewIssue() 725 self.doNewIssue()
750 '''FROM: roundup-admin@your.tracker.email.domain.example 751 '''FROM: roundup-admin@your.tracker.email.domain.example
751 TO: chef@bork.bork.bork, richard@test 752 TO: chef@bork.bork.bork, richard@test
752 Content-Type: text/plain 753 Content-Type: text/plain
753 Subject: [issue1] Testing... 754 Subject: [issue1] Testing...
754 To: chef@bork.bork.bork, richard@test 755 To: chef@bork.bork.bork, richard@test
755 From: "mary" <issue_tracker@your.tracker.email.domain.example> 756 From: "Contrary, Mary" <issue_tracker@your.tracker.email.domain.example>
756 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 757 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
757 MIME-Version: 1.0 758 MIME-Version: 1.0
758 Message-Id: <followup_dummy_id> 759 Message-Id: <followup_dummy_id>
759 In-Reply-To: <dummy_test_message_id> 760 In-Reply-To: <dummy_test_message_id>
760 X-Roundup-Name: Roundup issue tracker 761 X-Roundup-Name: Roundup issue tracker
761 Content-Transfer-Encoding: quoted-printable 762 Content-Transfer-Encoding: quoted-printable
762 763
763 764
764 mary <mary@test> added the comment: 765 Contrary, Mary <mary@test> added the comment:
765 766
766 A message with first part encoded (encoded oe =F6) 767 A message with first part encoded (encoded oe =F6)
767 768
768 ---------- 769 ----------
769 status: unread -> chatting 770 status: unread -> chatting
770 _________________________________________________________________________ 771 _______________________________________________________________________
771 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 772 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
772 http://your.tracker.url.example/issue1 773 http://your.tracker.url.example/issue1
773 _________________________________________________________________________ 774 _______________________________________________________________________
774 ''') 775 ''')
775 776
776 def testFollowupStupidQuoting(self): 777 def testFollowupStupidQuoting(self):
777 self.doNewIssue() 778 self.doNewIssue()
778 779
794 '''FROM: roundup-admin@your.tracker.email.domain.example 795 '''FROM: roundup-admin@your.tracker.email.domain.example
795 TO: chef@bork.bork.bork 796 TO: chef@bork.bork.bork
796 Content-Type: text/plain 797 Content-Type: text/plain
797 Subject: [issue1] Testing... 798 Subject: [issue1] Testing...
798 To: chef@bork.bork.bork 799 To: chef@bork.bork.bork
799 From: "richard" <issue_tracker@your.tracker.email.domain.example> 800 From: richard <issue_tracker@your.tracker.email.domain.example>
800 Reply-To: "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 801 Reply-To: Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
801 MIME-Version: 1.0 802 MIME-Version: 1.0
802 Message-Id: <followup_dummy_id> 803 Message-Id: <followup_dummy_id>
803 In-Reply-To: <dummy_test_message_id> 804 In-Reply-To: <dummy_test_message_id>
804 X-Roundup-Name: Roundup issue tracker 805 X-Roundup-Name: Roundup issue tracker
805 Content-Transfer-Encoding: quoted-printable 806 Content-Transfer-Encoding: quoted-printable
810 This is a followup 811 This is a followup
811 812
812 813
813 ---------- 814 ----------
814 status: unread -> chatting 815 status: unread -> chatting
815 _________________________________________________________________________ 816 _______________________________________________________________________
816 "Roundup issue tracker" <issue_tracker@your.tracker.email.domain.example> 817 Roundup issue tracker <issue_tracker@your.tracker.email.domain.example>
817 http://your.tracker.url.example/issue1 818 http://your.tracker.url.example/issue1
818 _________________________________________________________________________ 819 _______________________________________________________________________
819 ''') 820 ''')
820 821
821 def suite(): 822 def suite():
822 l = [unittest.makeSuite(MailgwTestCase), 823 l = [unittest.makeSuite(MailgwTestCase),
823 ] 824 ]

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