diff options
Diffstat (limited to 'Lib/test/test_xmlrpc.py')
| -rw-r--r-- | Lib/test/test_xmlrpc.py | 69 | 
1 files changed, 57 insertions, 12 deletions
| diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index e97420b8a8..76723fad01 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -24,6 +24,8 @@ alist = [{'astring': 'foo@bar.baz.spam',            'ashortlong': 2,            'anotherlist': ['.zyx.41'],            'abase64': xmlrpclib.Binary(b"my dog has fleas"), +          'b64bytes': b"my dog has fleas", +          'b64bytearray': bytearray(b"my dog has fleas"),            'boolean': False,            'unicode': '\u4000\u6000\u8000',            'ukey\u4000': 'regular value', @@ -44,27 +46,54 @@ class XMLRPCTestCase(unittest.TestCase):      def test_dump_bare_datetime(self):          # This checks that an unwrapped datetime.date object can be handled          # by the marshalling code.  This can't be done via test_dump_load() -        # since with use_datetime set to 1 the unmarshaller would create +        # since with use_builtin_types set to 1 the unmarshaller would create          # datetime objects for the 'datetime[123]' keys as well          dt = datetime.datetime(2005, 2, 10, 11, 41, 23) +        self.assertEqual(dt, xmlrpclib.DateTime('20050210T11:41:23'))          s = xmlrpclib.dumps((dt,)) -        (newdt,), m = xmlrpclib.loads(s, use_datetime=1) + +        result, m = xmlrpclib.loads(s, use_builtin_types=True) +        (newdt,) = result          self.assertEqual(newdt, dt) -        self.assertEqual(m, None) +        self.assertIs(type(newdt), datetime.datetime) +        self.assertIsNone(m) + +        result, m = xmlrpclib.loads(s, use_builtin_types=False) +        (newdt,) = result +        self.assertEqual(newdt, dt) +        self.assertIs(type(newdt), xmlrpclib.DateTime) +        self.assertIsNone(m) + +        result, m = xmlrpclib.loads(s, use_datetime=True) +        (newdt,) = result +        self.assertEqual(newdt, dt) +        self.assertIs(type(newdt), datetime.datetime) +        self.assertIsNone(m) + +        result, m = xmlrpclib.loads(s, use_datetime=False) +        (newdt,) = result +        self.assertEqual(newdt, dt) +        self.assertIs(type(newdt), xmlrpclib.DateTime) +        self.assertIsNone(m) -        (newdt,), m = xmlrpclib.loads(s, use_datetime=0) -        self.assertEqual(newdt, xmlrpclib.DateTime('20050210T11:41:23'))      def test_datetime_before_1900(self):          # same as before but with a date before 1900          dt = datetime.datetime(1,  2, 10, 11, 41, 23) +        self.assertEqual(dt, xmlrpclib.DateTime('00010210T11:41:23'))          s = xmlrpclib.dumps((dt,)) -        (newdt,), m = xmlrpclib.loads(s, use_datetime=1) + +        result, m = xmlrpclib.loads(s, use_builtin_types=True) +        (newdt,) = result          self.assertEqual(newdt, dt) -        self.assertEqual(m, None) +        self.assertIs(type(newdt), datetime.datetime) +        self.assertIsNone(m) -        (newdt,), m = xmlrpclib.loads(s, use_datetime=0) -        self.assertEqual(newdt, xmlrpclib.DateTime('00010210T11:41:23')) +        result, m = xmlrpclib.loads(s, use_builtin_types=False) +        (newdt,) = result +        self.assertEqual(newdt, dt) +        self.assertIs(type(newdt), xmlrpclib.DateTime) +        self.assertIsNone(m)      def test_bug_1164912 (self):          d = xmlrpclib.DateTime() @@ -133,6 +162,25 @@ class XMLRPCTestCase(unittest.TestCase):                            xmlrpclib.loads(strg)[0][0])          self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,)) +    def test_dump_bytes(self): +        sample = b"my dog has fleas" +        self.assertEqual(sample, xmlrpclib.Binary(sample)) +        for type_ in bytes, bytearray, xmlrpclib.Binary: +            value = type_(sample) +            s = xmlrpclib.dumps((value,)) + +            result, m = xmlrpclib.loads(s, use_builtin_types=True) +            (newvalue,) = result +            self.assertEqual(newvalue, sample) +            self.assertIs(type(newvalue), bytes) +            self.assertIsNone(m) + +            result, m = xmlrpclib.loads(s, use_builtin_types=False) +            (newvalue,) = result +            self.assertEqual(newvalue, sample) +            self.assertIs(type(newvalue), xmlrpclib.Binary) +            self.assertIsNone(m) +      def test_get_host_info(self):          # see bug #3613, this raised a TypeError          transp = xmlrpc.client.Transport() @@ -140,9 +188,6 @@ class XMLRPCTestCase(unittest.TestCase):                            ('host.tld',                             [('Authorization', 'Basic dXNlcg==')], {})) -    def test_dump_bytes(self): -        self.assertRaises(TypeError, xmlrpclib.dumps, (b"my dog has fleas",)) -      def test_ssl_presence(self):          try:              import ssl | 
