summaryrefslogtreecommitdiff
path: root/tests/requests/test_data_upload_settings.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/requests/test_data_upload_settings.py')
-rw-r--r--tests/requests/test_data_upload_settings.py217
1 files changed, 0 insertions, 217 deletions
diff --git a/tests/requests/test_data_upload_settings.py b/tests/requests/test_data_upload_settings.py
deleted file mode 100644
index 0199296293..0000000000
--- a/tests/requests/test_data_upload_settings.py
+++ /dev/null
@@ -1,217 +0,0 @@
-from io import BytesIO
-
-from django.core.exceptions import RequestDataTooBig, TooManyFieldsSent
-from django.core.handlers.wsgi import WSGIRequest
-from django.test import SimpleTestCase
-from django.test.client import FakePayload
-
-TOO_MANY_FIELDS_MSG = (
- "The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS."
-)
-TOO_MUCH_DATA_MSG = "Request body exceeded settings.DATA_UPLOAD_MAX_MEMORY_SIZE."
-
-
-class DataUploadMaxMemorySizeFormPostTests(SimpleTestCase):
- def setUp(self):
- payload = FakePayload("a=1&a=2&a=3\r\n")
- self.request = WSGIRequest(
- {
- "REQUEST_METHOD": "POST",
- "CONTENT_TYPE": "application/x-www-form-urlencoded",
- "CONTENT_LENGTH": len(payload),
- "wsgi.input": payload,
- }
- )
-
- def test_size_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=12):
- with self.assertRaisesMessage(RequestDataTooBig, TOO_MUCH_DATA_MSG):
- self.request._load_post_and_files()
-
- def test_size_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=13):
- self.request._load_post_and_files()
-
- def test_no_limit(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=None):
- self.request._load_post_and_files()
-
-
-class DataUploadMaxMemorySizeMultipartPostTests(SimpleTestCase):
- def setUp(self):
- payload = FakePayload(
- "\r\n".join(
- [
- "--boundary",
- 'Content-Disposition: form-data; name="name"',
- "",
- "value",
- "--boundary--",
- ]
- )
- )
- self.request = WSGIRequest(
- {
- "REQUEST_METHOD": "POST",
- "CONTENT_TYPE": "multipart/form-data; boundary=boundary",
- "CONTENT_LENGTH": len(payload),
- "wsgi.input": payload,
- }
- )
-
- def test_size_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=10):
- with self.assertRaisesMessage(RequestDataTooBig, TOO_MUCH_DATA_MSG):
- self.request._load_post_and_files()
-
- def test_size_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=11):
- self.request._load_post_and_files()
-
- def test_no_limit(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=None):
- self.request._load_post_and_files()
-
- def test_file_passes(self):
- payload = FakePayload(
- "\r\n".join(
- [
- "--boundary",
- 'Content-Disposition: form-data; name="file1"; '
- 'filename="test.file"',
- "",
- "value",
- "--boundary--",
- ]
- )
- )
- request = WSGIRequest(
- {
- "REQUEST_METHOD": "POST",
- "CONTENT_TYPE": "multipart/form-data; boundary=boundary",
- "CONTENT_LENGTH": len(payload),
- "wsgi.input": payload,
- }
- )
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=1):
- request._load_post_and_files()
- self.assertIn("file1", request.FILES, "Upload file not present")
-
-
-class DataUploadMaxMemorySizeGetTests(SimpleTestCase):
- def setUp(self):
- self.request = WSGIRequest(
- {
- "REQUEST_METHOD": "GET",
- "wsgi.input": BytesIO(b""),
- "CONTENT_LENGTH": 3,
- }
- )
-
- def test_data_upload_max_memory_size_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=2):
- with self.assertRaisesMessage(RequestDataTooBig, TOO_MUCH_DATA_MSG):
- self.request.body
-
- def test_size_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=3):
- self.request.body
-
- def test_no_limit(self):
- with self.settings(DATA_UPLOAD_MAX_MEMORY_SIZE=None):
- self.request.body
-
- def test_empty_content_length(self):
- self.request.environ["CONTENT_LENGTH"] = ""
- self.request.body
-
-
-class DataUploadMaxNumberOfFieldsGet(SimpleTestCase):
- def test_get_max_fields_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=1):
- with self.assertRaisesMessage(TooManyFieldsSent, TOO_MANY_FIELDS_MSG):
- request = WSGIRequest(
- {
- "REQUEST_METHOD": "GET",
- "wsgi.input": BytesIO(b""),
- "QUERY_STRING": "a=1&a=2&a=3",
- }
- )
- request.GET["a"]
-
- def test_get_max_fields_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=3):
- request = WSGIRequest(
- {
- "REQUEST_METHOD": "GET",
- "wsgi.input": BytesIO(b""),
- "QUERY_STRING": "a=1&a=2&a=3",
- }
- )
- request.GET["a"]
-
-
-class DataUploadMaxNumberOfFieldsMultipartPost(SimpleTestCase):
- def setUp(self):
- payload = FakePayload(
- "\r\n".join(
- [
- "--boundary",
- 'Content-Disposition: form-data; name="name1"',
- "",
- "value1",
- "--boundary",
- 'Content-Disposition: form-data; name="name2"',
- "",
- "value2",
- "--boundary--",
- ]
- )
- )
- self.request = WSGIRequest(
- {
- "REQUEST_METHOD": "POST",
- "CONTENT_TYPE": "multipart/form-data; boundary=boundary",
- "CONTENT_LENGTH": len(payload),
- "wsgi.input": payload,
- }
- )
-
- def test_number_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=1):
- with self.assertRaisesMessage(TooManyFieldsSent, TOO_MANY_FIELDS_MSG):
- self.request._load_post_and_files()
-
- def test_number_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=2):
- self.request._load_post_and_files()
-
- def test_no_limit(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=None):
- self.request._load_post_and_files()
-
-
-class DataUploadMaxNumberOfFieldsFormPost(SimpleTestCase):
- def setUp(self):
- payload = FakePayload("\r\n".join(["a=1&a=2&a=3", ""]))
- self.request = WSGIRequest(
- {
- "REQUEST_METHOD": "POST",
- "CONTENT_TYPE": "application/x-www-form-urlencoded",
- "CONTENT_LENGTH": len(payload),
- "wsgi.input": payload,
- }
- )
-
- def test_number_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=2):
- with self.assertRaisesMessage(TooManyFieldsSent, TOO_MANY_FIELDS_MSG):
- self.request._load_post_and_files()
-
- def test_number_not_exceeded(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=3):
- self.request._load_post_and_files()
-
- def test_no_limit(self):
- with self.settings(DATA_UPLOAD_MAX_NUMBER_FIELDS=None):
- self.request._load_post_and_files()