diff options
| author | Tom Christie | 2014-12-02 13:52:46 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-12-02 13:52:46 +0000 | 
| commit | 0359e9250d34e18aef2db6216f24c130a4f51fce (patch) | |
| tree | 9c78dbb87ec129ec21494a769afa587a76fa8899 /tests/test_parsers.py | |
| parent | e30e3f6dfc8cdb47c1048bbe497599d250d7bf75 (diff) | |
| download | django-rest-framework-0359e9250d34e18aef2db6216f24c130a4f51fce.tar.bz2 | |
FileUploadParser. Raising StopFutureHandlers removes any handlers not yet run for the active set. Closes #2109.
Diffstat (limited to 'tests/test_parsers.py')
| -rw-r--r-- | tests/test_parsers.py | 32 | 
1 files changed, 30 insertions, 2 deletions
| diff --git a/tests/test_parsers.py b/tests/test_parsers.py index 3f2672df..88eccef3 100644 --- a/tests/test_parsers.py +++ b/tests/test_parsers.py @@ -1,12 +1,13 @@  # -*- coding: utf-8 -*-  from __future__ import unicode_literals -from rest_framework.compat import StringIO  from django import forms  from django.core.files.uploadhandler import MemoryFileUploadHandler  from django.test import TestCase  from django.utils import unittest  from rest_framework.compat import etree +from rest_framework.compat import StringIO +from rest_framework.exceptions import ParseError  from rest_framework.parsers import FormParser, FileUploadParser  from rest_framework.parsers import XMLParser  import datetime @@ -104,13 +105,40 @@ class TestFileUploadParser(TestCase):          self.parser_context = {'request': request, 'kwargs': {}}      def test_parse(self): -        """ Make sure the `QueryDict` works OK """ +        """ +        Parse raw file upload. +        """          parser = FileUploadParser()          self.stream.seek(0)          data_and_files = parser.parse(self.stream, None, self.parser_context)          file_obj = data_and_files.files['file']          self.assertEqual(file_obj._size, 14) +    def test_parse_missing_filename(self): +        """ +        Parse raw file upload when filename is missing. +        """ +        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. +        Regression test for #2109. +        """ +        parser = FileUploadParser() +        self.stream.seek(0) +        self.parser_context['request'].upload_handlers = ( +            MemoryFileUploadHandler(), +            MemoryFileUploadHandler() +        ) +        self.parser_context['request'].META['HTTP_CONTENT_DISPOSITION'] = '' +        with self.assertRaises(ParseError): +            parser.parse(self.stream, None, self.parser_context) +      def test_get_filename(self):          parser = FileUploadParser()          filename = parser.get_filename(self.stream, None, self.parser_context) | 
