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

Side by Side Diff: reviewbot/handlers/policy_checklist/parser_test.py

Issue 23531026: Remove the review bot app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 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
6 import unittest
7
8 import patching
9 import handlers.policy_checklist.parser
10
11
12 def parse_patch_to_chunks(text):
13 lines = patching.ParsePatchToLines(text.splitlines())
14 return handlers.policy_checklist.parser.parse(lines)
15
16
17 class PolicyChecklistParserTest(unittest.TestCase):
18 def test_basic_addition(self):
19 self.assertEquals([
20 {
21 'start': [None, 4985],
22 'end': [None, 5003],
23 'comment_pos': [None, 4986],
24 'additions': True,
25 'removals': False,
26 }], parse_patch_to_chunks("""
27 Index: chrome/app/policy/policy_templates.json
28 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
29 index 7fca71bb7cae78f36f65ec166671a9596cd63a4b..52680ca8ee898a0f1a81c00a7cef669e 38fcac51 100644
30 --- a/chrome/app/policy/policy_templates.json
31 +++ b/chrome/app/policy/policy_templates.json
32 @@ -112,7 +112,7 @@
33 # persistent IDs for all fields (but not for groups!) are needed. These are
34 # specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
35 # because doing so would break the deployed wire format!
36 -# For your editing convenience: highest ID currently used: 218
37 +# For your editing convenience: highest ID currently used: 219
38 #
39 # Placeholders:
40 # The following placeholder strings are automatically substituted:
41 @@ -4982,6 +4982,24 @@
42
43 This policy is for internal use by Chrome itself.''',
44 },
45 + {
46 + 'name': 'SupervisedUsersEnabled',
47 + 'type': 'main',
48 + 'schema': { 'type': 'boolean' },
49 + 'supported_on': ['chrome_os:29-'],
50 + 'device_only': True,
51 + 'features': {
52 + 'dynamic_refresh': False,
53 + },
54 + 'example_value': True,
55 + 'id': 219,
56 + 'caption': '''Enable supervised users.''',
57 + 'desc': '''If set to true, it is possible to create and log in as a s upervised user.
58 +
59 + If set to false or not configured, supervised users creation and logi n will be disabled. All existing supervised users will be hidden.
60 +
61 + NOTE: The default behavior for consumer and enterprise devices differ s: on consumer devices supervised users are enabled by default, but on enterpric e devices they aren't.'''
62 + },
63 ],
64 },
65 ],
66 """))
67
68 def test_one_addition_shifted(self):
69 self.assertEquals([
70 {
71 'start': [None, 4068],
72 'end': [None, 4081],
73 'comment_pos': [None, 4068],
74 'additions': True,
75 'removals': False,
76 }], parse_patch_to_chunks("""
77 Index: chrome/app/policy/policy_templates.json
78 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
79 index 1cc92452f6375b7b718c232c42f29d19816554aa..10ad804e04cdcec44eaee5438caa8243 5b799671 100644
80 --- a/chrome/app/policy/policy_templates.json
81 +++ b/chrome/app/policy/policy_templates.json
82 @@ -117,7 +117,7 @@
83 # persistent IDs for all fields (but not for groups!) are needed. These are
84 # specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
85 # because doing so would break the deployed wire format!
86 -# For your editing convenience: highest ID currently used: 235
87 +# For your editing convenience: highest ID currently used: 236
88 #
89 # Placeholders:
90 # The following placeholder strings are automatically substituted:
91 @@ -4065,6 +4065,20 @@
92 The format of the value follows the names of timezones in the "IANA Time Zone Database" (see "http://en.wikipedia.org/wiki/List_of_tz_database_time"). In particular, most timezones can be referred to by "continent/large_city" or "oce an/large_city".''',
93 },
94 {
95 + 'name': 'SystemUse24HourClock',
96 + 'type': 'main',
97 + 'schema': { 'type': 'boolean' },
98 + 'supported_on': ['chrome_os:30-'],
99 + 'device_only': True,
100 + 'features': {
101 + 'dynamic_refresh': True,
102 + },
103 + 'example_value': True,
104 + 'id': 236,
105 + 'caption': '''Use 24 hour clock by default''',
106 + 'desc': '''Specifies the clock format be used for the device. Users can o verride clock format for the current session. However, on logout it is set back to the specified value. If an empty string is provided, device owner preference is used.''',
107 + },
108 + {
109 'name': 'ShowLogoutButtonInTray',
110 'type': 'main',
111 'schema': { 'type': 'boolean' },
112 """))
113
114 def test_nested_blocks(self):
115 self.assertEquals([
116 {
117 'start': [None, 5256],
118 'end': [None, 5290],
119 'comment_pos': [None, 5259],
120 'additions': True,
121 'removals': False,
122 }], parse_patch_to_chunks("""
123 Index: chrome/app/policy/policy_templates.json
124 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
125 index 86bc3ac3677d3405afdf39f17c7be373fc0fa0d1..3a32920b3d745fb50432cc15a11a45b8 f88a95d8 100644
126 --- a/chrome/app/policy/policy_templates.json
127 +++ b/chrome/app/policy/policy_templates.json
128 @@ -5253,6 +5253,40 @@
129 },
130 ],
131 },
132 + # TODO(joaodasilva): replace the 'dict' type with a more generic
133 + # 'json' type. The actual schema type for this should be 'array'.
134 + {
135 + 'name': 'ManagedBookmarks',
136 + 'type': 'dict',
137 + 'schema': {
138 + 'type': 'object',
139 + 'items': {
140 + 'type': 'object',
141 + 'properties': {
142 + 'name': { 'type': 'string' },
143 + 'url': { 'type': 'string' },
144 + },
145 + },
146 + },
147 + 'supported_on': ['android:30-'],
148 + 'features': {
149 + 'dynamic_refresh': True,
150 + 'per_profile': True,
151 + },
152 + 'future': True,
153 + 'example_value': { "name": "Google", "url": "google.com" },
154 + 'id': 227,
155 + 'caption': '''Managed Bookmarks''',
156 + 'desc': '''Configures a list of managed bookmarks.
157 +
158 + The policy is a list of bookmarks, and each bookmark is a dictionary cont aining the bookmark "name" and target "url".
159 +
160 + These bookmarks are placed in a Managed bookmarks folder inside the Mobil e bookmarks. These bookmarks can't be modified by the user.
161 +
162 + When this policy is set then the Managed bookmarks are the default folder opened when the bookmarks view is opened in Chrome.
163 +
164 + Managed bookmarks are not synced to the user account.''',
165 + },
166 ],
167 'messages': {
168 # Messages that are not associated to any policies.
169 """))
170
171 def test_two_additions(self):
172 self.assertEquals([
173 {
174 'start': [None, 4502],
175 'end': [None, 4525],
176 'comment_pos': [None, 4503],
177 'additions': True,
178 'removals': False,
179 }, {
180 'start': [None, 4525],
181 'end': [None, 4548],
182 'comment_pos': [None, 4526],
183 'additions': True,
184 'removals': False,
185 }], parse_patch_to_chunks("""
186 Index: chrome/app/policy/policy_templates.json
187 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
188 index 3abaf03cb7529667e01472287eb56773bdcbfc69..fbd4a5bc36fc09825eb321ad10008841 6610b50a 100644
189 --- a/chrome/app/policy/policy_templates.json
190 +++ b/chrome/app/policy/policy_templates.json
191 @@ -112,7 +112,7 @@
192 # persistent IDs for all fields (but not for groups!) are needed. These are
193 # specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
194 # because doing so would break the deployed wire format!
195 -# For your editing convenience: highest ID currently used: 210
196 +# For your editing convenience: highest ID currently used: 214
197 #
198 # Placeholders:
199 # The following placeholder strings are automatically substituted:
200 @@ -4499,6 +4499,52 @@
201
202 If this policy is left unset, Accessibility options will not appear i n the system tray menu, but the user can cause the Accessibility options to appe ar via the Settings page.'''
203 },
204 + {
205 + 'name': 'LargeCursorEnabled',
206 + 'type': 'main',
207 + 'schema': { 'type': 'boolean' },
208 + 'supported_on': ['chrome_os:29-'],
209 + 'features': {
210 + 'can_be_recommended': True,
211 + 'dynamic_refresh': True,
212 + 'per_profile': True,
213 + },
214 + 'example_value': True,
215 + 'id': 211,
216 + 'caption': '''Enable large cursor''',
217 + 'desc': '''Enable the large cursor accessibility feature.
218 +
219 + If this policy is set to true, the large cursor will always be enable d.
220 +
221 + If this policy is set to false, the large cursor will always be disab led.
222 +
223 + If you set this policy, users cannot change or override it.
224 +
225 + If this policy is left unset, the large cursor is disabled initially but can be enabled by the user anytime.'''
226 + },
227 + {
228 + 'name': 'SpokenFeedbackEnabled',
229 + 'type': 'main',
230 + 'schema': { 'type': 'boolean' },
231 + 'supported_on': ['chrome_os:29-'],
232 + 'features': {
233 + 'can_be_recommended': True,
234 + 'dynamic_refresh': True,
235 + 'per_profile': True,
236 + },
237 + 'example_value': True,
238 + 'id': 212,
239 + 'caption': '''Enable spoken feedback''',
240 + 'desc': '''Enable the spoken feedback accessibility feature.
241 +
242 + If this policy is set to true, spoken feedback will always be enabled .
243 +
244 + If this policy is set to false, spoken feedback will always be disabl ed.
245 +
246 + If you set this policy, users cannot change or override it.
247 +
248 + If this policy is left unset, spoken feedback is disabled initially b ut can be enabled by the user anytime.'''
249 + },
250 ],
251 },
252 {
253 """))
254
255 def test_group_additions(self):
256 self.assertEquals([
257 {
258 'start': [None, 4523],
259 'end': [None, 4545],
260 'comment_pos': [None, 4530],
261 'additions': True,
262 'removals': False,
263 }, {
264 'start': [None, 4545],
265 'end': [None, 4564],
266 'comment_pos': [None, 4546],
267 'additions': True,
268 'removals': False,
269 }], parse_patch_to_chunks("""
270 Index: chrome/app/policy/policy_templates.json
271 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
272 index 6a1293696283e232070e61104a369e52a615cdf1..dad016adf0ae2055a6e7cb1275fb99d3 3c703ab2 100644
273 --- a/chrome/app/policy/policy_templates.json
274 +++ b/chrome/app/policy/policy_templates.json
275 @@ -112,7 +112,7 @@
276 # persistent IDs for all fields (but not for groups!) are needed. These are
277 # specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
278 # because doing so would break the deployed wire format!
279 -# For your editing convenience: highest ID currently used: 199
280 +# For your editing convenience: highest ID currently used: 201
281 #
282 # Placeholders:
283 # The following placeholder strings are automatically substituted:
284 @@ -4520,6 +4520,49 @@
285
286 If not specified, will not modify the Variations seed URL.''',
287 },
288 + {
289 + 'name': 'Attestation',
290 + 'type': 'group',
291 + 'caption': 'Remote Attestation',
292 + 'desc': 'Configure the remote attestation with TPM mechanism.',
293 + 'policies': [
294 + {
295 + 'name': 'AttestationEnabledForUser',
296 + 'type': 'main',
297 + 'schema': { 'type': 'boolean' },
298 + 'supported_on': ['chrome_os:28-'],
299 + 'features': {
300 + 'dynamic_refresh': True,
301 + 'per_profile': True,
302 + },
303 + 'example_value': True,
304 + 'id': 200,
305 + 'caption': '''Enable remote attestation for the user.''',
306 + 'desc': '''If true, the user can use the hardware on Chrome devices t o remote attest its identity to the privacy CA via the Enterprise Platform Keys API chrome.enterprise.platformKeysPrivate.challengeUserKey().
307 +
308 + If it is set to false, or if it is not set, calls to the API will fai l with an error code.''',
309 + },
310 + {
311 + 'name': 'AttestationExtensionWhitelist',
312 + 'type': 'list',
313 + 'schema': {
314 + 'type': 'array',
315 + 'items': { 'type': 'string' },
316 + },
317 + 'supported_on': ['chrome_os:28-'],
318 + 'features': {
319 + 'dynamic_refresh': True,
320 + 'per_profile': True,
321 + },
322 + 'example_value': ['ghdilpkmfbfdnomkmaiogjhjnggaggoi'],
323 + 'id': 201,
324 + 'caption': '''Extensions allowed to to use the remote attestation API .''',
325 + 'desc': '''This policy specifies the allowed extensions to use Enterp rise Platform Keys API chrome.enterprise.platformKeysPrivate.challengeUserKey() for remote attestation. Extensions must be added to this list to use the API.
326 +
327 + If an extension is not in the list, or the list is not set, the call to the API will fail with an error code.''',
328 + },
329 + ],
330 + },
331 ],
332 'messages': {
333 # Messages that are not associated to any policies.
334 """))
335
336 def test_simple_edit(self):
337 self.assertEquals([
338 {
339 'start': [300, 300],
340 'end': [301, 301],
341 'comment_pos': [300, 300],
342 'additions': True,
343 'removals': True,
344 }], parse_patch_to_chunks("""
345 Index: chrome/app/policy/policy_templates.json
346 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
347 index 02e1801f8906343b6168f86c45ae3b2c0c9f5363..86bc3ac3677d3405afdf39f17c7be373 fc0fa0d1 100644
348 --- a/chrome/app/policy/policy_templates.json
349 +++ b/chrome/app/policy/policy_templates.json
350 @@ -297,7 +297,7 @@
351 'name': 'DisableSpdy',
352 'type': 'main',
353 'schema': { 'type': 'boolean' },
354 - 'supported_on': ['chrome.*:8-', 'chrome_os:0.11-'],
355 + 'supported_on': ['chrome.*:8-', 'chrome_os:0.11-', 'android:30-'],
356 'features': {
357 'dynamic_refresh': True,
358 'per_profile': False,
359 """))
360
361 def test_complex_edit(self):
362 self.assertEquals([
363 {
364 'start': [328, 328],
365 'end': [332, 335],
366 'comment_pos': [328, 328],
367 'additions': True,
368 'removals': True,
369 }], parse_patch_to_chunks("""
370 Index: chrome/app/policy/policy_templates.json
371 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
372 index 602196317bd5bc00ed0884c2ef3e563910820686..c38156df31142a39a6b6fa215bc629f2 ca0e7f94 100644
373 --- a/chrome/app/policy/policy_templates.json
374 +++ b/chrome/app/policy/policy_templates.json
375 @@ -325,10 +325,13 @@
376 'dynamic_refresh': True,
377 'per_profile': False,
378 },
379 - 'example_value': ['file', 'mailto'],
380 + 'deprecated': True,
381 + 'example_value': ['file', 'https'],
382 'id': 85,
383 'caption': '''Disable URL protocol schemes''',
384 - 'desc': '''Disables the listed protocol schemes in <ph name="PRODUCT_NAME ">$1<ex>Google Chrome</ex></ph>.
385 + 'desc': '''This policy is deprecated, please use URLBlacklist instead.
386 +
387 + Disables the listed protocol schemes in <ph name="PRODUCT_NAME">$1<ex>Goo gle Chrome</ex></ph>.
388
389 URLs using a scheme from this list will not load and can not be navigated to.
390 """))
391
392 def test_enum_item_names_ignored_for_comment_pos(self):
393 self.assertEquals([
394 {
395 'start': [None, 3323],
396 'end': [None, 3363],
397 'comment_pos': [None, 3324],
398 'additions': True,
399 'removals': False,
400 }], parse_patch_to_chunks("""
401 Index: chrome/app/policy/policy_templates.json
402 diff --git a/chrome/app/policy/policy_templates.json b/chrome/app/policy/policy_ templates.json
403 index c888dcbf4fc32656c048054ca149e245989281d5..7de3edae00f1e8ff5984be8f10091ee0 44655d8a 100644
404 --- a/chrome/app/policy/policy_templates.json
405 +++ b/chrome/app/policy/policy_templates.json
406 @@ -112,7 +112,7 @@
407 # persistent IDs for all fields (but not for groups!) are needed. These are
408 # specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
409 # because doing so would break the deployed wire format!
410 -# For your editing convenience: highest ID currently used: 165
411 +# For your editing convenience: highest ID currently used: 166
412 #
413 # Placeholders:
414 # The following placeholder strings are automatically substituted:
415 @@ -3320,6 +3320,46 @@
416
417 If this policy is left not set, the users will be able to change whether the built-in DNS client is used by editing chrome://flags or specifying a comman d-line flag.''',
418 },
419 + {
420 + 'name': 'ShelfAutoHideBehavior',
421 + 'type': 'string-enum',
422 + 'schema': {
423 + 'type': 'string',
424 + 'enum': [
425 + 'Always',
426 + 'Never'
427 + ],
428 + },
429 + 'items': [
430 + {
431 + 'name': 'AlwaysAutoHideShelf',
432 + 'value': 'Always',
433 + 'caption': '''Always auto-hide the shelf''',
434 + },
435 + {
436 + 'name': 'NeverAutoHideShelf',
437 + 'value': 'Never',
438 + 'caption': '''Never auto-hide the shelf''',
439 + },
440 + ],
441 + 'supported_on': ['chrome_os:25-'],
442 + 'features': {
443 + 'dynamic_refresh': True,
444 + 'can_be_recommended': True,
445 + },
446 + 'example_value': 'Always',
447 + 'id': 166,
448 + 'caption': '''Control shelf auto-hiding''',
449 + 'desc': '''Control auto-hiding of the <ph name="PRODUCT_OS_NAME">$2<ex>Go ogle Chrome OS</ex></ph> shelf.
450 +
451 + If this policy is set to 'AlwaysAutoHideShelf', the shelf will always aut o-hide.
452 +
453 + If this policy is set to 'NeverAutoHideShelf', the shelf never auto-hide.
454 +
455 + If you set this policy, users cannot change or override it.
456 +
457 + If the policy is left not set, users can choose whether the shelf should auto-hide.''',
458 + },
459 ],
460 'messages': {
461 # Messages that are not associated to any policies.
462 """))
463
464
465 if __name__ == '__main__':
466 unittest.main()
OLDNEW
« no previous file with comments | « reviewbot/handlers/policy_checklist/parser.py ('k') | reviewbot/handlers/policy_checklist/review_message.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698