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