183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehimport unittest 283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehfrom test import test_support 383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehimport string 583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehimport StringIO 683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehmimetools = test_support.import_module("mimetools", deprecated=True) 883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehmsgtext1 = mimetools.Message(StringIO.StringIO( 1083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh"""Content-Type: text/plain; charset=iso-8859-1; format=flowed 1183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew HsiehContent-Transfer-Encoding: 8bit 1283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew HsiehFoo! 1483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh""")) 1583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehclass MimeToolsTest(unittest.TestCase): 1783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh def test_decodeencode(self): 1983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh start = string.ascii_letters + "=" + string.digits + "\n" 2083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh for enc in ['7bit','8bit','base64','quoted-printable', 2183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 'uuencode', 'x-uuencode', 'uue', 'x-uue']: 2283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh i = StringIO.StringIO(start) 2383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh o = StringIO.StringIO() 2483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh mimetools.encode(i, o, enc) 2583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh i = StringIO.StringIO(o.getvalue()) 2683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh o = StringIO.StringIO() 2783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh mimetools.decode(i, o, enc) 2883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(o.getvalue(), start) 2983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 3083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh def test_boundary(self): 3183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh s = set([""]) 3283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh for i in xrange(100): 3383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh nb = mimetools.choose_boundary() 3483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertNotIn(nb, s) 3583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh s.add(nb) 3683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 3783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh def test_message(self): 3883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh msg = mimetools.Message(StringIO.StringIO(msgtext1)) 3983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.gettype(), "text/plain") 4083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getmaintype(), "text") 4183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getsubtype(), "plain") 4283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getplist(), ["charset=iso-8859-1", "format=flowed"]) 4383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getparamnames(), ["charset", "format"]) 4483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getparam("charset"), "iso-8859-1") 4583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getparam("format"), "flowed") 4683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getparam("spam"), None) 4783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.assertEqual(msg.getencoding(), "8bit") 4883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 4983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehdef test_main(): 5083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh test_support.run_unittest(MimeToolsTest) 5183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 5283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehif __name__=="__main__": 5383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh test_main() 54