summaryrefslogtreecommitdiff
path: root/tests/conditional_processing
diff options
context:
space:
mode:
authorThomas Tanner <tanner@gmx.net>2014-12-20 22:14:46 +0100
committerTim Graham <timograham@gmail.com>2014-12-24 12:33:57 -0500
commitb27db97b236569d059fa824c3078e06adf8b4fae (patch)
tree3f702d1a043aaa42096d4968651d2939f0143dd6 /tests/conditional_processing
parentfae551d765bc24103ce1b9782aa264246abfa2b8 (diff)
downloaddjango-b27db97b236569d059fa824c3078e06adf8b4fae.tar.gz
Fixed #22461 -- Added if-unmodified-since support to the condition decorator.
Diffstat (limited to 'tests/conditional_processing')
-rw-r--r--tests/conditional_processing/tests.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/conditional_processing/tests.py b/tests/conditional_processing/tests.py
index 72dd1dd48c..f679996efd 100644
--- a/tests/conditional_processing/tests.py
+++ b/tests/conditional_processing/tests.py
@@ -49,6 +49,20 @@ class ConditionalGet(TestCase):
response = self.client.get('/condition/')
self.assertFullResponse(response)
+ def test_if_unmodified_since(self):
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_STR
+ response = self.client.get('/condition/')
+ self.assertFullResponse(response)
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_NEWER_STR
+ response = self.client.get('/condition/')
+ self.assertFullResponse(response)
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_INVALID_STR
+ response = self.client.get('/condition/')
+ self.assertFullResponse(response)
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ response = self.client.get('/condition/')
+ self.assertEqual(response.status_code, 412)
+
def test_if_none_match(self):
self.client.defaults['HTTP_IF_NONE_MATCH'] = '"%s"' % ETAG
response = self.client.get('/condition/')
@@ -71,6 +85,7 @@ class ConditionalGet(TestCase):
self.assertEqual(response.status_code, 412)
def test_both_headers(self):
+ # see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.4
self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR
self.client.defaults['HTTP_IF_NONE_MATCH'] = '"%s"' % ETAG
response = self.client.get('/condition/')
@@ -86,6 +101,32 @@ class ConditionalGet(TestCase):
response = self.client.get('/condition/')
self.assertFullResponse(response)
+ self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ self.client.defaults['HTTP_IF_NONE_MATCH'] = '"%s"' % EXPIRED_ETAG
+ response = self.client.get('/condition/')
+ self.assertFullResponse(response)
+
+ def test_both_headers_2(self):
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_STR
+ self.client.defaults['HTTP_IF_MATCH'] = '"%s"' % ETAG
+ response = self.client.get('/condition/')
+ self.assertFullResponse(response)
+
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ self.client.defaults['HTTP_IF_MATCH'] = '"%s"' % EXPIRED_ETAG
+ response = self.client.get('/condition/')
+ self.assertEqual(response.status_code, 412)
+
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_STR
+ self.client.defaults['HTTP_IF_MATCH'] = '"%s"' % EXPIRED_ETAG
+ response = self.client.get('/condition/')
+ self.assertEqual(response.status_code, 412)
+
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ self.client.defaults['HTTP_IF_MATCH'] = '"%s"' % ETAG
+ response = self.client.get('/condition/')
+ self.assertEqual(response.status_code, 412)
+
def test_single_condition_1(self):
self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR
response = self.client.get('/condition/last_modified/')
@@ -124,6 +165,25 @@ class ConditionalGet(TestCase):
response = self.client.get('/condition/last_modified2/')
self.assertFullResponse(response, check_etag=False)
+ def test_single_condition_7(self):
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ response = self.client.get('/condition/last_modified/')
+ self.assertEqual(response.status_code, 412)
+ response = self.client.get('/condition/etag/')
+ self.assertFullResponse(response, check_last_modified=False)
+
+ def test_single_condition_8(self):
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = LAST_MODIFIED_STR
+ response = self.client.get('/condition/last_modified/')
+ self.assertFullResponse(response, check_etag=False)
+
+ def test_single_condition_9(self):
+ self.client.defaults['HTTP_IF_UNMODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR
+ response = self.client.get('/condition/last_modified2/')
+ self.assertEqual(response.status_code, 412)
+ response = self.client.get('/condition/etag2/')
+ self.assertFullResponse(response, check_last_modified=False)
+
def test_single_condition_head(self):
self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR
response = self.client.head('/condition/')