1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3# 4# Copyright 2014 Google Inc. All Rights Reserved. 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17 18"""Discovery document cache tests.""" 19 20import datetime 21import unittest2 as unittest 22 23import mock 24 25from googleapiclient.discovery_cache import DISCOVERY_DOC_MAX_AGE 26from googleapiclient.discovery_cache.base import Cache 27 28try: 29 from googleapiclient.discovery_cache.file_cache import Cache as FileCache 30except ImportError: 31 FileCache = None 32 33 34@unittest.skipIf(FileCache is None, 'FileCache unavailable.') 35class FileCacheTest(unittest.TestCase): 36 @mock.patch('googleapiclient.discovery_cache.file_cache.FILENAME', 37 new='google-api-python-client-discovery-doc-tests.cache') 38 def test_expiration(self): 39 def future_now(): 40 return datetime.datetime.now() + datetime.timedelta( 41 seconds=DISCOVERY_DOC_MAX_AGE) 42 mocked_datetime = mock.MagicMock() 43 mocked_datetime.datetime.now.side_effect = future_now 44 cache = FileCache(max_age=DISCOVERY_DOC_MAX_AGE) 45 first_url = 'url-1' 46 first_url_content = 'url-1-content' 47 cache.set(first_url, first_url_content) 48 49 # Make sure the content is cached. 50 self.assertEqual(first_url_content, cache.get(first_url)) 51 52 # Simulate another `set` call in the future date. 53 with mock.patch('googleapiclient.discovery_cache.file_cache.datetime', 54 new=mocked_datetime): 55 cache.set('url-2', 'url-2-content') 56 57 # Make sure the content is expired 58 self.assertEqual(None, cache.get(first_url)) 59