permissions_data_source_test.py revision 3551c9c881056c480085172ff9840cab31610854
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 6import json 7import unittest 8 9from compiled_file_system import CompiledFileSystem 10from object_store_creator import ObjectStoreCreator 11from permissions_data_source import PermissionsDataSource 12from test_file_system import TestFileSystem 13 14class FakeTemplateDataSource(object): 15 class Factory(): 16 def Create(self, *args): 17 return FakeTemplateDataSource() 18 def get(self, key): 19 return 'partial ' + key 20 21file_system = TestFileSystem({ 22 'permissions.json': json.dumps({ 23 'host-permissions': { 24 'name': 'match pattern', 25 'anchor': 'custom-anchor', 26 'platforms': ['app', 'extension'], 27 'partial': 'host_permissions.html', 28 'literal_name': True 29 }, 30 'activeTab': { 31 'partial': 'active_tab.html' 32 }, 33 'alarms': { 34 'partial': 'alarms.html' 35 }, 36 'audioCapture': { 37 'partial': 'audio_capture.html' 38 }, 39 'background': { 40 'partial': 'background.html' 41 } 42 }), 43 '_permission_features.json': json.dumps({ 44 'activeTab': { 45 'extension_types': ['extension', 'packaged_app'], 46 }, 47 'alarms': { 48 'extension_types': ['extension', 'packaged_app', 'platform_app'], 49 }, 50 'audioCapture': { 51 'extension_types': ['platform_app'] 52 }, 53 'background': { 54 'extension_types': ['extension', 'packaged_app', 'hosted_app'] 55 }, 56 'commandLinePrivate': { 57 'extension_types': 'all' 58 }, 59 'cookies': { 60 'extension_types': ['platform_app'] 61 } 62 }), 63 '_api_features.json': json.dumps({ 64 'cookies': { 65 'dependencies': ['permission:cookies'] 66 } 67 }) 68}) 69 70class PermissionsDataSourceTest(unittest.TestCase): 71 def testCreatePermissionsDataSource(self): 72 expected_extensions = [ 73 { 74 'name': 'activeTab', 75 'anchor': 'activeTab', 76 'platforms': ['extension'], 77 'description': 'partial active_tab.html' 78 }, 79 { 80 'name': 'alarms', 81 'anchor': 'alarms', 82 'platforms': ['app', 'extension'], 83 'description': 'partial alarms.html' 84 }, 85 { 86 'name': 'background', 87 'anchor': 'background', 88 'platforms': ['extension'], 89 'description': 'partial background.html' 90 }, 91 { 92 'name': 'match pattern', 93 'anchor': 'custom-anchor', 94 'literal_name': True, 95 'description': 'partial host_permissions.html', 96 'platforms': ['app', 'extension'] 97 } 98 ] 99 100 expected_apps = [ 101 { 102 'name': 'alarms', 103 'anchor': 'alarms', 104 'platforms': ['app', 'extension'], 105 'description': 'partial alarms.html' 106 }, 107 { 108 'name': 'audioCapture', 109 'anchor': 'audioCapture', 110 'description': 'partial audio_capture.html', 111 'platforms': ['app'] 112 }, 113 { 114 'anchor': 'cookies', 115 'name': 'cookies', 116 'description': 'partial permissions/generic_description', 117 'platforms': ['app'] 118 }, 119 { 120 'name': 'match pattern', 121 'anchor': 'custom-anchor', 122 'literal_name': True, 123 'description': 'partial host_permissions.html', 124 'platforms': ['app', 'extension'] 125 } 126 ] 127 128 permissions_data_source = PermissionsDataSource( 129 CompiledFileSystem.Factory(file_system, ObjectStoreCreator.ForTest()), 130 file_system, 131 '_api_features.json', 132 '_permission_features.json', 133 'permissions.json') 134 135 permissions_data_source.SetTemplateDataSource( 136 FakeTemplateDataSource.Factory()) 137 138 self.assertEqual( 139 expected_extensions, 140 permissions_data_source.get('declare_extensions')) 141 self.assertEqual( 142 expected_apps, 143 permissions_data_source.get('declare_apps')) 144 145if __name__ == '__main__': 146 unittest.main() 147