Fixed #27184 -- Allowed uploading TemporaryFile with the test client.

Thanks Federico Capoano for finishing the patch.
This commit is contained in:
Tom Scrace 2016-09-11 10:23:35 +01:00 committed by Tim Graham
parent f94ce0d21d
commit 5549e89b84
4 changed files with 19 additions and 1 deletions

View file

@ -22,6 +22,8 @@ rather than the HTML rendered to the end-user.
"""
from __future__ import unicode_literals
import tempfile
from django.contrib.auth.models import User
from django.core import mail
from django.http import HttpResponse
@ -714,6 +716,11 @@ class ClientTest(TestCase):
with self.assertRaisesMessage(Exception, 'exception message'):
self.client.get('/nesting_exception_view/')
def test_uploading_temp_file(self):
test_file = tempfile.TemporaryFile()
response = self.client.post('/upload_view/', data={'temp_file': test_file})
self.assertEqual(response.content, b'temp_file')
@override_settings(
MIDDLEWARE=['django.middleware.csrf.CsrfViewMiddleware'],

View file

@ -5,6 +5,7 @@ from django.views.generic import RedirectView
from . import views
urlpatterns = [
url(r'^upload_view/$', views.upload_view, name='upload_view'),
url(r'^get_view/$', views.get_view, name='get_view'),
url(r'^post_view/$', views.post_view),
url(r'^trace_view/$', views.trace_view),

View file

@ -324,3 +324,8 @@ def nesting_exception_view(request):
def django_project_redirect(request):
return HttpResponseRedirect('https://www.djangoproject.com/')
def upload_view(request):
"""Prints keys of request.FILES to the response."""
return HttpResponse(', '.join(request.FILES.keys()))