mirror of https://github.com/django/django.git
Added test for multipart, non form-data POST.
Closes #9054. The bug itself is no longer present.
This commit is contained in:
parent
7b85ef9dfb
commit
566e284c56
|
@ -503,9 +503,9 @@ class RequestsTests(SimpleTestCase):
|
||||||
})
|
})
|
||||||
self.assertEqual(request.POST, {'key': ['España']})
|
self.assertEqual(request.POST, {'key': ['España']})
|
||||||
|
|
||||||
def test_body_after_POST_multipart(self):
|
def test_body_after_POST_multipart_form_data(self):
|
||||||
"""
|
"""
|
||||||
Reading body after parsing multipart is not allowed
|
Reading body after parsing multipart/form-data is not allowed
|
||||||
"""
|
"""
|
||||||
# Because multipart is used for large amounts fo data i.e. file uploads,
|
# Because multipart is used for large amounts fo data i.e. file uploads,
|
||||||
# we don't want the data held in memory twice, and we don't want to
|
# we don't want the data held in memory twice, and we don't want to
|
||||||
|
@ -524,6 +524,29 @@ class RequestsTests(SimpleTestCase):
|
||||||
self.assertEqual(request.POST, {'name': ['value']})
|
self.assertEqual(request.POST, {'name': ['value']})
|
||||||
self.assertRaises(Exception, lambda: request.body)
|
self.assertRaises(Exception, lambda: request.body)
|
||||||
|
|
||||||
|
def test_body_after_POST_multipart_related(self):
|
||||||
|
"""
|
||||||
|
Reading body after parsing multipart that isn't form-data is allowed
|
||||||
|
"""
|
||||||
|
# Ticket #9054
|
||||||
|
# There are cases in which the multipart data is related instead of
|
||||||
|
# being a binary upload, in which case it should still be accessible
|
||||||
|
# via body.
|
||||||
|
payload_data = "\r\n".join([
|
||||||
|
'--boundary',
|
||||||
|
'Content-ID: id; name="name"',
|
||||||
|
'',
|
||||||
|
'value',
|
||||||
|
'--boundary--'
|
||||||
|
''])
|
||||||
|
payload = FakePayload(payload_data)
|
||||||
|
request = WSGIRequest({'REQUEST_METHOD': 'POST',
|
||||||
|
'CONTENT_TYPE': 'multipart/related; boundary=boundary',
|
||||||
|
'CONTENT_LENGTH': len(payload),
|
||||||
|
'wsgi.input': payload})
|
||||||
|
self.assertEqual(request.POST, {})
|
||||||
|
self.assertEqual(request.body, payload_data)
|
||||||
|
|
||||||
def test_POST_multipart_with_content_length_zero(self):
|
def test_POST_multipart_with_content_length_zero(self):
|
||||||
"""
|
"""
|
||||||
Multipart POST requests with Content-Length >= 0 are valid and need to be handled.
|
Multipart POST requests with Content-Length >= 0 are valid and need to be handled.
|
||||||
|
|
Loading…
Reference in New Issue