From da11d567aa3ce6ce699c355b7aea20bac2baeacd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brais=20Gab=C3=ADn?= Date: Thu, 21 Jul 2016 15:21:00 +0200 Subject: [PATCH] Test large files --- tests/test_parsers.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/test_parsers.py b/tests/test_parsers.py index 1e0f2e17f..96a71d669 100644 --- a/tests/test_parsers.py +++ b/tests/test_parsers.py @@ -3,7 +3,9 @@ from __future__ import unicode_literals from django import forms -from django.core.files.uploadhandler import MemoryFileUploadHandler +from django.core.files.uploadhandler import ( + MemoryFileUploadHandler, TemporaryFileUploadHandler +) from django.test import TestCase from django.utils.six.moves import StringIO @@ -39,7 +41,7 @@ class TestFileUploadParser(TestCase): "Test text file".encode('utf-8') ) request = MockRequest() - request.upload_handlers = (MemoryFileUploadHandler(),) + request.upload_handlers = (MemoryFileUploadHandler(), TemporaryFileUploadHandler(),) request.META = { 'HTTP_CONTENT_DISPOSITION': 'Content-Disposition: inline; filename=file.txt', 'HTTP_CONTENT_LENGTH': 14, @@ -66,6 +68,18 @@ class TestFileUploadParser(TestCase): with self.assertRaises(ParseError): parser.parse(self.stream, None, self.parser_context) + def test_parse_missing_filename_large_file(self): + """ + Parse large raw file upload when filename is missing. + """ + from django.conf import settings + self.parser_context['request'].META['HTTP_CONTENT_LENGTH'] = settings.FILE_UPLOAD_MAX_MEMORY_SIZE + 1 + parser = FileUploadParser() + self.stream.seek(0) + self.parser_context['request'].META['HTTP_CONTENT_DISPOSITION'] = '' + with self.assertRaises(ParseError): + parser.parse(self.stream, None, self.parser_context) + def test_parse_missing_filename_multiple_upload_handlers(self): """ Parse raw file upload with multiple handlers when filename is missing.