blob: 842ee0922f7e0cc733c646e5b6ead4b1aa6653ad [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 server_instance import ServerInstance
from test_file_system import TestFileSystem
_TEST_FILESYSTEM = {
'api': {
'_api_features.json': json.dumps({
'audioCapture': {
'channel': 'stable',
'extension_types': ['platform_app']
},
'background': [
{
'channel': 'stable',
'extension_types': ['extension']
},
{
'channel': 'stable',
'extension_types': ['platform_app'],
'whitelist': ['im not here']
}
],
'omnibox': {
'dependencies': ['manifest:omnibox'],
'contexts': ['blessed_extension']
},
'syncFileSystem': {
'dependencies': ['permission:syncFileSystem'],
'contexts': ['blessed_extension']
},
'tabs': {
'channel': 'stable',
'extension_types': ['extension', 'legacy_packaged_app'],
'contexts': ['blessed_extension']
},
'test': {
'channel': 'stable',
'extension_types': 'all',
'contexts': [
'blessed_extension', 'unblessed_extension', 'content_script']
},
'windows': {
'dependencies': ['api:tabs'],
'contexts': ['blessed_extension']
}
}),
'_manifest_features.json': json.dumps({
'app.content_security_policy': {
'channel': 'stable',
'extension_types': ['platform_app'],
'min_manifest_version': 2,
'whitelist': ['this isnt happening']
},
'background': {
'channel': 'stable',
'extension_types': ['extension', 'legacy_packaged_app', 'hosted_app']
},
'manifest_version': {
'channel': 'stable',
'extension_types': 'all'
},
'omnibox': {
'channel': 'stable',
'extension_types': ['extension']
},
'page_action': {
'channel': 'stable',
'extension_types': ['extension']
},
'sockets': {
'channel': 'dev',
'extension_types': ['platform_app']
}
}),
'_permission_features.json': json.dumps({
'bluetooth': {
'channel': 'dev',
'extension_types': ['platform_app']
},
'power': {
'channel': 'stable',
'extension_types': [
'extension', 'legacy_packaged_app', 'platform_app'
]
},
'syncFileSystem': {
'channel': 'stable',
'extension_types': ['platform_app']
},
'tabs': {
'channel': 'stable',
'extension_types': ['extension']
}
})
},
'docs': {
'templates': {
'json': {
'manifest.json': json.dumps({
'background': {
'documentation': 'background_pages.html'
},
'manifest_version': {
'documentation': 'manifest/manifest_version.html',
'example': 2,
'level': 'required'
},
'page_action': {
'documentation': 'pageAction.html',
'example': {},
'level': 'only_one'
}
}),
'permissions.json': json.dumps({
'fakeUnsupportedFeature': {},
'syncFileSystem': {
'partial': 'permissions/sync_file_system.html'
},
'tabs': {
'partial': 'permissions/tabs.html'
},
})
}
}
}
}
class FeaturesBundleTest(unittest.TestCase):
def setUp(self):
self._server = ServerInstance.ForTest(TestFileSystem(_TEST_FILESYSTEM))
def testManifestFeatures(self):
expected_features = {
'background': {
'name': 'background',
'channel': 'stable',
'platforms': ['extensions'],
'documentation': 'background_pages.html'
},
'manifest_version': {
'name': 'manifest_version',
'channel': 'stable',
'platforms': ['apps', 'extensions'],
'documentation': 'manifest/manifest_version.html',
'level': 'required',
'example': 2
},
'omnibox': {
'name': 'omnibox',
'channel': 'stable',
'platforms': ['extensions']
},
'page_action': {
'name': 'page_action',
'channel': 'stable',
'platforms': ['extensions'],
'documentation': 'pageAction.html',
'level': 'only_one',
'example': {}
},
'sockets': {
'name': 'sockets',
'channel': 'dev',
'platforms': ['apps']
}
}
self.assertEqual(
expected_features,
self._server.features_bundle.GetManifestFeatures())
def testPermissionFeatures(self):
expected_features = {
'bluetooth': {
'name': 'bluetooth',
'channel': 'dev',
'platforms': ['apps'],
},
'fakeUnsupportedFeature': {
'name': 'fakeUnsupportedFeature',
'platforms': []
},
'power': {
'name': 'power',
'channel': 'stable',
'platforms': ['apps', 'extensions'],
},
'syncFileSystem': {
'name': 'syncFileSystem',
'channel': 'stable',
'platforms': ['apps'],
'partial': 'permissions/sync_file_system.html'
},
'tabs': {
'name': 'tabs',
'channel': 'stable',
'platforms': ['extensions'],
'partial': 'permissions/tabs.html'
}
}
self.assertEqual(
expected_features,
self._server.features_bundle.GetPermissionFeatures())
def testAPIFeatures(self):
expected_features = {
'audioCapture': {
'name': 'audioCapture',
'channel': 'stable',
'platforms': ['apps']
},
'background': {
'name': 'background',
'channel': 'stable',
'platforms': ['extensions']
},
'omnibox': {
'name': 'omnibox',
'platforms': ['extensions'],
'contexts': ['blessed_extension'],
'dependencies': ['manifest:omnibox']
},
'syncFileSystem': {
'name': 'syncFileSystem',
'platforms': ['apps'],
'contexts': ['blessed_extension'],
'dependencies': ['permission:syncFileSystem']
},
'tabs': {
'name': 'tabs',
'channel': 'stable',
'platforms': ['extensions'],
'contexts': ['blessed_extension'],
},
'test': {
'name': 'test',
'channel': 'stable',
'platforms': ['apps', 'extensions'],
'contexts': [
'blessed_extension', 'unblessed_extension', 'content_script'],
},
'windows': {
'name': 'windows',
'platforms': ['extensions'],
'contexts': ['blessed_extension'],
'dependencies': ['api:tabs']
}
}
self.assertEqual(
expected_features,
self._server.features_bundle.GetAPIFeatures())
if __name__ == '__main__':
unittest.main()