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']})
|
||||
|
||||
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,
|
||||
# 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.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):
|
||||
"""
|
||||
Multipart POST requests with Content-Length >= 0 are valid and need to be handled.
|
||||
|
|
Loading…
Reference in New Issue