blob: 88fb2e22953abc2bcbc44f727094b95da0fe2590 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2012 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.
'''Unit tests for grit.format.policy_templates.writers.reg_writer'''
import os
import sys
if __name__ == '__main__':
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../..'))
import unittest
from grit.format.policy_templates.writers import writer_unittest_common
class RegWriterUnittest(writer_unittest_common.WriterUnittestCommon):
'''Unit tests for RegWriter.'''
NEWLINE = '\r\n'
def CompareOutputs(self, output, expected_output):
'''Compares the output of the reg_writer with its expected output.
Args:
output: The output of the reg writer as returned by grit.
expected_output: The expected output.
Raises:
AssertionError: if the two strings are not equivalent.
'''
self.assertEquals(
output.strip(),
expected_output.strip())
def testEmpty(self):
# Test the handling of an empty policy list.
grd = self.PrepareTest(
'{'
' "policy_definitions": [],'
' "placeholders": [],'
' "messages": {}'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium': '1', }, 'reg', 'en')
expected_output = 'Windows Registry Editor Version 5.00'
self.CompareOutputs(output, expected_output)
def testMainPolicy(self):
# Tests a policy group with a single policy of type 'main'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "MainPolicy",'
' "type": "main",'
' "features": { "can_be_recommended": True },'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": True'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_google_chrome' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Google\\Chrome]',
'"MainPolicy"=dword:00000001',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Google\\Chrome\\Recommended]',
'"MainPolicy"=dword:00000001'])
self.CompareOutputs(output, expected_output)
def testRecommendedMainPolicy(self):
# Tests a policy group with a single policy of type 'main'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "MainPolicy",'
' "type": "main",'
' "features": {'
' "can_be_recommended": True,'
' "can_be_mandatory": False '
' },'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": True'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_google_chrome' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Google\\Chrome\\Recommended]',
'"MainPolicy"=dword:00000001'])
self.CompareOutputs(output, expected_output)
def testStringPolicy(self):
# Tests a policy group with a single policy of type 'string'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "StringPolicy",'
' "type": "string",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": "hello, world! \\\" \\\\"'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium]',
'"StringPolicy"="hello, world! \\\" \\\\"'])
self.CompareOutputs(output, expected_output)
def testIntPolicy(self):
# Tests a policy group with a single policy of type 'int'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "IntPolicy",'
' "type": "int",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": 26'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium]',
'"IntPolicy"=dword:0000001a'])
self.CompareOutputs(output, expected_output)
def testIntEnumPolicy(self):
# Tests a policy group with a single policy of type 'int-enum'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "EnumPolicy",'
' "type": "int-enum",'
' "caption": "",'
' "desc": "",'
' "items": ['
' {"name": "ProxyServerDisabled", "value": 0, "caption": ""},'
' {"name": "ProxyServerAutoDetect", "value": 1, "caption": ""},'
' ],'
' "supported_on": ["chrome.win:8-"],'
' "example_value": 1'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_google_chrome': '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Google\\Chrome]',
'"EnumPolicy"=dword:00000001'])
self.CompareOutputs(output, expected_output)
def testStringEnumPolicy(self):
# Tests a policy group with a single policy of type 'string-enum'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "EnumPolicy",'
' "type": "string-enum",'
' "caption": "",'
' "desc": "",'
' "items": ['
' {"name": "ProxyServerDisabled", "value": "one",'
' "caption": ""},'
' {"name": "ProxyServerAutoDetect", "value": "two",'
' "caption": ""},'
' ],'
' "supported_on": ["chrome.win:8-"],'
' "example_value": "two"'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_google_chrome': '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Google\\Chrome]',
'"EnumPolicy"="two"'])
self.CompareOutputs(output, expected_output)
def testListPolicy(self):
# Tests a policy group with a single policy of type 'list'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "ListPolicy",'
' "type": "list",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.linux:8-"],'
' "example_value": ["foo", "bar"]'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium\\ListPolicy]',
'"1"="foo"',
'"2"="bar"'])
def testStringEnumListPolicy(self):
# Tests a policy group with a single policy of type 'string-enum-list'.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "ListPolicy",'
' "type": "string-enum-list",'
' "caption": "",'
' "desc": "",'
' "items": ['
' {"name": "ProxyServerDisabled", "value": "foo",'
' "caption": ""},'
' {"name": "ProxyServerAutoDetect", "value": "bar",'
' "caption": ""},'
' ],'
' "supported_on": ["chrome.linux:8-"],'
' "example_value": ["foo", "bar"]'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium\\ListPolicy]',
'"1"="foo"',
'"2"="bar"'])
def testDictionaryPolicy(self):
# Tests a policy group with a single policy of type 'dict'.
example = {
'bool': True,
'dict': {
'a': 1,
'b': 2,
},
'int': 10,
'list': [1, 2, 3],
'string': 'abc',
}
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "DictionaryPolicy",'
' "type": "dict",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": ' + str(example) +
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium]',
'"DictionaryPolicy"="{"bool": true, "dict": {"a": 1, '
'"b": 2}, "int": 10, "list": [1, 2, 3], "string": "abc"}"'])
self.CompareOutputs(output, expected_output)
def testNonSupportedPolicy(self):
# Tests a policy that is not supported on Windows, so it shouldn't
# be included in the .REG file.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "NonWindowsPolicy",'
' "type": "list",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.mac:8-"],'
' "example_value": ["a"]'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00'])
self.CompareOutputs(output, expected_output)
def testPolicyGroup(self):
# Tests a policy group that has more than one policies.
grd = self.PrepareTest(
'{'
' "policy_definitions": ['
' {'
' "name": "Group1",'
' "type": "group",'
' "caption": "",'
' "desc": "",'
' "policies": [{'
' "name": "Policy1",'
' "type": "list",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": ["a", "b"]'
' },{'
' "name": "Policy2",'
' "type": "string",'
' "caption": "",'
' "desc": "",'
' "supported_on": ["chrome.win:8-"],'
' "example_value": "c"'
' }],'
' },'
' ],'
' "placeholders": [],'
' "messages": {},'
'}')
output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'reg', 'en')
expected_output = self.NEWLINE.join([
'Windows Registry Editor Version 5.00',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium]',
'"Policy2"="c"',
'',
'[HKEY_LOCAL_MACHINE\\Software\\Policies\\Chromium\\Policy1]',
'"1"="a"',
'"2"="b"'])
self.CompareOutputs(output, expected_output)
if __name__ == '__main__':
unittest.main()