class BaseCacheCase(TestCase): def setUp(self): self.locmem_cache = LocMemCache('default', {}) self.locmem_cache.clear() self.patch = patch.object(decorators, 'cache', self.locmem_cache) self.patch.start() def tearDown(self): self.patch.stop()
class TestCachedTemplate(SimpleTestCase): """Test the single cached angular template tag.""" def setUp(self): """Patch in a local memory cache.""" self.locmem_cache = LocMemCache('default', {}) self.locmem_cache.clear() self.patch = mock.patch.object(angular, 'cache', self.locmem_cache) self.patch.start() def tearDown(self): """Stop the patch.""" self.patch.stop() @tag('unit') @mock.patch('web.templatetags.angular.finders.get_finders') @mock.patch( 'builtins.open', new_callable=mock.mock_open, read_data='some_data' ) def test_not_cached(self, m_file, m_get_finders): """Test behaviour of a template that is not cached.""" m_get_finders.return_value = [FakeFinder(['a'])] key = '_angular_template_a' self.assertFalse(self.locmem_cache.get(key)) html = CAT('a') expected = ( '<script type="text/ng-template" id="/static/a">' 'some_data' '</script>' ) self.assertEqual(html, expected) self.assertEqual(self.locmem_cache.get(key), expected) @tag('unit') @mock.patch('web.templatetags.angular.finders.get_finders') @mock.patch( 'builtins.open', new_callable=mock.mock_open, read_data='some_data' ) def test_cached(self, m_file, m_get_finders): """Test behavior of a template that is cached.""" m_get_finders.return_value = [FakeFinder(['a'])] key = '_angular_template_a' self.locmem_cache.add(key, 'the_data') html = CAT('a') expected = 'the_data' self.assertEqual(html, expected) self.assertEqual(self.locmem_cache.get(key), expected)
def check_code_token_throttler(rf): with freeze_time('2020-01-02 13:00:00') as frozen_datetime: cache = LocMemCache('test_cache', {}) cache.clear() throttler = get_code_token_throttler(cache) request = rf.get('/') assert inspect_cache(cache) == {} # First two requests should be allowed assert throttler.allow_request(request, None) is True assert inspect_cache(cache) == { ':1:drf_jwt_2fa-tc-SHA1(127.0.0.1)': [1577970000.0], } frozen_datetime.tick(delta=datetime.timedelta(seconds=1)) throttler = get_code_token_throttler(cache) assert throttler.allow_request(request, None) is True assert inspect_cache(cache) == { ':1:drf_jwt_2fa-tc-SHA1(127.0.0.1)': [1577970001.0, 1577970000.0], } # Third request should be throttled throttler = get_code_token_throttler(cache) frozen_datetime.tick(delta=datetime.timedelta(seconds=1)) assert throttler.allow_request(request, None) is False assert inspect_cache(cache) == { ':1:drf_jwt_2fa-tc-SHA1(127.0.0.1)': [1577970001.0, 1577970000.0], } # After 8s more, total 11s have passed and a new request should # be allowed throttler = get_code_token_throttler(cache) frozen_datetime.tick(delta=datetime.timedelta(seconds=8)) assert throttler.allow_request(request, None) is True assert inspect_cache(cache) == { ':1:drf_jwt_2fa-tc-SHA1(127.0.0.1)': [1577970010.0, 1577970001.0], }
def store(self): c = LocMemCache('test', {}) c.clear() return OptionsStore(cache=c)
class TransactionCacheTestCase(base.JohnnyTestCase): def setUp(self): self.backend = LocMemCache('', {}) self.cache = TransactionCache(self.backend) self.cache.timeout = 1000 def test_get(self): self.backend.set('a', '1') self.assertEqual(self.cache.get('a'), '1') self.assertIsNone(self.cache.get('missing')) def test_local_caching(self): self.backend.set('a', '1') self.assertEqual(self.cache.get('a'), '1') self.backend.clear() self.assertEqual(self.cache.get('a'), '1') def test_get_many_local_caching(self): self.backend.set('a', '1') self.backend.set('b', '2') self.assertEqual( self.cache.get_many(['a', 'b', 'c']), {'a': '1', 'b': '2'}, ) self.backend.clear() self.backend.set('c', '3') self.assertEqual( self.cache.get_many(['a', 'b', 'c']), {'a': '1', 'b': '2'}, ) def test_get_many_looks_up_missing(self): self.cache.get('a') with patch.object(self.backend, 'get_many') as get_many: self.cache.get_many(['a', 'b', 'c']) get_many.assert_called_with(['b', 'c']) def test_set_get(self): self.backend.set('a', '1') self.assertEqual(self.cache.get('a'), '1') self.cache.set('a', '2') self.assertEqual(self.cache.get('a'), '2') self.assertEqual(self.backend.get('a'), '1') def test_set_many(self): self.cache.set_many({'a': '1', 'b': '2'}) self.assertEqual(self.cache.get('a'), '1') self.assertEqual(self.cache.get('b'), '2') def test_delete_get(self): self.backend.set('a', '1') self.assertEqual(self.cache.get('a'), '1') self.cache.delete('a') self.assertIsNone(self.cache.get('a')) self.assertEqual(self.backend.get('a'), '1') def test_delete_many(self): self.backend.set_many({'a': '1', 'b': '2'}) self.cache.delete_many(['a', 'b']) self.assertIsNone(self.cache.get('a')) self.assertIsNone(self.cache.get('b')) def test_rollback(self): self.backend.set('a', '1') self.assertEqual(self.cache.get('a'), '1') self.backend.set('a', '2') self.assertEqual(self.cache.get('a'), '1') self.cache.rollback() self.assertEqual(self.cache.get('a'), '2') def test_commit(self): self.backend.set('a', '1') self.backend.set('b', '2') self.cache.set('a', '3') self.cache.delete('b') self.assertEqual(self.backend.get('a'), '1') self.assertEqual(self.backend.get('b'), '2') self.cache.commit() self.assertEqual(self.backend.get('a'), '3') self.assertIsNone(self.backend.get('b')) def test_rollback_savepoint(self): self.cache.set('a', '1') self.cache.savepoint('sp1') self.cache.set('a', '2') self.cache.savepoint('sp2') self.cache.set('a', '3') self.assertEqual(self.cache.get('a'), '3') self.cache.rollback_savepoint('sp2') self.assertEqual(self.cache.get('a'), '2') self.cache.rollback_savepoint('sp1') self.assertEqual(self.cache.get('a'), '1') self.assertRaises(IndexError, self.cache.rollback_savepoint, 'sp0') def test_rollback_savepoint_skip(self): self.cache.set('a', '1') self.cache.savepoint('sp1') self.cache.set('a', '2') self.cache.savepoint('sp2') self.cache.set('a', '3') self.assertEqual(self.cache.get('a'), '3') self.cache.rollback_savepoint('sp1') self.assertEqual(self.cache.get('a'), '1') self.assertRaises(IndexError, self.cache.rollback_savepoint, 'sp2') def test_rollback_savepoint_same_name(self): self.cache.set('a', '1') self.cache.savepoint('sp') self.cache.set('a', '2') self.cache.savepoint('sp') self.cache.set('a', '3') self.assertEqual(self.cache.get('a'), '3') self.cache.rollback_savepoint('sp') self.assertEqual(self.cache.get('a'), '2') self.cache.rollback_savepoint('sp') self.assertEqual(self.cache.get('a'), '1') self.assertRaises(IndexError, self.cache.rollback_savepoint, 'sp') def test_commit_savepoint(self): self.cache.set('a', '1') self.cache.savepoint('sp1') self.cache.set('a', '2') self.assertEqual(self.cache.get('a'), '2') self.cache.commit_savepoint('sp1') self.assertEqual(self.cache.get('a'), '2') self.assertRaises(IndexError, self.cache.rollback_savepoint, 'sp1') def test_commit_savepoint_same_name(self): self.cache.set('a', '1') self.cache.savepoint('sp') self.cache.set('a', '2') self.cache.savepoint('sp') self.cache.set('a', '3') self.assertEqual(self.cache.get('a'), '3') self.cache.commit_savepoint('sp') self.assertEqual(self.cache.get('a'), '3') self.cache.rollback_savepoint('sp') self.assertEqual(self.cache.get('a'), '1') self.assertRaises(IndexError, self.cache.rollback_savepoint, 'sp')
def store(self): c = LocMemCache("test", settings.CACHES["default"]) c.clear() return OptionsStore(cache=c)