Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1105)

Side by Side Diff: chrome/common/extensions/docs/server2/features_bundle_test.py

Issue 344453003: Docserver: separate models for apps and extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add test to availability_finder_test.py Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 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 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import json 6 import json
7 import unittest 7 import unittest
8 8
9 from extensions_paths import CHROME_EXTENSIONS 9 from extensions_paths import CHROME_EXTENSIONS
10 from server_instance import ServerInstance 10 from server_instance import ServerInstance
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 'overridesPlatformAndChannelFromDependency': { 57 'overridesPlatformAndChannelFromDependency': {
58 'channel': 'beta', 58 'channel': 'beta',
59 'dependencies': [ 59 'dependencies': [
60 'permission:overridesPlatformAndChannelFromDependency' 60 'permission:overridesPlatformAndChannelFromDependency'
61 ], 61 ],
62 'extension_types': ['platform_app'] 62 'extension_types': ['platform_app']
63 }, 63 },
64 'windows': { 64 'windows': {
65 'dependencies': ['api:tabs'], 65 'dependencies': ['api:tabs'],
66 'contexts': ['blessed_extension'] 66 'contexts': ['blessed_extension']
67 } 67 },
68 'testDeep1': {
69 'dependencies': ['api:testDeep2']
70 },
71 'testDeep2': {
72 'dependencies': ['api:testDeep3']
73 },
74 'testDeep3': {
75 'dependencies': ['manifest:testDeep4']
76 },
77 'testDeep1.child': {},
78 'multipleAmbiguous': [{
79 'value': 1,
80 'extension_types': ['platform_app']
81 }, {
82 'value': 2,
83 'dependencies': ['manifest:multipleAmbiguous']
84 }],
85 'mergingDependencies1': {
86 'dependencies': [
87 'permission:mergingDependencies1',
88 'permission:mergingDependencies2'
89 ]
90 },
91 'mergingDependencies2': {
92 'dependencies': [
93 'permission:mergingDependencies1',
94 'permission:mergingDependencies3'
95 ]
96 },
97 'mergingDependencies3': {
98 'dependencies': [
99 'permission:mergingDependencies2',
100 'permission:mergingDependencies3'
101 ]
102 },
103 'implicitNoParent.child': {
104 'extension_types': ['extension'],
105 'channel': 'stable'
106 },
107 'parent': {
108 'extension_types': ['extension'],
109 'channel': 'beta'
110 },
111 'parent.explicitNoParent': {
112 'extension_types': ['extension'],
113 'noparent': True
114 },
115 'parent.inheritAndOverride': {
116 'channel': 'dev'
117 },
118 'overridePlatform': {
119 'dependencies': ['permission:tabs'],
120 'extension_types': 'platform_app'
121 },
122 'mergeMostStableChannel': [{
123 'channel': 'dev',
124 'extension_types': ['extension'],
125 'value1': 1
126 }, {
127 'channel': 'stable',
128 'extension_types': ['extension'],
129 'value2': 2
130 }, {
131 'channel': 'beta',
132 'extension_types': ['extension'],
133 'value3': 3
134 }, {
135 'channel': 'stable',
136 'extension_types': ['extension'],
137 'value4': 4
138 }, {
139 'extension_types': ['extension'],
140 'value5': 5
141 }]
68 }), 142 }),
69 '_manifest_features.json': json.dumps({ 143 '_manifest_features.json': json.dumps({
70 'app.content_security_policy': { 144 'app.content_security_policy': {
71 'channel': 'stable', 145 'channel': 'stable',
72 'extension_types': ['platform_app'], 146 'extension_types': ['platform_app'],
73 'min_manifest_version': 2, 147 'min_manifest_version': 2,
74 'whitelist': ['this isnt happening'] 148 'whitelist': ['this isnt happening']
75 }, 149 },
76 'background': { 150 'background': {
77 'channel': 'stable', 151 'channel': 'stable',
(...skipping 12 matching lines...) Expand all
90 'extension_types': ['extension'], 164 'extension_types': ['extension'],
91 'platforms': ['win'] 165 'platforms': ['win']
92 }, 166 },
93 'page_action': { 167 'page_action': {
94 'channel': 'stable', 168 'channel': 'stable',
95 'extension_types': ['extension'] 169 'extension_types': ['extension']
96 }, 170 },
97 'sockets': { 171 'sockets': {
98 'channel': 'dev', 172 'channel': 'dev',
99 'extension_types': ['platform_app'] 173 'extension_types': ['platform_app']
174 },
175 'testDeep4': {
176 'extension_types': ['extension']
177 },
178 'multipleAmbiguous': {
179 'extension_types': ['extension']
100 } 180 }
101 }), 181 }),
102 '_permission_features.json': json.dumps({ 182 '_permission_features.json': json.dumps({
103 'bluetooth': { 183 'bluetooth': {
104 'channel': 'dev', 184 'channel': 'dev',
105 'extension_types': ['platform_app'] 185 'extension_types': ['platform_app']
106 }, 186 },
107 'overridesPlatformAndChannelFromDependency': { 187 'overridesPlatformAndChannelFromDependency': {
108 'channel': 'stable', 188 'channel': 'stable',
109 'extension_types': ['extension'] 189 'extension_types': ['extension']
110 }, 190 },
111 'power': { 191 'power': {
112 'channel': 'stable', 192 'channel': 'stable',
113 'extension_types': [ 193 'extension_types': [
114 'extension', 'legacy_packaged_app', 'platform_app' 194 'extension', 'legacy_packaged_app', 'platform_app'
115 ] 195 ]
116 }, 196 },
117 'syncFileSystem': { 197 'syncFileSystem': {
118 'channel': 'beta', 198 'channel': 'stable',
119 'extension_types': ['platform_app'] 199 'extension_types': ['platform_app']
120 }, 200 },
121 'tabs': { 201 'tabs': {
122 'channel': 'stable', 202 'channel': 'stable',
123 'extension_types': ['extension'] 203 'extension_types': ['extension']
124 } 204 },
205 'mergingDependencies1': {
206 'channel': 'stable',
207 'extension_types': 'all'
208 },
209 'mergingDependencies2': {
210 'channel': 'beta',
211 'extension_types': ['platform_app']
212 },
213 'mergingDependencies3': {
214 'extension_types': ['extension']
215 },
216 'defaults': {}
125 }) 217 })
126 }, 218 },
127 'docs': { 219 'docs': {
128 'templates': { 220 'templates': {
129 'json': { 221 'json': {
130 'manifest.json': json.dumps({ 222 'manifest.json': json.dumps({
131 'background': { 223 'background': {
132 'documentation': 'background_pages.html' 224 'documentation': 'background_pages.html'
133 }, 225 },
134 'manifest_version': { 226 'manifest_version': {
135 'documentation': 'manifest/manifest_version.html', 227 'documentation': 'manifest/manifest_version.html',
136 'example': 2, 228 'example': 2,
137 'level': 'required' 229 'level': 'required'
138 }, 230 },
139 'page_action': { 231 'page_action': {
140 'documentation': 'pageAction.html', 232 'documentation': 'pageAction.html',
141 'example': {}, 233 'example': {},
142 'level': 'only_one' 234 'level': 'only_one'
143 } 235 }
144 }), 236 }),
145 'permissions.json': json.dumps({ 237 'permissions.json': json.dumps({
146 'fakeUnsupportedFeature': {}, 238 'fakeUnsupportedFeature': {},
147 'syncFileSystem': { 239 'syncFileSystem': {
148 'partial': 'permissions/sync_file_system.html' 240 'partial': 'permissions/sync_file_system.html'
149 }, 241 },
150 'tabs': { 242 'tabs': {
151 'partial': 'permissions/tabs.html' 243 'partial': 'permissions/tabs.html'
152 }, 244 }
153 }) 245 })
154 } 246 }
155 } 247 }
156 } 248 }
157 } 249 }
158 250
159 251
160 class FeaturesBundleTest(unittest.TestCase): 252 class FeaturesBundleTest(unittest.TestCase):
161 def setUp(self): 253 def setUp(self):
162 self._server = ServerInstance.ForTest( 254 self._server = ServerInstance.ForTest(
163 TestFileSystem(_TEST_FILESYSTEM, relative_to=CHROME_EXTENSIONS)) 255 TestFileSystem(_TEST_FILESYSTEM, relative_to=CHROME_EXTENSIONS))
164 256
165 def testManifestFeatures(self): 257 def testManifestFeatures(self):
166 expected_features = { 258 expected_features = {
167 'background': { 259 'background': {
168 'name': 'background', 260 'name': 'background',
169 'channel': 'stable', 261 'channel': 'stable',
170 'platforms': ['extensions'], 262 'documentation': 'background_pages.html',
171 'documentation': 'background_pages.html' 263 },
172 }, 264 'inheritsPlatformAndChannelFromDependency': {
173 'inheritsPlatformAndChannelFromDependency': {
174 'channel': 'dev', 265 'channel': 'dev',
175 'name': 'inheritsPlatformAndChannelFromDependency', 266 'name': 'inheritsPlatformAndChannelFromDependency',
176 'platforms': ['extensions']
177 }, 267 },
178 'manifest_version': { 268 'manifest_version': {
179 'name': 'manifest_version', 269 'name': 'manifest_version',
180 'channel': 'stable', 270 'channel': 'stable',
181 'platforms': ['apps', 'extensions'],
182 'documentation': 'manifest/manifest_version.html', 271 'documentation': 'manifest/manifest_version.html',
183 'level': 'required', 272 'level': 'required',
184 'example': 2 273 'example': 2,
185 }, 274 },
186 'omnibox': { 275 'omnibox': {
187 'name': 'omnibox', 276 'name': 'omnibox',
188 'channel': 'stable', 277 'channel': 'stable',
189 'platforms': ['extensions'] 278 'platforms': ['win'],
190 }, 279 },
191 'page_action': { 280 'page_action': {
192 'name': 'page_action', 281 'name': 'page_action',
193 'channel': 'stable', 282 'channel': 'stable',
194 'platforms': ['extensions'],
195 'documentation': 'pageAction.html', 283 'documentation': 'pageAction.html',
196 'level': 'only_one', 284 'level': 'only_one',
197 'example': {} 285 'example': {},
286 },
287 'testDeep4': {
288 'name': 'testDeep4',
289 'channel': 'stable'
290 },
291 'multipleAmbiguous': {
292 'name': 'multipleAmbiguous',
293 'channel': 'stable'
294 }
295 }
296 self.assertEqual(
297 expected_features,
298 self._server.platform_bundle.GetFeaturesBundle(
299 'extensions').GetManifestFeatures().Get())
300 expected_features = {
301 'manifest_version': {
302 'name': 'manifest_version',
303 'channel': 'stable',
304 'documentation': 'manifest/manifest_version.html',
305 'level': 'required',
306 'example': 2,
198 }, 307 },
199 'sockets': { 308 'sockets': {
200 'name': 'sockets', 309 'name': 'sockets',
201 'channel': 'dev', 310 'channel': 'dev',
202 'platforms': ['apps'] 311 }
203 } 312 }
204 } 313 self.assertEqual(
205 self.assertEqual( 314 expected_features,
206 expected_features, 315 self._server.platform_bundle.GetFeaturesBundle(
207 self._server.features_bundle.GetManifestFeatures().Get()) 316 'apps').GetManifestFeatures().Get())
208 317
209 def testPermissionFeatures(self): 318 def testPermissionFeatures(self):
210 expected_features = { 319 expected_features = {
320 'power': {
321 'name': 'power',
322 'channel': 'stable',
323 },
324 'overridesPlatformAndChannelFromDependency': {
325 'name': 'overridesPlatformAndChannelFromDependency',
326 'channel': 'stable',
327 },
328 'tabs': {
329 'name': 'tabs',
330 'channel': 'stable',
331 'partial': 'permissions/tabs.html'
332 },
333 'mergingDependencies1': {
334 'name': 'mergingDependencies1',
335 'channel': 'stable',
336 },
337 'mergingDependencies3': {
338 'name': 'mergingDependencies3',
339 'channel': 'stable'
340 },
341 'defaults': {
342 'name': 'defaults',
343 'channel': 'stable'
344 }
345 }
346 self.assertEqual(
347 expected_features,
348 self._server.platform_bundle.GetFeaturesBundle(
349 'extensions').GetPermissionFeatures().Get())
350 expected_features = {
211 'bluetooth': { 351 'bluetooth': {
212 'name': 'bluetooth', 352 'name': 'bluetooth',
213 'channel': 'dev', 353 'channel': 'dev',
214 'platforms': ['apps'],
215 },
216 'fakeUnsupportedFeature': {
217 'name': 'fakeUnsupportedFeature',
218 'platforms': []
219 },
220 'overridesPlatformAndChannelFromDependency': {
221 'name': 'overridesPlatformAndChannelFromDependency',
222 'channel': 'stable',
223 'platforms': ['extensions']
224 }, 354 },
225 'power': { 355 'power': {
226 'name': 'power', 356 'name': 'power',
227 'channel': 'stable', 357 'channel': 'stable',
228 'platforms': ['apps', 'extensions'],
229 }, 358 },
230 'syncFileSystem': { 359 'syncFileSystem': {
231 'name': 'syncFileSystem', 360 'name': 'syncFileSystem',
232 'channel': 'beta', 361 'channel': 'stable',
233 'platforms': ['apps'],
234 'partial': 'permissions/sync_file_system.html' 362 'partial': 'permissions/sync_file_system.html'
235 }, 363 },
364 'mergingDependencies1': {
365 'name': 'mergingDependencies1',
366 'channel': 'stable',
367 },
368 'mergingDependencies2': {
369 'name': 'mergingDependencies2',
370 'channel': 'beta'
371 },
372 'defaults': {
373 'name': 'defaults',
374 'channel': 'stable'
375 }
376 }
377 self.assertEqual(
378 expected_features,
379 self._server.platform_bundle.GetFeaturesBundle(
380 'apps').GetPermissionFeatures().Get())
381
382 def testAPIFeatures(self):
383 expected_features = {
384 'background': {
385 'name': 'background',
386 'channel': 'stable',
387 },
388 'omnibox': {
389 'name': 'omnibox',
390 'contexts': ['blessed_extension'],
391 'dependencies': ['manifest:omnibox'],
392 'channel': 'stable'
393 },
236 'tabs': { 394 'tabs': {
237 'name': 'tabs', 395 'name': 'tabs',
238 'channel': 'stable', 396 'channel': 'stable',
239 'platforms': ['extensions'], 397 'contexts': ['blessed_extension'],
240 'partial': 'permissions/tabs.html' 398 },
241 } 399 'test': {
242 } 400 'name': 'test',
243 self.assertEqual( 401 'channel': 'stable',
244 expected_features, 402 'contexts': [
245 self._server.features_bundle.GetPermissionFeatures().Get()) 403 'blessed_extension', 'unblessed_extension', 'content_script'],
246 404 },
247 def testAPIFeatures(self): 405 'windows': {
406 'name': 'windows',
407 'contexts': ['blessed_extension'],
408 'dependencies': ['api:tabs'],
409 'channel': 'stable'
410 },
411 'testDeep1': {
412 'name': 'testDeep1',
413 'dependencies': ['api:testDeep2'],
414 'channel': 'stable'
415 },
416 'testDeep2': {
417 'name': 'testDeep2',
418 'dependencies': ['api:testDeep3'],
419 'channel': 'stable'
420 },
421 'testDeep3': {
422 'name': 'testDeep3',
423 'dependencies': ['manifest:testDeep4'],
424 'channel': 'stable'
425 },
426 'testDeep1.child': {
427 'name': 'testDeep1.child',
428 'channel': 'stable'
429 },
430 'multipleAmbiguous': {
431 'name': 'multipleAmbiguous',
432 'value': 2,
433 'dependencies': ['manifest:multipleAmbiguous'],
434 'channel': 'stable'
435 },
436 'mergingDependencies2': {
437 'name': 'mergingDependencies2',
438 'dependencies': [
439 'permission:mergingDependencies1',
440 'permission:mergingDependencies3'
441 ],
442 'channel': 'stable'
443 },
444 'inheritsFromDifferentDependencyName': {
445 'channel': 'dev',
446 'name': 'inheritsFromDifferentDependencyName',
447 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
448 },
449 'inheritsPlatformAndChannelFromDependency': {
450 'channel': 'dev',
451 'name': 'inheritsPlatformAndChannelFromDependency',
452 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
453 },
454 'implicitNoParent.child': {
455 'name': 'implicitNoParent.child',
456 'channel': 'stable'
457 },
458 'parent': {
459 'name': 'parent',
460 'channel': 'beta'
461 },
462 'parent.explicitNoParent': {
463 'name': 'parent.explicitNoParent',
464 'channel': 'stable',
465 'noparent': True
466 },
467 'parent.inheritAndOverride': {
468 'name': 'parent.inheritAndOverride',
469 'channel': 'dev'
not at google - send to devlin 2014/06/19 21:06:55 i.e. this should include extension_types
470 },
471 'mergeMostStableChannel': {
472 'name': 'mergeMostStableChannel',
473 'channel': 'stable',
474 'value2': 2,
475 'value4': 4,
476 'value5': 5
477 }
478 }
479 self.assertEqual(
480 expected_features,
481 self._server.platform_bundle.GetFeaturesBundle(
482 'extensions').GetAPIFeatures().Get())
248 expected_features = { 483 expected_features = {
249 'audioCapture': { 484 'audioCapture': {
250 'name': 'audioCapture', 485 'name': 'audioCapture',
251 'channel': 'stable', 486 'channel': 'stable',
252 'platforms': ['apps'] 487 },
253 }, 488 'syncFileSystem': {
254 'background': { 489 'name': 'syncFileSystem',
255 'name': 'background', 490 'contexts': ['blessed_extension'],
256 'channel': 'stable', 491 'dependencies': ['permission:syncFileSystem'],
257 'platforms': ['extensions'] 492 'channel': 'stable'
258 }, 493 },
259 'inheritsFromDifferentDependencyName': { 494 'test': {
260 'channel': 'dev', 495 'name': 'test',
261 'name': 'inheritsFromDifferentDependencyName', 496 'channel': 'stable',
262 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], 497 'contexts': [
263 'platforms': ['extensions'] 498 'blessed_extension', 'unblessed_extension', 'content_script'],
264 }, 499 },
265 'inheritsPlatformAndChannelFromDependency': { 500 'multipleAmbiguous': {
266 'channel': 'dev', 501 'name': 'multipleAmbiguous',
267 'name': 'inheritsPlatformAndChannelFromDependency', 502 'value': 1,
268 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], 503 'channel': 'stable'
269 'platforms': ['extensions'] 504 },
270 }, 505 'mergingDependencies1': {
271 'omnibox': { 506 'name': 'mergingDependencies1',
272 'channel': 'stable', 507 'dependencies': [
273 'name': 'omnibox', 508 'permission:mergingDependencies1',
274 'platforms': ['extensions'], 509 'permission:mergingDependencies2'
275 'contexts': ['blessed_extension'], 510 ],
276 'dependencies': ['manifest:omnibox'] 511 'channel': 'beta'
277 }, 512 },
278 'overridesPlatformAndChannelFromDependency': { 513 'overridesPlatformAndChannelFromDependency': {
279 'channel': 'beta', 514 'channel': 'beta',
280 'name': 'overridesPlatformAndChannelFromDependency', 515 'name': 'overridesPlatformAndChannelFromDependency',
281 'dependencies': [ 516 'dependencies': [
282 'permission:overridesPlatformAndChannelFromDependency' 517 'permission:overridesPlatformAndChannelFromDependency'
283 ], 518 ],
284 'platforms': ['apps'] 519 },
285 }, 520 'overridePlatform': {
286 'syncFileSystem': { 521 'name': 'overridePlatform',
287 'channel': 'beta', 522 'channel': 'stable',
288 'name': 'syncFileSystem', 523 'dependencies': ['permission:tabs'],
289 'platforms': ['apps'], 524 }
290 'contexts': ['blessed_extension'], 525 }
291 'dependencies': ['permission:syncFileSystem'] 526 self.assertEqual(
292 }, 527 expected_features,
293 'tabs': { 528 self._server.platform_bundle.GetFeaturesBundle(
294 'channel': 'stable', 529 'apps').GetAPIFeatures().Get())
295 'name': 'tabs',
296 'channel': 'stable',
297 'platforms': ['extensions'],
298 'contexts': ['blessed_extension'],
299 },
300 'test': {
301 'channel': 'stable',
302 'name': 'test',
303 'channel': 'stable',
304 'platforms': ['apps', 'extensions'],
305 'contexts': [
306 'blessed_extension', 'unblessed_extension', 'content_script'],
307 },
308 'windows': {
309 'channel': 'stable',
310 'name': 'windows',
311 'platforms': ['extensions'],
312 'contexts': ['blessed_extension'],
313 'dependencies': ['api:tabs']
314 }
315 }
316 self.assertEqual(
317 expected_features,
318 self._server.features_bundle.GetAPIFeatures().Get())
319 530
320 531
321 if __name__ == '__main__': 532 if __name__ == '__main__':
322 unittest.main() 533 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698