Browse files

Fixed #7143 -- Modified the test client to better match (most) real b…

…rowser behavior when uploading files. Now, only the file name is sent, rather than the full path. Thanks for the report, cpinto.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7577 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent d234e92 commit 46cd8bb5b6c937969ca281f124307013454f5c15 @freakboy3742 freakboy3742 committed Jun 6, 2008
Showing with 8 additions and 1 deletion.
  1. +2 −1 django/test/client.py
  2. +6 −0 tests/regressiontests/test_client_regress/views.py
View
3 django/test/client.py
@@ -1,5 +1,6 @@
import urllib
import sys
+import os
from cStringIO import StringIO
from django.conf import settings
from django.contrib.auth import authenticate, login
@@ -67,7 +68,7 @@ def encode_multipart(boundary, data):
if isinstance(value, file):
lines.extend([
'--' + boundary,
- 'Content-Disposition: form-data; name="%s"; filename="%s"' % (to_str(key), to_str(value.name)),
+ 'Content-Disposition: form-data; name="%s"; filename="%s"' % (to_str(key), to_str(os.path.basename(value.name))),
'Content-Type: application/octet-stream',
'',
value.read()
View
6 tests/regressiontests/test_client_regress/views.py
@@ -1,3 +1,5 @@
+import os
+
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseServerError
@@ -13,6 +15,10 @@ def file_upload_view(request):
form_data = request.POST.copy()
form_data.update(request.FILES)
if isinstance(form_data['file_field'], dict) and isinstance(form_data['name'], unicode):
+ # If a file is posted, the dummy client should only post the file name,
+ # not the full path.
+ if os.path.dirname(form_data['file_field']['filename']) != '':
+ return HttpResponseServerError()
return HttpResponse('')
else:
return HttpResponseServerError()

0 comments on commit 46cd8bb

Please sign in to comment.