blob: f9b316f70d458f791c1b94084ba44966b268030b [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
import unittest
from compiled_file_system import CompiledFileSystem
from object_store_creator import ObjectStoreCreator
from permissions_data_source import PermissionsDataSource
from test_file_system import TestFileSystem
class FakeTemplateDataSource(object):
class Factory():
def Create(self, *args):
return FakeTemplateDataSource()
def get(self, key):
return 'partial ' + key
file_system = TestFileSystem({
'permissions.json': json.dumps({
'host-permissions': {
'name': 'match pattern',
'anchor': 'custom-anchor',
'platforms': ['app', 'extension'],
'partial': 'host_permissions.html',
'literal_name': True
},
'activeTab': {
'partial': 'active_tab.html'
},
'alarms': {
'partial': 'alarms.html'
},
'audioCapture': {
'partial': 'audio_capture.html'
},
'background': {
'partial': 'background.html'
}
}),
'_permission_features.json': json.dumps({
'activeTab': {
'extension_types': ['extension', 'packaged_app'],
},
'alarms': {
'extension_types': ['extension', 'packaged_app', 'platform_app'],
},
'audioCapture': {
'extension_types': ['platform_app']
},
'background': {
'extension_types': ['extension', 'packaged_app', 'hosted_app']
},
'commandLinePrivate': {
'extension_types': 'all'
},
'cookies': {
'extension_types': ['platform_app']
}
}),
'_api_features.json': json.dumps({
'cookies': {
'dependencies': ['permission:cookies']
},
'alarms': {
'dependencies': ['permission:alarms']
}
})
})
class PermissionsDataSourceTest(unittest.TestCase):
def testCreatePermissionsDataSource(self):
expected_extensions = [
{
'name': 'activeTab',
'anchor': 'activeTab',
'platforms': ['extension'],
'description': 'partial active_tab.html'
},
{
'name': 'alarms',
'anchor': 'alarms',
'platforms': ['app', 'extension'],
'description': 'partial alarms.html'
},
{
'name': 'background',
'anchor': 'background',
'platforms': ['extension'],
'description': 'partial background.html'
},
{
'name': 'match pattern',
'anchor': 'custom-anchor',
'literal_name': True,
'description': 'partial host_permissions.html',
'platforms': ['app', 'extension']
}
]
expected_apps = [
{
'name': 'alarms',
'anchor': 'alarms',
'platforms': ['app', 'extension'],
'description': 'partial alarms.html'
},
{
'name': 'audioCapture',
'anchor': 'audioCapture',
'description': 'partial audio_capture.html',
'platforms': ['app']
},
{
'anchor': 'cookies',
'name': 'cookies',
'description': 'partial permissions/generic_description',
'platforms': ['app']
},
{
'name': 'match pattern',
'anchor': 'custom-anchor',
'literal_name': True,
'description': 'partial host_permissions.html',
'platforms': ['app', 'extension']
}
]
permissions_data_source = PermissionsDataSource(
CompiledFileSystem.Factory(file_system, ObjectStoreCreator.ForTest()),
file_system,
'_api_features.json',
'_permission_features.json',
'permissions.json')
permissions_data_source.SetTemplateDataSource(
FakeTemplateDataSource.Factory())
self.assertEqual(
expected_extensions,
permissions_data_source.get('declare_extensions'))
self.assertEqual(
expected_apps,
permissions_data_source.get('declare_apps'))
if __name__ == '__main__':
unittest.main()