8000 Fixed #21740 -- Allowed test client data to be an empty string · alex-python/django@f0bb3c9 · GitHub
[go: up one dir, main page]

Skip to content
10000

Commit f0bb3c9

Browse files
committed
Fixed #21740 -- Allowed test client data to be an empty string
This fixes a regression introduced by 2a31d00. Thanks tony-zhu for the report.
1 parent edcb33c commit f0bb3c9

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

django/test/client.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,9 @@ def _get_path(self, parsed):
279279
def get(self, path, data=None, secure=False, **extra):
280280
"Construct a GET request."
281281

282+
data = {} if data is None else data
282283
r = {
283-
'QUERY_STRING': urlencode(data or {}, doseq=True),
284+
'QUERY_STRING': urlencode(data, doseq=True),
284285
}
285286
r.update(extra)
286287
return self.generic('GET', path, secure=secure, **r)
@@ -289,16 +290,18 @@ def post(self, path, data=None, content_type=MULTIPART_CONTENT,
289290
secure=False, **extra):
290291
"Construct a POST request."
291292

292-
post_data = self._encode_data(data or {}, content_type)
293+
data = {} if data is None else data
294+
post_data = self._encode_data(data, content_type)
293295

294296
return self.generic('POST', path, post_data, content_type,
295297
secure=secure, **extra)
296298

297299
def head(self, path, data=None, secure=False, **extra):
298300
"Construct a HEAD request."
299301

302+
data = {} if data is None else data
300303
r = {
301-
'QUERY_STRING': urlencode(data or {}, doseq=True),
304+
'QUERY_STRING': urlencode(data, doseq=True),
302305
}
303306
r.update(extra)
304307
return self.generic('HEAD', path, secure=secure, **r)

docs/releases/1.7.1.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,6 @@ Bugfixes
129129

130130
* Fixed :djadmin:`makemigrations` to detect changes to
131131
:attr:`Meta.db_table <django.db.models.Options.db_table>` (:ticket:`23629`).
132+
133+
* Fixed a regression when feeding the Django test client with an empty data
134+
string (:ticket:`21740`).

tests/test_client_regress/tests.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,6 +1228,16 @@ def test_patch(self):
12281228
self.assertEqual(response.status_code, 200)
12291229
self.assertEqual(response.content, b'request method: PATCH')
12301230

1231+
def test_empty_string_data(self):
1232+
"Request a view with empty string data via request method GET/POST/HEAD"
1233+
# Regression test for #21740
1234+
response = self.client.get('/body/', data='', content_type='application/json')
1235+
self.assertEqual(response.content, b'')
1236+
response = self.client.post('/body/', data='', content_type='application/json')
1237+
self.assertEqual(response.content, b'')
1238+
response = self.client.head('/body/', data='', content_type='application/json')
1239+
self.assertEqual(response.content, b'')
1240+
12311241

12321242
@override_settings(ROOT_URLCONF='test_client_regress.urls',)
12331243
class QueryStringTests(TestCase):

0 commit comments

Comments
 (0)
0