platform_bundle_test.py revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright 2014 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 unittest 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from extensions_paths import CHROME_API, CHROME_EXTENSIONS 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from mock_file_system import MockFileSystem 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from server_instance import ServerInstance 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from test_file_system import TestFileSystem 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from test_util import ReadFile 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_TEST_DATA = { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'api': { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'devtools': { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'inspected_window.json': ReadFile( 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROME_API, 'devtools', 'inspected_window.json'), 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '_api_features.json': json.dumps({ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms': {}, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app': {'extension_types': ['platform_app']}, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime': {'noparent': True}, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime.foo': {'extension_types': ['extension']}, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'declarativeWebRequest': {'extension_types': ['extension']}, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'devtools.inspectedWindow': {'extension_types': ['extension']}, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input': {'extension_types': 'all'}, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input.ime': {'extension_types': ['extension', 'platform_app']}, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'storage': {'extension_types': ['extension']}, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }), 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '_manifest_features.json': '{}', 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '_permission_features.json': '{}', 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms.idl': ReadFile(CHROME_API, 'alarms.idl'), 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input_ime.json': ReadFile(CHROME_API, 'input_ime.json'), 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'page_action.json': ReadFile(CHROME_API, 'page_action.json'), 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'docs': { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'templates': { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'json': { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'manifest.json': '{}', 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'permissions.json': '{}', 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PlatformBundleTest(unittest.TestCase): 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def setUp(self): 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock_file_system = MockFileSystem( 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestFileSystem(_TEST_DATA, relative_to=CHROME_EXTENSIONS)) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_instance = ServerInstance.ForTest(file_system=mock_file_system) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self._platform_bundle = server_instance.platform_bundle 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testGetters(self): 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual([ 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms', 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime', 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'declarativeWebRequest', 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'devtools.inspectedWindow', 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input', 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'storage' 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ], sorted(self._platform_bundle.GetAPIModels('extensions').GetNames())) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual([ 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms', 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app', 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime', 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input' 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ], sorted(self._platform_bundle.GetAPIModels('apps').GetNames())) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual({ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime': { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'app.runtime', 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'noparent': True, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable' 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'declarativeWebRequest': { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'declarativeWebRequest', 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension'], 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime.foo': { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'app.runtime.foo', 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension'], 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'storage': { 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'storage', 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension'], 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input.ime': { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'input.ime', 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension', 'platform_app'], 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms': { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'alarms', 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable' 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input': { 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'input', 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': 'all' 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'devtools.inspectedWindow': { 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'devtools.inspectedWindow', 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension'], 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, self._platform_bundle.GetFeaturesBundle( 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extensions').GetAPIFeatures().Get()) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual({ 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app.runtime': { 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'app.runtime', 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'noparent': True, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable' 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input': { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'input', 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': 'all' 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'input.ime': { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'input.ime', 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['extension', 'platform_app'], 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'app': { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'app', 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable', 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'extension_types': ['platform_app'], 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'alarms': { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'name': 'alarms', 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'channel': 'stable' 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, self._platform_bundle.GetFeaturesBundle('apps').GetAPIFeatures().Get()) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check that 'app' is resolved successfully in apps, but is None otherwise. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertNotEqual( 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) None, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self._platform_bundle.GetReferenceResolver('apps').GetLink('app')) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEqual( 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) None, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self._platform_bundle.GetReferenceResolver('extensions').GetLink('app')) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unittest.main() 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)