﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32164	Broken content_length header in AsyncTestClient when doing post requests with json data	patrick	nobody	"Hello there, this is my first formal bug report, so I hope I'm doing this correctly. Anyway I was working on a async view and adding a test for it but I got this error:


{{{
ERROR    django.request:log.py:224 Internal Server Error: /graphql_async
Traceback (most recent call last):
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/.venv/lib/python3.9/site-packages/asgiref/sync.py"", line 339, in thread_handler
    raise exc_info[1]
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/.venv/lib/python3.9/site-packages/django/core/handlers/exception.py"", line 38, in inner
    response = await get_response(request)
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/.venv/lib/python3.9/site-packages/django/core/handlers/base.py"", line 231, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/strawberry/django/views.py"", line 145, in dispatch
    operation_context = self.get_execution_context(request)
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/strawberry/django/views.py"", line 51, in get_execution_context
    data = self.parse_body(request)
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/strawberry/django/views.py"", line 42, in parse_body
    return json.loads(request.body)
  File ""/Users/patrick/Documents/github/strawberry-graphql/strawberry/.venv/lib/python3.9/site-packages/django/http/request.py"", line 320, in body
    int(self.META.get('CONTENT_LENGTH') or 0) > settings.DATA_UPLOAD_MAX_MEMORY_SIZE):
ValueError: invalid literal for int() with base 10: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
}}}

after digging a bit it looks like we set the content_length to `bytes(len(data))`, which seems to be wrong, since it produces this string:

{{{
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
}}}

Code is here: https://github.com/django/django/blob/d1791539a7d86739cd44c909fa8239cae7f85874/django/test/client.py#L543

Also I did a patch for this which seems to work: https://github.com/django/django/pull/13632


"	Bug	new	Testing framework	3.1	Normal		aysnc		Unreviewed	1	0	0	0	0	0
