def get_pseudo_package_list(): """ Existing pseudo packages for Debian are obtained from `BTS <http://bugs.debian.org/pseudo-packages.maintainers>`_ """ PSEUDO_PACKAGE_LIST_URL = ( 'http://bugs.debian.org/pseudo-packages.maintainers' ) cache = HttpCache(settings.PTS_CACHE_DIRECTORY) if not cache.is_expired(PSEUDO_PACKAGE_LIST_URL): return response, updated = cache.update(PSEUDO_PACKAGE_LIST_URL) try: response.raise_for_status() except requests.exceptions.HTTPError as e: raise PluginProcessingError() if not updated: return return [ line.split(None, 1)[0] for line in response.text.splitlines() ]
def test_cache_expires_header_expired(self, mock_requests): """ Tests that the cache knows that a cached response is expired based on its Expires header. """ expires = http_date(time.time() - 3600) self.set_mock_response(mock_requests, headers={ 'Expires': expires }) cache = HttpCache(self.cache_directory) url = 'http://example.com' cache.update(url) self.assertTrue(cache.is_expired(url))
def test_cache_expired(self, mock_requests): """ Tests that the cache knows when an entry with a stale Cache-Control header is expired. """ self.set_mock_response(mock_requests, headers={ 'Cache-Control': 'must-revalidate, max-age=0', }) cache = HttpCache(self.cache_directory) url = 'http://example.com' cache.update(url) self.assertTrue(url in cache) self.assertTrue(cache.is_expired(url))
def test_cache_not_expired(self, mock_requests): """ Tests that the cache knows a response is not expired based on its Cache-Control header. """ self.set_mock_response(mock_requests, headers={ 'Cache-Control': 'must-revalidate, max-age=3600', }) cache = HttpCache(self.cache_directory) url = 'http://example.com' cache.update(url) self.assertTrue(url in cache) self.assertFalse(cache.is_expired(url))