summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Arminio <patrick.arminio@gmail.com>2020-11-02 17:42:13 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-11-03 10:12:40 +0100
commit542b4b3ab44d33dfd9b00c22f624ee4aed6f7534 (patch)
tree423efd16cdea32e16d176fc6dbcb1af165da9238
parentb03b19b585a0a3685d48dae95d060d13ff4755fa (diff)
downloaddjango-542b4b3ab44d33dfd9b00c22f624ee4aed6f7534.tar.gz
Fixed #32162 -- Fixed setting Content-Length header in AsyncRequestFactory.
-rw-r--r--django/test/client.py2
-rw-r--r--docs/releases/3.1.4.txt3
-rw-r--r--tests/test_client/tests.py15
3 files changed, 18 insertions, 2 deletions
diff --git a/django/test/client.py b/django/test/client.py
index ba1c37ed59..dfd443a83c 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -540,7 +540,7 @@ class AsyncRequestFactory(RequestFactory):
}
if data:
s['headers'].extend([
- (b'content-length', bytes(len(data))),
+ (b'content-length', str(len(data)).encode('ascii')),
(b'content-type', content_type.encode('ascii')),
])
s['_body_file'] = FakePayload(data)
diff --git a/docs/releases/3.1.4.txt b/docs/releases/3.1.4.txt
index a112e9993e..f8d9752db7 100644
--- a/docs/releases/3.1.4.txt
+++ b/docs/releases/3.1.4.txt
@@ -9,4 +9,5 @@ Django 3.1.4 fixes several bugs in 3.1.3.
Bugfixes
========
-* ...
+* Fixed setting the ``Content-Length`` HTTP header in ``AsyncRequestFactory``
+ (:ticket:`32162`).
diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py
index 9932a7f02a..457c53852e 100644
--- a/tests/test_client/tests.py
+++ b/tests/test_client/tests.py
@@ -997,3 +997,18 @@ class AsyncRequestFactoryTest(SimpleTestCase):
request = method('/somewhere/')
response = await async_generic_view(request)
self.assertEqual(response.status_code, 200)
+
+ async def test_request_factory_data(self):
+ async def async_generic_view(request):
+ return HttpResponse(status=200, content=request.body)
+
+ request = self.request_factory.post(
+ '/somewhere/',
+ data={'example': 'data'},
+ content_type='application/json',
+ )
+ self.assertEqual(request.headers['content-length'], '19')
+ self.assertEqual(request.headers['content-type'], 'application/json')
+ response = await async_generic_view(request)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, b'{"example": "data"}')