def test_no_if_none_match_and_etag(self): self.resp['ETag'] = 'eggs' self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertEqual(self.resp.status_code, 200)
def test_if_none_match_and_same_etag(self): self.req.META['HTTP_IF_NONE_MATCH'] = self.resp['ETag'] = 'spam' self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertEqual(self.resp.status_code, 304)
def test_content_length_header_not_added(self): resp = StreamingHttpResponse('content') self.assertNotIn('Content-Length', resp) resp = ConditionalGetMiddleware().process_response(self.req, resp) self.assertNotIn('Content-Length', resp)
def test_content_length_header_not_changed(self): bad_content_length = len(self.resp.content) + 10 self.resp['Content-Length'] = bad_content_length self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertEqual(int(self.resp['Content-Length']), bad_content_length)
def test_date_header_added(self): self.assertNotIn('Date', self.resp) self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertIn('Date', self.resp)
def test_content_length_header_added(self): content_length = len(self.resp.content) self.assertNotIn('Content-Length', self.resp) self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertIn('Content-Length', self.resp) self.assertEqual(int(self.resp['Content-Length']), content_length)
def test_if_modified_since_and_no_last_modified(self): self.req.META[ 'HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT' self.resp = ConditionalGetMiddleware().process_response( self.req, self.resp) self.assertEqual(self.resp.status_code, 200)
def test_no_if_modified_since_and_last_modified(self): self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:38:44 GMT' self.resp = ConditionalGetMiddleware().process_response( self.req, self.resp) self.assertEqual(self.resp.status_code, 200)
def test_no_etag_no_store_cache(self): self.resp['Cache-Control'] = 'No-Cache, No-Store, Max-age=0' self.assertFalse(ConditionalGetMiddleware().process_response( self.req, self.resp).has_header('ETag'))
def test_etag_extended_cache_control(self): self.resp['Cache-Control'] = 'my-directive="my-no-store"' self.assertTrue(ConditionalGetMiddleware().process_response( self.req, self.resp).has_header('ETag'))
def test_no_etag_response_empty_content(self): res = HttpResponse() self.assertFalse(ConditionalGetMiddleware().process_response( self.req, res).has_header('ETag'))
def test_no_etag_streaming_response(self): res = StreamingHttpResponse(['content']) self.assertFalse(ConditionalGetMiddleware().process_response( self.req, res).has_header('ETag'))
def test_middleware_wont_overwrite_etag(self): self.resp['ETag'] = 'eggs' self.resp = ConditionalGetMiddleware().process_response( self.req, self.resp) self.assertEqual(self.resp.status_code, 200) self.assertEqual('eggs', self.resp['ETag'])
def test_middleware_calculates_etag(self): self.assertNotIn('ETag', self.resp) self.resp = ConditionalGetMiddleware().process_response( self.req, self.resp) self.assertEqual(self.resp.status_code, 200) self.assertNotEqual('', self.resp['ETag'])
def test_if_modified_since_and_client_error(self): self.req.META['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT' self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:35:44 GMT' self.resp.status_code = 400 self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp) self.assertEqual(self.resp.status_code, 400)