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