Support CJK parameters when post files
authorStephen Zhuang <stephen.zhuang@gmail.com>
Mon, 8 Oct 2012 08:52:06 +0000 (16:52 +0800)
committerStephen Zhuang <stephen.zhuang@gmail.com>
Mon, 8 Oct 2012 08:52:06 +0000 (16:52 +0800)
requests/models.py
tests/test_requests.py

index 7831149..f34b6f7 100644 (file)
@@ -360,9 +360,9 @@ class Request(object):
         for field, val in fields:
             if isinstance(val, list):
                 for v in val:
-                    new_fields.append((field, str(v)))
+                    new_fields.append((field, builtin_str(v)))
             else:
-                new_fields.append((field, str(val)))
+                new_fields.append((field, builtin_str(val)))
 
         for (k, v) in files:
             # support for explicit filename
index 3d6f49c..3e60081 100755 (executable)
@@ -347,6 +347,23 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
             self.assertEqual(post2.status_code, 200)
             self.assertEqual(post3.status_code, 200)
 
+    def test_POSTBIN_GET_POST_FILES_WITH_CJK_PARAMS(self):
+
+        for service in SERVICES:
+
+            with open(__file__) as f:
+                url = service('post')
+                post1 = post(url,
+                             files={'some': f},
+                             data={'some': '中文'})
+                post2 = post(url, data={'some': '日本語'}, files=[('some', f)])
+                post3 = post(url, data=[('some', '한국의')],
+                        files=[('some', f)])
+
+            self.assertEqual(post1.status_code, 200)
+            self.assertEqual(post2.status_code, 200)
+            self.assertEqual(post3.status_code, 200)
+
     def test_POSTBIN_GET_POST_FILES_WITH_HEADERS(self):
 
         for service in SERVICES: