15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import json 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import os 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import unittest 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from appengine_wrappers import files 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from fake_fetchers import ConfigureFakeFetchers 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from github_file_system import GithubFileSystem 14b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)from object_store_creator import ObjectStoreCreator 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from test_util import Server2Path 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GithubFileSystemTest(unittest.TestCase): 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def setUp(self): 20b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ConfigureFakeFetchers() 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._base_path = Server2Path('test_data', 'github_file_system') 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) self._file_system = GithubFileSystem.CreateChromeAppsSamples( 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ObjectStoreCreator.ForTest()) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def _ReadLocalFile(self, filename): 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) with open(os.path.join(self._base_path, filename), 'r') as f: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return f.read() 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testList(self): 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual(json.loads(self._ReadLocalFile('expected_list.json')), 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._file_system.Read(['']).Get()) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testRead(self): 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEqual(self._ReadLocalFile('expected_read.txt'), 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._file_system.ReadSingle('analytics/launch.js').Get()) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testStat(self): 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual(0, self._file_system.Stat('zipball').version) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testKeyGeneration(self): 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual(0, len(files.GetBlobKeys())) 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._file_system.ReadSingle('analytics/launch.js').Get() 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual(1, len(files.GetBlobKeys())) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self._file_system.ReadSingle('analytics/main.css').Get() 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual(1, len(files.GetBlobKeys())) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unittest.main() 49