summaryrefslogtreecommitdiff
path: root/tests/servers
diff options
context:
space:
mode:
authorKonstantin Alekseev <mail@kalekseev.com>2018-12-06 18:08:01 +0300
committerCarlton Gibson <carlton.gibson@noumenal.es>2018-12-19 11:27:08 +0100
commitb514dc14f4e1c364341f5931b354e83ef15ee12d (patch)
treeb67ab081db929f87b83dec0a234861f79dc7be30 /tests/servers
parent1939dd49d142b65fa22eb5f85cee0d20864d3730 (diff)
downloaddjango-b514dc14f4e1c364341f5931b354e83ef15ee12d.tar.gz
Fixed #30015 -- Ensured request body is properly consumed for keep-alive connections.
Diffstat (limited to 'tests/servers')
-rw-r--r--tests/servers/tests.py17
-rw-r--r--tests/servers/urls.py1
-rw-r--r--tests/servers/views.py6
3 files changed, 24 insertions, 0 deletions
diff --git a/tests/servers/tests.py b/tests/servers/tests.py
index e38cb5eb07..5917e30d24 100644
--- a/tests/servers/tests.py
+++ b/tests/servers/tests.py
@@ -111,6 +111,23 @@ class LiveServerViews(LiveServerBase):
finally:
conn.close()
+ def test_keep_alive_connection_clears_previous_request_data(self):
+ conn = HTTPConnection(LiveServerViews.server_thread.host, LiveServerViews.server_thread.port)
+ try:
+ conn.request('POST', '/method_view/', b'{}', headers={"Connection": "keep-alive"})
+ response = conn.getresponse()
+ self.assertFalse(response.will_close)
+ self.assertEqual(response.status, 200)
+ self.assertEqual(response.read(), b'POST')
+
+ conn.request('POST', '/method_view/', b'{}', headers={"Connection": "close"})
+ response = conn.getresponse()
+ self.assertFalse(response.will_close)
+ self.assertEqual(response.status, 200)
+ self.assertEqual(response.read(), b'POST')
+ finally:
+ conn.close()
+
def test_404(self):
with self.assertRaises(HTTPError) as err:
self.urlopen('/')
diff --git a/tests/servers/urls.py b/tests/servers/urls.py
index 9017161808..0a8a2984aa 100644
--- a/tests/servers/urls.py
+++ b/tests/servers/urls.py
@@ -11,4 +11,5 @@ urlpatterns = [
url(r'^subview_calling_view/$', views.subview_calling_view),
url(r'^subview/$', views.subview),
url(r'^check_model_instance_from_subview/$', views.check_model_instance_from_subview),
+ url(r'^method_view/$', views.method_view),
]
diff --git a/tests/servers/views.py b/tests/servers/views.py
index 078be67f46..1db56f44a3 100644
--- a/tests/servers/views.py
+++ b/tests/servers/views.py
@@ -1,6 +1,7 @@
from urllib.request import urlopen
from django.http import HttpResponse, StreamingHttpResponse
+from django.views.decorators.csrf import csrf_exempt
from .models import Person
@@ -42,3 +43,8 @@ def check_model_instance_from_subview(request):
pass
with urlopen(request.GET['url'] + '/model_view/') as response:
return HttpResponse('subview calling view: {}'.format(response.read().decode()))
+
+
+@csrf_exempt
+def method_view(request):
+ return HttpResponse(request.method)