Loading django/core/handlers/wsgi.py +1 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ class WSGIHandler(base.BaseHandler): response._handler_class = self.__class__ status = '%s %s' % (response.status_code, response.reason_phrase) status = '%d %s' % (response.status_code, response.reason_phrase) response_headers = [(str(k), str(v)) for k, v in response.items()] for c in response.cookies.values(): response_headers.append((str('Set-Cookie'), str(c.output(header='')))) Loading tests/handlers/tests.py +17 −5 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ from __future__ import unicode_literals import unittest from django.core.handlers.wsgi import WSGIHandler, WSGIRequest, get_script_name from django.core.signals import request_finished, request_started from django.db import close_old_connections, connection Loading @@ -11,6 +13,11 @@ from django.test import ( from django.utils import six from django.utils.encoding import force_str try: from http import HTTPStatus except ImportError: # Python < 3.5 HTTPStatus = None class HandlerTests(SimpleTestCase): Loading Loading @@ -160,16 +167,12 @@ class SignalsTests(SimpleTestCase): @override_settings(ROOT_URLCONF='handlers.urls') class HandlerSuspiciousOpsTest(SimpleTestCase): class HandlerRequestTests(SimpleTestCase): def test_suspiciousop_in_view_returns_400(self): response = self.client.get('/suspicious/') self.assertEqual(response.status_code, 400) @override_settings(ROOT_URLCONF='handlers.urls') class HandlerNotFoundTest(SimpleTestCase): def test_invalid_urls(self): response = self.client.get('~%A9helloworld') self.assertContains(response, '~%A9helloworld', status_code=404) Loading @@ -187,6 +190,15 @@ class HandlerNotFoundTest(SimpleTestCase): environ = RequestFactory().get('/%E2%A8%87%87%A5%E2%A8%A0').environ self.assertIsInstance(environ['PATH_INFO'], six.text_type) @unittest.skipIf(HTTPStatus is None, 'HTTPStatus only exists on Python 3.5+') def test_handle_accepts_httpstatus_enum_value(self): def start_response(status, headers): start_response.status = status environ = RequestFactory().get('/httpstatus_enum/').environ WSGIHandler()(environ, start_response) self.assertEqual(start_response.status, '200 OK') class ScriptNameTests(SimpleTestCase): def test_get_script_name(self): Loading tests/handlers/urls.py +1 −0 Original line number Diff line number Diff line Loading @@ -11,4 +11,5 @@ urlpatterns = [ url(r'^not_in_transaction/$', views.not_in_transaction), url(r'^suspicious/$', views.suspicious), url(r'^malformed_post/$', views.malformed_post), url(r'^httpstatus_enum/$', views.httpstatus_enum), ] tests/handlers/views.py +9 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,11 @@ from django.db import connection, transaction from django.http import HttpResponse, StreamingHttpResponse from django.views.decorators.csrf import csrf_exempt try: from http import HTTPStatus except ImportError: # Python < 3.5 pass def regular(request): return HttpResponse(b"regular content") Loading @@ -31,3 +36,7 @@ def suspicious(request): def malformed_post(request): request.POST return HttpResponse() def httpstatus_enum(request): return HttpResponse(status=HTTPStatus.OK) Loading
django/core/handlers/wsgi.py +1 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ class WSGIHandler(base.BaseHandler): response._handler_class = self.__class__ status = '%s %s' % (response.status_code, response.reason_phrase) status = '%d %s' % (response.status_code, response.reason_phrase) response_headers = [(str(k), str(v)) for k, v in response.items()] for c in response.cookies.values(): response_headers.append((str('Set-Cookie'), str(c.output(header='')))) Loading
tests/handlers/tests.py +17 −5 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ from __future__ import unicode_literals import unittest from django.core.handlers.wsgi import WSGIHandler, WSGIRequest, get_script_name from django.core.signals import request_finished, request_started from django.db import close_old_connections, connection Loading @@ -11,6 +13,11 @@ from django.test import ( from django.utils import six from django.utils.encoding import force_str try: from http import HTTPStatus except ImportError: # Python < 3.5 HTTPStatus = None class HandlerTests(SimpleTestCase): Loading Loading @@ -160,16 +167,12 @@ class SignalsTests(SimpleTestCase): @override_settings(ROOT_URLCONF='handlers.urls') class HandlerSuspiciousOpsTest(SimpleTestCase): class HandlerRequestTests(SimpleTestCase): def test_suspiciousop_in_view_returns_400(self): response = self.client.get('/suspicious/') self.assertEqual(response.status_code, 400) @override_settings(ROOT_URLCONF='handlers.urls') class HandlerNotFoundTest(SimpleTestCase): def test_invalid_urls(self): response = self.client.get('~%A9helloworld') self.assertContains(response, '~%A9helloworld', status_code=404) Loading @@ -187,6 +190,15 @@ class HandlerNotFoundTest(SimpleTestCase): environ = RequestFactory().get('/%E2%A8%87%87%A5%E2%A8%A0').environ self.assertIsInstance(environ['PATH_INFO'], six.text_type) @unittest.skipIf(HTTPStatus is None, 'HTTPStatus only exists on Python 3.5+') def test_handle_accepts_httpstatus_enum_value(self): def start_response(status, headers): start_response.status = status environ = RequestFactory().get('/httpstatus_enum/').environ WSGIHandler()(environ, start_response) self.assertEqual(start_response.status, '200 OK') class ScriptNameTests(SimpleTestCase): def test_get_script_name(self): Loading
tests/handlers/urls.py +1 −0 Original line number Diff line number Diff line Loading @@ -11,4 +11,5 @@ urlpatterns = [ url(r'^not_in_transaction/$', views.not_in_transaction), url(r'^suspicious/$', views.suspicious), url(r'^malformed_post/$', views.malformed_post), url(r'^httpstatus_enum/$', views.httpstatus_enum), ]
tests/handlers/views.py +9 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,11 @@ from django.db import connection, transaction from django.http import HttpResponse, StreamingHttpResponse from django.views.decorators.csrf import csrf_exempt try: from http import HTTPStatus except ImportError: # Python < 3.5 pass def regular(request): return HttpResponse(b"regular content") Loading @@ -31,3 +36,7 @@ def suspicious(request): def malformed_post(request): request.POST return HttpResponse() def httpstatus_enum(request): return HttpResponse(status=HTTPStatus.OK)