diff options
| author | Tom Christie | 2013-05-07 05:09:09 -0700 | 
|---|---|---|
| committer | Tom Christie | 2013-05-07 05:09:09 -0700 | 
| commit | 642970a1b8e6ebadbbfc9da4d75fad1ec5da6747 (patch) | |
| tree | 42f0654be36b606f41dbad5259e7b534f0aa350b /rest_framework/tests | |
| parent | 5356af8651fccacf5524add33569dd84d9e78646 (diff) | |
| parent | 5faaba9c691851ec68e385cc87d6bce82e4d4853 (diff) | |
| download | django-rest-framework-642970a1b8e6ebadbbfc9da4d75fad1ec5da6747.tar.bz2 | |
Merge pull request #806 from wronglink/master
Added FileUploadParser
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/parsers.py | 33 | 
1 files changed, 32 insertions, 1 deletions
diff --git a/rest_framework/tests/parsers.py b/rest_framework/tests/parsers.py index 539c5b44..7699e10c 100644 --- a/rest_framework/tests/parsers.py +++ b/rest_framework/tests/parsers.py @@ -1,10 +1,11 @@  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.parsers import FormParser +from rest_framework.parsers import FormParser, FileUploadParser  from rest_framework.parsers import XMLParser  import datetime @@ -82,3 +83,33 @@ class TestXMLParser(TestCase):          parser = XMLParser()          data = parser.parse(self._complex_data_input)          self.assertEqual(data, self._complex_data) + + +class TestFileUploadParser(TestCase): +    def setUp(self): +        class MockRequest(object): +            pass +        from io import BytesIO +        self.stream = BytesIO( +            "Test text file".encode('utf-8') +        ) +        request = MockRequest() +        request.upload_handlers = (MemoryFileUploadHandler(),) +        request.META = { +            'HTTP_CONTENT_DISPOSITION': 'Content-Disposition: inline; filename=file.txt'.encode('utf-8'), +            'HTTP_CONTENT_LENGTH': 14, +        } +        self.parser_context = {'request': request, 'kwargs': {}} + +    def test_parse(self): +        """ Make sure the `QueryDict` works OK """ +        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_get_filename(self): +        parser = FileUploadParser() +        filename = parser.get_filename(self.stream, None, self.parser_context) +        self.assertEqual(filename, 'file.txt'.encode('utf-8'))  | 
