diff options
| author | Claude Paroz <claude@2xlibre.net> | 2014-10-20 22:32:43 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2014-10-21 09:17:42 +0200 |
| commit | 53bc81dca3d785d0b399cacbf84cc660355895fc (patch) | |
| tree | fc2f397646c2b554d9e28c6fc68d4b05965644b3 | |
| parent | 117e97061093665a50bf35139e25e82da0afdf32 (diff) | |
[1.7.x] Fixed #21740 -- Allowed test client data to be an empty string
This fixes a regression introduced by 2a31d00933.
Thanks tony-zhu for the report.
Backport of f0bb3c98cc from master.
| -rw-r--r-- | django/test/client.py | 9 | ||||
| -rw-r--r-- | docs/releases/1.7.1.txt | 3 | ||||
| -rw-r--r-- | tests/test_client_regress/tests.py | 10 |
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' |
