host_file_system_provider_test.py revision f2477e01787aa58f445919b809d89e252beef54f
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
6from copy import deepcopy
7import unittest
8
9from caching_file_system import CachingFileSystem
10from extensions_paths import API
11from file_system import FileNotFoundError
12from host_file_system_provider import HostFileSystemProvider
13from object_store_creator import ObjectStoreCreator
14from offline_file_system import OfflineFileSystem
15from test_data.canned_data import CANNED_API_FILE_SYSTEM_DATA
16from test_file_system import TestFileSystem
17
18class HostFileSystemProviderTest(unittest.TestCase):
19  def setUp(self):
20    self._idle_path = '%s/idle.json' % API
21    self._canned_data = deepcopy(CANNED_API_FILE_SYSTEM_DATA)
22
23  def _constructor_for_test(self, branch, **optargs):
24    return TestFileSystem(self._canned_data[branch])
25
26  def testWithCaching(self):
27    creator = HostFileSystemProvider(
28        ObjectStoreCreator.ForTest(),
29        constructor_for_test=self._constructor_for_test)
30
31    fs = creator.GetBranch('1500')
32    first_read = fs.ReadSingle(self._idle_path).Get()
33    self._canned_data['1500']['chrome']['common']['extensions'].get('api'
34        )['idle.json'] = 'blah blah blah'
35    second_read = fs.ReadSingle(self._idle_path).Get()
36
37    self.assertEqual(first_read, second_read)
38
39  def testWithOffline(self):
40    creator = HostFileSystemProvider(
41        ObjectStoreCreator.ForTest(),
42        offline=True,
43        constructor_for_test=self._constructor_for_test)
44
45    fs = creator.GetBranch('1500')
46    # Offline file system should raise a FileNotFoundError if read is attempted.
47    self.assertRaises(FileNotFoundError, fs.ReadSingle(self._idle_path).Get)
48
49if __name__ == '__main__':
50  unittest.main()
51