Fixing some RFC 2231 related issues as reported in the Spambayes

project, and with assistance from Oleg Broytmann.  Specifically,
added some new tests to make sure we handle RFC 2231 encoded
parameters correctly.  Two new data files were added which contain RFC
2231 encoded parameters.
This commit is contained in:
Barry Warsaw 2002-09-26 17:21:02 +00:00
parent 15aefa94d0
commit 9c74569ec9
3 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,14 @@
Delivered-To: freebsd-isp@freebsd.org
Date: Tue, 26 Sep 2000 12:23:03 -0500
From: Anne Person <aperson@example.com>
To: Barney Dude <bdude@example.com>
Subject: Re: Limiting Perl CPU Utilization...
Mime-Version: 1.0
Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.3.8i
Sender: owner-freebsd-isp@FreeBSD.ORG
Precedence: bulk
X-Loop: FreeBSD.org
Some message.

View File

@ -0,0 +1,29 @@
Delivered-To: freebsd-isp@freebsd.org
Date: Wed, 27 Sep 2000 11:11:09 -0500
From: Anne Person <aperson@example.com>
To: Barney Dude <bdude@example.com>
Subject: Re: Limiting Perl CPU Utilization...
Mime-Version: 1.0
Content-Type: multipart/signed; micalg*=ansi-x3.4-1968''pgp-md5;
protocol*=ansi-x3.4-1968''application%2Fpgp-signature;
boundary*="ansi-x3.4-1968''EeQfGwPcQSOJBaQU"
Content-Disposition: inline
Sender: owner-freebsd-isp@FreeBSD.ORG
Precedence: bulk
X-Loop: FreeBSD.org
--EeQfGwPcQSOJBaQU
Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
part 1
--EeQfGwPcQSOJBaQU
Content-Type: text/plain
Content-Disposition: inline
part 2
--EeQfGwPcQSOJBaQU--

View File

@ -1465,6 +1465,14 @@ class TestIdempotent(TestEmailBase):
msg, text = self._msgobj('msg_31.txt') msg, text = self._msgobj('msg_31.txt')
self._idempotent(msg, text) self._idempotent(msg, text)
def test_rfc2231_charset(self):
msg, text = self._msgobj('msg_32.txt')
self._idempotent(msg, text)
def test_more_rfc2231_parameters(self):
msg, text = self._msgobj('msg_33.txt')
self._idempotent(msg, text)
def test_content_type(self): def test_content_type(self):
eq = self.assertEquals eq = self.assertEquals
unless = self.failUnless unless = self.failUnless
@ -1514,6 +1522,7 @@ class TestIdempotent(TestEmailBase):
self.failUnless(isinstance(msg1.get_payload(), StringType)) self.failUnless(isinstance(msg1.get_payload(), StringType))
eq(msg1.get_payload(), '\n') eq(msg1.get_payload(), '\n')
# Test various other bits of the package's functionality # Test various other bits of the package's functionality
class TestMiscellaneous(unittest.TestCase): class TestMiscellaneous(unittest.TestCase):
@ -2147,6 +2156,15 @@ A very long line that must get split to something other than at the
h.append('hello', 'iso-8859-1') h.append('hello', 'iso-8859-1')
eq(h, '=?iso-8859-1?q?hello?=') eq(h, '=?iso-8859-1?q?hello?=')
def test_unicode_error(self):
raises = self.assertRaises
raises(UnicodeError, Header, u'[P\xf6stal]', 'us-ascii')
raises(UnicodeError, Header, '[P\xf6stal]', 'us-ascii')
h = Header()
raises(UnicodeError, h.append, u'[P\xf6stal]', 'us-ascii')
raises(UnicodeError, h.append, '[P\xf6stal]', 'us-ascii')
raises(UnicodeError, Header, u'\u83ca\u5730\u6642\u592b', 'iso-8859-1')
# Test RFC 2231 header parameters (en/de)coding # Test RFC 2231 header parameters (en/de)coding
@ -2226,6 +2244,11 @@ Do you like this message?
-Me -Me
""") """)
def test_rfc2231_get_content_charset(self):
eq = self.assertEqual
msg = self._msgobj('msg_32.txt')
eq(msg.get_content_charset(), 'us-ascii')
def _testclasses(): def _testclasses():