From 8d9d9fb06493e322c04d64b9234df0ae218e9500 Mon Sep 17 00:00:00 2001 From: Stephen Huenneke Date: Mon, 29 Jul 2013 13:31:06 -0700 Subject: [PATCH 1/4] Fixing error return to be consistent with tuple return at the end of the method. --- requests/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requests/models.py b/requests/models.py index 24391533..9289f3ba 100644 --- a/requests/models.py +++ b/requests/models.py @@ -93,7 +93,7 @@ class RequestEncodingMixin(object): """ if (not files) or isinstance(data, str): - return None + return (None, None) new_fields = [] fields = to_key_val_list(data or {}) From f75ee9fb6e9c651ce49a438634b6e9ced0560e1b Mon Sep 17 00:00:00 2001 From: Stephen Huenneke Date: Mon, 29 Jul 2013 14:42:47 -0700 Subject: [PATCH 2/4] Making sure we check for str/unicode. --- requests/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requests/models.py b/requests/models.py index 9289f3ba..730b9f5a 100644 --- a/requests/models.py +++ b/requests/models.py @@ -92,8 +92,8 @@ class RequestEncodingMixin(object): if parameters are supplied as a dict. """ - if (not files) or isinstance(data, str): - return (None, None) + if (not files) or isinstance(data, basestring): + return None new_fields = [] fields = to_key_val_list(data or {}) From 9dd823c289faca0d496ef71f25d36216d2259ca3 Mon Sep 17 00:00:00 2001 From: Stephen Huenneke Date: Tue, 6 Aug 2013 11:04:03 -0700 Subject: [PATCH 3/4] Raising ValueError's when we're passed inconsistent POST data and files dict. --- requests/models.py | 6 ++++-- test_requests.py | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/requests/models.py b/requests/models.py index 730b9f5a..81ec2469 100644 --- a/requests/models.py +++ b/requests/models.py @@ -92,8 +92,10 @@ class RequestEncodingMixin(object): if parameters are supplied as a dict. """ - if (not files) or isinstance(data, basestring): - return None + if (not files): + raise ValueError("Files must be provided.") + elif isinstance(data, basestring): + raise ValueError("Data must not be a string.") new_fields = [] fields = to_key_val_list(data or {}) diff --git a/test_requests.py b/test_requests.py index 27d5e676..01e17803 100755 --- a/test_requests.py +++ b/test_requests.py @@ -357,6 +357,12 @@ class RequestsTestCase(unittest.TestCase): except ValueError: pass + with open('requirements.txt') as f: + try: + requests.post(url, data='[{"some": "data"}]', files={'some': f}) + except ValueError: + pass + def test_request_ok_set(self): r = requests.get(httpbin('status', '404')) self.assertEqual(r.ok, False) From b676bf3214fa917f20542b9d3d31577b47a73cc1 Mon Sep 17 00:00:00 2001 From: Stephen Huenneke Date: Thu, 8 Aug 2013 08:48:42 -0700 Subject: [PATCH 4/4] Fixing tests to verify thrown ValueError's. --- test_requests.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test_requests.py b/test_requests.py index 01e17803..40daaf9b 100755 --- a/test_requests.py +++ b/test_requests.py @@ -10,6 +10,7 @@ import unittest import pickle import requests +import pytest from requests.auth import HTTPDigestAuth from requests.adapters import HTTPAdapter from requests.compat import str, cookielib, getproxies, urljoin @@ -357,11 +358,11 @@ class RequestsTestCase(unittest.TestCase): except ValueError: pass + def test_conflicting_post_params(self): + url = httpbin('post') with open('requirements.txt') as f: - try: - requests.post(url, data='[{"some": "data"}]', files={'some': f}) - except ValueError: - pass + pytest.raises(ValueError, "requests.post(url, data='[{\"some\": \"data\"}]', files={'some': f})") + pytest.raises(ValueError, "requests.post(url, data=u'[{\"some\": \"data\"}]', files={'some': f})") def test_request_ok_set(self): r = requests.get(httpbin('status', '404'))