summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/test/client.py9
-rw-r--r--docs/releases/1.7.1.txt3
-rw-r--r--tests/test_client_regress/tests.py10
3 files changed, 19 insertions, 3 deletions
diff --git a/django/test/client.py b/django/test/client.py
index 22c7b18b07..7a1802b496 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -278,8 +278,9 @@ class RequestFactory(object):
def get(self, path, data=None, secure=False, **extra):
"Construct a GET request."
+ data = {} if data is None else data
r = {
- 'QUERY_STRING': urlencode(data or {}, doseq=True),
+ 'QUERY_STRING': urlencode(data, doseq=True),
}
r.update(extra)
return self.generic('GET', path, secure=secure, **r)
@@ -288,7 +289,8 @@ class RequestFactory(object):
secure=False, **extra):
"Construct a POST request."
- post_data = self._encode_data(data or {}, content_type)
+ data = {} if data is None else data
+ post_data = self._encode_data(data, content_type)
return self.generic('POST', path, post_data, content_type,
secure=secure, **extra)
@@ -296,8 +298,9 @@ class RequestFactory(object):
def head(self, path, data=None, secure=False, **extra):
"Construct a HEAD request."
+ data = {} if data is None else data
r = {
- 'QUERY_STRING': urlencode(data or {}, doseq=True),
+ 'QUERY_STRING': urlencode(data, doseq=True),
}
r.update(extra)
return self.generic('HEAD', path, secure=secure, **r)
diff --git a/docs/releases/1.7.1.txt b/docs/releases/1.7.1.txt
index dfb1acbeac..cedb54d420 100644
--- a/docs/releases/1.7.1.txt
+++ b/docs/releases/1.7.1.txt
@@ -128,3 +128,6 @@ Bugfixes
* Fixed :djadmin:`makemigrations` to detect changes to
:attr:`Meta.db_table <django.db.models.Options.db_table>` (:ticket:`23629`).
+
+* Fixed a regression when feeding the Django test client with an empty data
+ string (:ticket:`21740`).
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index 604b07624f..c5d3f9b8a1 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -1186,6 +1186,16 @@ class RequestMethodStringDataTests(TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'request method: PATCH')
+ def test_empty_string_data(self):
+ "Request a view with empty string data via request method GET/POST/HEAD"
+ # Regression test for #21740
+ response = self.client.get('/body/', data='', content_type='application/json')
+ self.assertEqual(response.content, b'')
+ response = self.client.post('/body/', data='', content_type='application/json')
+ self.assertEqual(response.content, b'')
+ response = self.client.head('/body/', data='', content_type='application/json')
+ self.assertEqual(response.content, b'')
+
class QueryStringTests(TestCase):
urls = 'test_client_regress.urls'