summaryrefslogtreecommitdiff
path: root/tests/middleware
diff options
context:
space:
mode:
authorKevin Christopher Henry <k@severian.com>2016-10-13 00:31:48 -0400
committerTim Graham <timograham@gmail.com>2016-10-17 16:11:53 -0400
commit2327fad54e334119f2561ddddf52e5af4bb14d41 (patch)
tree2184a9d21428c98ca099430eb7850670bb652509 /tests/middleware
parenta4e9e834e3dfc8d5a024a78c765f193105d41a48 (diff)
downloaddjango-2327fad54e334119f2561ddddf52e5af4bb14d41.tar.gz
Fixed #27344 -- Made ConditionalGetMiddleware only process GET requests.
Diffstat (limited to 'tests/middleware')
-rw-r--r--tests/middleware/tests.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index 7adf4b3a77..680354e956 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -629,6 +629,31 @@ class ConditionalGetMiddlewareTest(SimpleTestCase):
self.assertEqual(new_response.cookies, self.resp.cookies)
self.assertNotIn('Content-Language', new_response)
+ def test_no_unsafe(self):
+ """
+ ConditionalGetMiddleware shouldn't return a conditional response on an
+ unsafe request. A response has already been generated by the time
+ ConditionalGetMiddleware is called, so it's too late to return a 412
+ Precondition Failed.
+ """
+ get_response = ConditionalGetMiddleware().process_response(self.req, self.resp)
+ etag = get_response['ETag']
+ put_request = RequestFactory().put('/', HTTP_IF_MATCH=etag)
+ put_response = HttpResponse(status=200)
+ conditional_get_response = ConditionalGetMiddleware().process_response(put_request, put_response)
+ self.assertEqual(conditional_get_response.status_code, 200) # should never be a 412
+
+ def test_no_head(self):
+ """
+ ConditionalGetMiddleware shouldn't compute and return an ETag on a
+ HEAD request since it can't do so accurately without access to the
+ response body of the corresponding GET.
+ """
+ request = RequestFactory().head('/')
+ response = HttpResponse(status=200)
+ conditional_get_response = ConditionalGetMiddleware().process_response(request, response)
+ self.assertNotIn('ETag', conditional_get_response)
+
class XFrameOptionsMiddlewareTest(SimpleTestCase):
"""