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.
6 from copy
import deepcopy
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
16 class HostFileSystemProviderTest(unittest
.TestCase
):
18 self
._idle
_path
= CHROME_API
+ 'idle.json'
19 self
._canned
_data
= deepcopy(CANNED_API_FILE_SYSTEM_DATA
)
21 def _constructor_for_test(self
, branch
, **optargs
):
22 return TestFileSystem(self
._canned
_data
[branch
])
24 def testWithCaching(self
):
25 creator
= HostFileSystemProvider(
26 ObjectStoreCreator
.ForTest(),
27 constructor_for_test
=self
._constructor
_for
_test
)
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()
35 self
.assertEqual(first_read
, second_read
)
37 def testWithOffline(self
):
38 creator
= HostFileSystemProvider(
39 ObjectStoreCreator
.ForTest(),
41 constructor_for_test
=self
._constructor
_for
_test
)
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
)
47 if __name__
== '__main__':