def test_httpRequest(self): clock = Clock() rco = ResponseCacheOptions( cacheTime=3600, httpCachePublic=False, httpsCachePublic=True) request = DummyRequest([]) setCachingHeadersOnRequest(request, rco, getTime=lambda: clock.seconds()) self.assertEqual({ 'Cache-Control': ['max-age=3600, private'], 'Date': ['Thu, 01 Jan 1970 00:00:00 GMT'], 'Expires': ['Thu, 01 Jan 1970 01:00:00 GMT']}, dict(request.responseHeaders.getAllRawHeaders()))
def test_noCache(self): """ If C{cacheTime} is 0, appropriate headers are set. """ clock = Clock() # Even though these are both public=True, it correctly sets ", private". rco = ResponseCacheOptions( cacheTime=0, httpCachePublic=True, httpsCachePublic=True) request = DummyRequest([]) setCachingHeadersOnRequest(request, rco, getTime=lambda: clock.seconds()) self.assertEqual({ 'Cache-Control': ['max-age=0, private'], # A Date header is set even in this case. 'Date': ['Thu, 01 Jan 1970 00:00:00 GMT'], 'Expires': ['-1']}, dict(request.responseHeaders.getAllRawHeaders()))
def test_requestAlreadyHasHeaders(self): """ If the request passed to L{setCachingHeadersOnRequest} already has headers, existing Date/Expires/Cache-Control headers are replaced, and irrelevant ones are kept. """ clock = Clock() rco = ResponseCacheOptions( cacheTime=3600, httpCachePublic=False, httpsCachePublic=True) request = DummyRequest([]) request.responseHeaders.setRawHeaders('cache-control', ['X', 'Y']) request.responseHeaders.setRawHeaders('date', ['whenever']) request.responseHeaders.setRawHeaders('expires', ['sometime']) request.responseHeaders.setRawHeaders('extra', ['one', 'two']) setCachingHeadersOnRequest(request, rco, getTime=lambda: clock.seconds()) self.assertEqual({ 'Cache-Control': ['max-age=3600, private'], 'Date': ['Thu, 01 Jan 1970 00:00:00 GMT'], 'Expires': ['Thu, 01 Jan 1970 01:00:00 GMT'], 'Extra': ['one', 'two']}, dict(request.responseHeaders.getAllRawHeaders()))