Tests written for _encode_files new capability.
authorIan Cordasco <graffatcolmingov@gmail.com>
Wed, 1 Aug 2012 01:50:44 +0000 (21:50 -0400)
committerIan Cordasco <graffatcolmingov@gmail.com>
Thu, 2 Aug 2012 21:31:30 +0000 (17:31 -0400)
Work on issue #179

tests/test_requests.py

index 60a8407..11d58e7 100755 (executable)
@@ -309,11 +309,13 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
 
             with open(__file__) as f:
                 post2 = post(url, files={'some': f})
+                post3 = post(url, files=[('some', f)])
             self.assertEqual(post2.status_code, 200)
-
-            post3 = post(url, data='[{"some": "json"}]')
             self.assertEqual(post3.status_code, 200)
 
+            post4 = post(url, data='[{"some": "json"}]')
+            self.assertEqual(post4.status_code, 200)
+
     def test_POSTBIN_GET_POST_FILES_WITH_PARAMS(self):
 
         for service in SERVICES:
@@ -323,8 +325,13 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
                 post1 = post(url,
                              files={'some': f},
                              data={'some': 'data'})
+                post2 = post(url, data={'some': 'data'}, files=[('some', f)])
+                post3 = post(url, data=[('some', 'data')],
+                        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):
 
@@ -349,10 +356,12 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
             post1 = post(url, files={'fname.txt': 'fdata'})
             self.assertEqual(post1.status_code, 200)
 
-            post2 = post(url, files={'fname.txt': 'fdata', 'fname2.txt':'more fdata'})
+            post2 = post(url, files={'fname.txt': 'fdata',
+                    'fname2.txt': 'more fdata'})
             self.assertEqual(post2.status_code, 200)
 
-            post3 = post(url, files={'fname.txt': 'fdata', 'fname2.txt':open(__file__,'rb')})
+            post3 = post(url, files={'fname.txt': 'fdata',
+                    'fname2.txt': open(__file__, 'rb')})
             self.assertEqual(post3.status_code, 200)
 
             post4 = post(url, files={'fname.txt': 'fdata'})
@@ -374,9 +383,29 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
             post7 = post(url, files={'fname.txt': 'fdata to verify'})
             rbody = json.loads(post7.text)
             self.assertTrue(rbody.get('files', None))
-            self.assertTrue(rbody['files'].get('fname.txt'), None)
+            self.assertTrue(rbody['files'].get('fname.txt', None))
             self.assertEqual(rbody['files']['fname.txt'], 'fdata to verify')
 
+            post8 = post(url, files=[('fname.txt', 'fdata')])
+            self.assertEqual(post8.status_code, 200)
+            resp_body = post8.json
+            self.assertTrue(resp_body.get('files', None))
+            self.assertTrue(resp_body['files'].get('fname.txt', None))
+            self.assertEqual(resp_body['files']['fname.txt'], 'fdata')
+
+            post9 = post(url, files=[('fname.txt', fdata)])
+            self.assertEqual(post9.status_code, 200)
+
+            post10 = post(url, files=[('file',
+                        ('file.txt', 'more file data'))])
+            self.assertEqual(post10.status_code, 200)
+
+            post11 = post(url, files=[('fname.txt', 'fdata'),
+                    ('fname2.txt', 'more fdata')])
+            post12 = post(url, files=[('fname.txt', 'fdata'),
+                    ('fname2.txt', open(__file__, 'rb'))])
+            self.assertEqual(post11.status_code, 200)
+            self.assertEqual(post12.status_code, 200)
 
     def test_nonzero_evaluation(self):
 
@@ -972,6 +1001,10 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
         t = json.loads(r.text)
         self.assertEqual(t.get('form'), {'field': 'a, b'})
         self.assertEqual(t.get('files'), files)
+        r = post(httpbin('post'), data=data, files=files.items())
+        t = r.json
+        self.assertEqual(t.get('form'), {'field': 'a, b'})
+        self.assertEqual(t.get('files'), files)
 
 if __name__ == '__main__':
     unittest.main()