1 #!/usr/bin/env python 2 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 from copy import deepcopy 7 import unittest 8 9 from extensions_paths import CHROME_API 10 from file_system import FileNotFoundError 11 from host_file_system_provider import HostFileSystemProvider 12 from object_store_creator import ObjectStoreCreator 13 from test_data.canned_data import CANNED_API_FILE_SYSTEM_DATA 14 from test_file_system import TestFileSystem 15 16 class HostFileSystemProviderTest(unittest.TestCase): 17 def setUp(self): 18 self._idle_path = CHROME_API + 'idle.json' 19 self._canned_data = deepcopy(CANNED_API_FILE_SYSTEM_DATA) 20 21 def _constructor_for_test(self, branch, **optargs): 22 return TestFileSystem(self._canned_data[branch]) 23 24 def testWithCaching(self): 25 creator = HostFileSystemProvider( 26 ObjectStoreCreator.ForTest(), 27 constructor_for_test=self._constructor_for_test) 28 29 fs = creator.GetBranch('1500') 30 first_read = fs.ReadSingle(self._idle_path).Get() 31 self._canned_data['1500']['chrome']['common']['extensions'].get('api' 32 )['idle.json'] = 'blah blah blah' 33 second_read = fs.ReadSingle(self._idle_path).Get() 34 35 self.assertEqual(first_read, second_read) 36 37 def testWithOffline(self): 38 creator = HostFileSystemProvider( 39 ObjectStoreCreator.ForTest(), 40 offline=True, 41 constructor_for_test=self._constructor_for_test) 42 43 fs = creator.GetBranch('1500') 44 # Offline file system should raise a FileNotFoundError if read is attempted. 45 self.assertRaises(FileNotFoundError, fs.ReadSingle(self._idle_path).Get) 46 47 if __name__ == '__main__': 48 unittest.main() 49