diff options
author | Thomas Tanner <tanner@gmx.net> | 2014-12-20 22:14:46 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2014-12-24 12:33:57 -0500 |
commit | b27db97b236569d059fa824c3078e06adf8b4fae (patch) | |
tree | 3f702d1a043aaa42096d4968651d2939f0143dd6 /tests/conditional_processing | |
parent | fae551d765bc24103ce1b9782aa264246abfa2b8 (diff) | |
download | django-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.py | 60 |
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/') |