comparison test/test_mailgw.py @ 4503:9f488541802f

Yet another fix to the mail gateway... ...messages got *all* files of an issue, not just the new ones. Thanks to Rafal Bisingier for reporting and proposing a fix. The regression test was updated. Fix version numbers in upgrade documentation, the file-unlink defect was in 1.4.17 not 1.4.16. Thanks to Rafal Bisingier.
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Wed, 01 Jun 2011 12:49:47 +0000
parents 8df9492c2746
children a00e0e73bb26
comparison
equal deleted inserted replaced
4502:4b79cf4bd831 4503:9f488541802f
623 self.assertEqual(f.name, names.get (n, 'unnamed')) 623 self.assertEqual(f.name, names.get (n, 'unnamed'))
624 if n in content : 624 if n in content :
625 self.assertEqual(f.content, content [n]) 625 self.assertEqual(f.content, content [n])
626 self.assertEqual(msg.content, 'test attachment second text/plain') 626 self.assertEqual(msg.content, 'test attachment second text/plain')
627 627
628 def testMultipartSeveralAttachmentMessages(self):
629 self.doNewIssue()
630 self._handle_mail(self.multipart_msg)
631 messages = self.db.issue.get('1', 'messages')
632 messages.sort()
633 self.assertEqual(messages[-1], '2')
634 msg = self.db.msg.getnode (messages[-1])
635 self.assertEqual(len(msg.files), 5)
636 issue = self.db.issue.getnode ('1')
637 self.assertEqual(len(issue.files), 5)
638 names = {0 : 'first.dvi', 4 : 'second.dvi'}
639 content = {3 : 'test attachment third text/plain\n',
640 4 : 'Just a test\n'}
641 for n, id in enumerate (msg.files):
642 f = self.db.file.getnode (id)
643 self.assertEqual(f.name, names.get (n, 'unnamed'))
644 if n in content :
645 self.assertEqual(f.content, content [n])
646 self.assertEqual(msg.content, 'test attachment second text/plain')
647 self.assertEqual(msg.files, ['1', '2', '3', '4', '5'])
648 self.assertEqual(issue.files, ['1', '2', '3', '4', '5'])
649
650 self._handle_mail(self.multipart_msg)
651 issue = self.db.issue.getnode ('1')
652 self.assertEqual(len(issue.files), 10)
653 messages = self.db.issue.get('1', 'messages')
654 messages.sort()
655 self.assertEqual(messages[-1], '3')
656 msg = self.db.msg.getnode (messages[-1])
657 self.assertEqual(issue.files, [str(i+1) for i in range(10)])
658 self.assertEqual(msg.files, ['6', '7', '8', '9', '10'])
659
628 def testMultipartKeepFiles(self): 660 def testMultipartKeepFiles(self):
629 self.doNewIssue() 661 self.doNewIssue()
630 self._handle_mail(self.multipart_msg) 662 self._handle_mail(self.multipart_msg)
631 messages = self.db.issue.get('1', 'messages') 663 messages = self.db.issue.get('1', 'messages')
632 messages.sort() 664 messages.sort()
633 msg = self.db.msg.getnode (messages[-1]) 665 msg = self.db.msg.getnode (messages[-1])
634 assert(len(msg.files) == 5) 666 self.assertEqual(len(msg.files), 5)
635 issue = self.db.issue.getnode ('1') 667 issue = self.db.issue.getnode ('1')
636 assert(len(issue.files) == 5) 668 self.assertEqual(len(issue.files), 5)
637 names = {0 : 'first.dvi', 4 : 'second.dvi'} 669 names = {0 : 'first.dvi', 4 : 'second.dvi'}
638 content = {3 : 'test attachment third text/plain\n', 670 content = {3 : 'test attachment third text/plain\n',
639 4 : 'Just a test\n'} 671 4 : 'Just a test\n'}
640 for n, id in enumerate (msg.files): 672 for n, id in enumerate (msg.files):
641 f = self.db.file.getnode (id) 673 f = self.db.file.getnode (id)
650 Subject: [issue1] Testing... 682 Subject: [issue1] Testing...
651 683
652 This ist a message without attachment 684 This ist a message without attachment
653 ''') 685 ''')
654 issue = self.db.issue.getnode ('1') 686 issue = self.db.issue.getnode ('1')
655 assert(len(issue.files) == 5) 687 self.assertEqual(len(issue.files), 5)
656 self.assertEqual(issue.files, ['1', '2', '3', '4', '5']) 688 self.assertEqual(issue.files, ['1', '2', '3', '4', '5'])
657 689
658 def testMultipartDropAlternatives(self): 690 def testMultipartDropAlternatives(self):
659 self.doNewIssue() 691 self.doNewIssue()
660 self.db.config.MAILGW_IGNORE_ALTERNATIVES = True 692 self.db.config.MAILGW_IGNORE_ALTERNATIVES = True
661 self._handle_mail(self.multipart_msg) 693 self._handle_mail(self.multipart_msg)
662 messages = self.db.issue.get('1', 'messages') 694 messages = self.db.issue.get('1', 'messages')
663 messages.sort() 695 messages.sort()
664 msg = self.db.msg.getnode (messages[-1]) 696 msg = self.db.msg.getnode (messages[-1])
665 assert(len(msg.files) == 2) 697 self.assertEqual(len(msg.files), 2)
666 names = {1 : 'second.dvi'} 698 names = {1 : 'second.dvi'}
667 content = {0 : 'test attachment third text/plain\n', 699 content = {0 : 'test attachment third text/plain\n',
668 1 : 'Just a test\n'} 700 1 : 'Just a test\n'}
669 for n, id in enumerate (msg.files): 701 for n, id in enumerate (msg.files):
670 f = self.db.file.getnode (id) 702 f = self.db.file.getnode (id)
679 self.db.config.NOSY_MAX_ATTACHMENT_SIZE = 0 711 self.db.config.NOSY_MAX_ATTACHMENT_SIZE = 0
680 self._handle_mail(self.multipart_msg_latin1) 712 self._handle_mail(self.multipart_msg_latin1)
681 messages = self.db.issue.get('1', 'messages') 713 messages = self.db.issue.get('1', 'messages')
682 messages.sort() 714 messages.sort()
683 msg = self.db.msg.getnode (messages[-1]) 715 msg = self.db.msg.getnode (messages[-1])
684 assert(len(msg.files) == 1) 716 self.assertEqual(len(msg.files), 1)
685 name = 'unnamed' 717 name = 'unnamed'
686 content = '<html>' + c + '</html>\n' 718 content = '<html>' + c + '</html>\n'
687 for n, id in enumerate (msg.files): 719 for n, id in enumerate (msg.files):
688 f = self.db.file.getnode (id) 720 f = self.db.file.getnode (id)
689 self.assertEqual(f.name, name) 721 self.assertEqual(f.name, name)
730 self.db.config.MAIL_CHARSET = 'iso-8859-1' 762 self.db.config.MAIL_CHARSET = 'iso-8859-1'
731 self._handle_mail(self.multipart_msg_latin1) 763 self._handle_mail(self.multipart_msg_latin1)
732 messages = self.db.issue.get('1', 'messages') 764 messages = self.db.issue.get('1', 'messages')
733 messages.sort() 765 messages.sort()
734 msg = self.db.msg.getnode (messages[-1]) 766 msg = self.db.msg.getnode (messages[-1])
735 assert(len(msg.files) == 1) 767 self.assertEqual(len(msg.files), 1)
736 name = 'unnamed' 768 name = 'unnamed'
737 content = '<html>' + c + '</html>\n' 769 content = '<html>' + c + '</html>\n'
738 for n, id in enumerate (msg.files): 770 for n, id in enumerate (msg.files):
739 f = self.db.file.getnode (id) 771 f = self.db.file.getnode (id)
740 self.assertEqual(f.name, name) 772 self.assertEqual(f.name, name)
779 self.doNewIssue() 811 self.doNewIssue()
780 self._handle_mail(self.multipart_msg_latin1) 812 self._handle_mail(self.multipart_msg_latin1)
781 messages = self.db.issue.get('1', 'messages') 813 messages = self.db.issue.get('1', 'messages')
782 messages.sort() 814 messages.sort()
783 msg = self.db.msg.getnode (messages[-1]) 815 msg = self.db.msg.getnode (messages[-1])
784 assert(len(msg.files) == 1) 816 self.assertEqual(len(msg.files), 1)
785 name = 'unnamed' 817 name = 'unnamed'
786 content = '<html>' + c + '</html>\n' 818 content = '<html>' + c + '</html>\n'
787 for n, id in enumerate (msg.files): 819 for n, id in enumerate (msg.files):
788 f = self.db.file.getnode (id) 820 f = self.db.file.getnode (id)
789 self.assertEqual(f.name, name) 821 self.assertEqual(f.name, name)
843 self.db.config.MAIL_CHARSET = 'iso-8859-1' 875 self.db.config.MAIL_CHARSET = 'iso-8859-1'
844 self._handle_mail(self.multipart_msg_latin1) 876 self._handle_mail(self.multipart_msg_latin1)
845 messages = self.db.issue.get('1', 'messages') 877 messages = self.db.issue.get('1', 'messages')
846 messages.sort() 878 messages.sort()
847 msg = self.db.msg.getnode (messages[-1]) 879 msg = self.db.msg.getnode (messages[-1])
848 assert(len(msg.files) == 1) 880 self.assertEqual(len(msg.files), 1)
849 name = 'unnamed' 881 name = 'unnamed'
850 content = '<html>' + c + '</html>\n' 882 content = '<html>' + c + '</html>\n'
851 for n, id in enumerate (msg.files): 883 for n, id in enumerate (msg.files):
852 f = self.db.file.getnode (id) 884 f = self.db.file.getnode (id)
853 self.assertEqual(f.name, name) 885 self.assertEqual(f.name, name)
905 self.doNewIssue() 937 self.doNewIssue()
906 self._handle_mail(self.multipart_msg_rfc822) 938 self._handle_mail(self.multipart_msg_rfc822)
907 messages = self.db.issue.get('1', 'messages') 939 messages = self.db.issue.get('1', 'messages')
908 messages.sort() 940 messages.sort()
909 msg = self.db.msg.getnode (messages[-1]) 941 msg = self.db.msg.getnode (messages[-1])
910 assert(len(msg.files) == 1) 942 self.assertEqual(len(msg.files), 1)
911 name = "Fwd: Original email subject.eml" 943 name = "Fwd: Original email subject.eml"
912 for n, id in enumerate (msg.files): 944 for n, id in enumerate (msg.files):
913 f = self.db.file.getnode (id) 945 f = self.db.file.getnode (id)
914 self.assertEqual(f.name, name) 946 self.assertEqual(f.name, name)
915 self.assertEqual(msg.content, 'First part: Text') 947 self.assertEqual(msg.content, 'First part: Text')

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