Index: grit/format/policy_templates/writers/adm_writer_unittest.py |
=================================================================== |
--- grit/format/policy_templates/writers/adm_writer_unittest.py (revision 0) |
+++ grit/format/policy_templates/writers/adm_writer_unittest.py (revision 0) |
@@ -0,0 +1,525 @@ |
+#!/usr/bin/python2.4 |
+# Copyright (c) 2011 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.adm_writer''' |
+ |
+ |
+import os |
+import sys |
+if __name__ == '__main__': |
+ sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '../../../..')) |
+ |
+import tempfile |
+import unittest |
+import StringIO |
+ |
+from grit.format.policy_templates.writers import writer_unittest_common |
+from grit import grd_reader |
+from grit import util |
+from grit.tool import build |
+ |
+ |
+class AdmWriterUnittest(writer_unittest_common.WriterUnittestCommon): |
+ '''Unit tests for AdmWriter.''' |
+ |
+ def ConstructOutput(self, classes, body, strings): |
+ result = [] |
+ for clazz in classes: |
+ result.append('CLASS ' + clazz) |
+ result.append(body) |
+ result.append(strings) |
+ return ''.join(result) |
+ |
+ def CompareOutputs(self, output, expected_output): |
+ '''Compares the output of the adm_writer with its expected output. |
+ |
+ Args: |
+ output: The output of the adm 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().replace('\n', '\r\n')) |
+ |
+ def testEmpty(self): |
+ # Test PListWriter in case of empty polices. |
+ grd = self.PrepareTest(''' |
+ { |
+ 'policy_definitions': [], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least "Windows 3.11', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium': '1',}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least "Windows 3.11" |
+chromium="Chromium"''') |
+ 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', |
+ 'supported_on': ['chrome.win:8-'], |
+ 'caption': 'Caption of main.', |
+ 'desc': 'Description of main.', |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.12', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_google_chrome' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!google |
+ CATEGORY !!googlechrome |
+ KEYNAME "Software\\Policies\\Google\\Chrome" |
+ |
+ POLICY !!MainPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!MainPolicy_Explain |
+ VALUENAME "MainPolicy" |
+ VALUEON NUMERIC 1 |
+ VALUEOFF NUMERIC 0 |
+ END POLICY |
+ |
+ END CATEGORY |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.12" |
+google="Google" |
+googlechrome="Google Chrome" |
+MainPolicy_Policy="Caption of main." |
+MainPolicy_Explain="Description of main."''') |
+ 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', |
+ 'supported_on': ['chrome.win:8-'], |
+ 'desc': """Description of group. |
+With a newline.""", |
+ 'caption': 'Caption of policy.', |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.13', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ POLICY !!StringPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!StringPolicy_Explain |
+ |
+ PART !!StringPolicy_Part EDITTEXT |
+ VALUENAME "StringPolicy" |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.13" |
+chromium="Chromium" |
+StringPolicy_Policy="Caption of policy." |
+StringPolicy_Explain="Description of group.\\nWith a newline." |
+StringPolicy_Part="Caption of policy." |
+''') |
+ self.CompareOutputs(output, expected_output) |
+ |
+ def testIntPolicy(self): |
+ # Tests a policy group with a single policy of type 'string'. |
+ grd = self.PrepareTest(''' |
+ { |
+ 'policy_definitions': [ |
+ { |
+ 'name': 'IntPolicy', |
+ 'type': 'int', |
+ 'caption': 'Caption of policy.', |
+ 'desc': 'Description of policy.', |
+ 'supported_on': ['chrome.win:8-'] |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.13', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ POLICY !!IntPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!IntPolicy_Explain |
+ |
+ PART !!IntPolicy_Part NUMERIC |
+ VALUENAME "IntPolicy" |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.13" |
+chromium="Chromium" |
+IntPolicy_Policy="Caption of policy." |
+IntPolicy_Explain="Description of policy." |
+IntPolicy_Part="Caption of policy." |
+''') |
+ 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', |
+ 'items': [ |
+ { |
+ 'name': 'ProxyServerDisabled', |
+ 'value': 0, |
+ 'caption': 'Option1', |
+ }, |
+ { |
+ 'name': 'ProxyServerAutoDetect', |
+ 'value': 1, |
+ 'caption': 'Option2', |
+ }, |
+ ], |
+ 'desc': 'Description of policy.', |
+ 'caption': 'Caption of policy.', |
+ 'supported_on': ['chrome.win:8-'] |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.14', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_google_chrome': '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!google |
+ CATEGORY !!googlechrome |
+ KEYNAME "Software\\Policies\\Google\\Chrome" |
+ |
+ POLICY !!EnumPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!EnumPolicy_Explain |
+ |
+ PART !!EnumPolicy_Part DROPDOWNLIST |
+ VALUENAME "EnumPolicy" |
+ ITEMLIST |
+ NAME !!ProxyServerDisabled_DropDown VALUE NUMERIC 0 |
+ NAME !!ProxyServerAutoDetect_DropDown VALUE NUMERIC 1 |
+ END ITEMLIST |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.14" |
+google="Google" |
+googlechrome="Google Chrome" |
+EnumPolicy_Policy="Caption of policy." |
+EnumPolicy_Explain="Description of policy." |
+EnumPolicy_Part="Caption of policy." |
+ProxyServerDisabled_DropDown="Option1" |
+ProxyServerAutoDetect_DropDown="Option2" |
+''') |
+ self.CompareOutputs(output, expected_output) |
+ |
+ def testStringEnumPolicy(self): |
+ # Tests a policy group with a single policy of type 'int-enum'. |
+ grd = self.PrepareTest(''' |
+ { |
+ 'policy_definitions': [ |
+ { |
+ 'name': 'EnumPolicy', |
+ 'type': 'string-enum', |
+ 'caption': 'Caption of policy.', |
+ 'desc': 'Description of policy.', |
+ 'items': [ |
+ {'name': 'ProxyServerDisabled', 'value': 'one', |
+ 'caption': 'Option1'}, |
+ {'name': 'ProxyServerAutoDetect', 'value': 'two', |
+ 'caption': 'Option2'}, |
+ ], |
+ 'supported_on': ['chrome.win:8-'] |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.14', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_google_chrome': '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!google |
+ CATEGORY !!googlechrome |
+ KEYNAME "Software\\Policies\\Google\\Chrome" |
+ |
+ POLICY !!EnumPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!EnumPolicy_Explain |
+ |
+ PART !!EnumPolicy_Part DROPDOWNLIST |
+ VALUENAME "EnumPolicy" |
+ ITEMLIST |
+ NAME !!ProxyServerDisabled_DropDown VALUE "one" |
+ NAME !!ProxyServerAutoDetect_DropDown VALUE "two" |
+ END ITEMLIST |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.14" |
+google="Google" |
+googlechrome="Google Chrome" |
+EnumPolicy_Policy="Caption of policy." |
+EnumPolicy_Explain="Description of policy." |
+EnumPolicy_Part="Caption of policy." |
+ProxyServerDisabled_DropDown="Option1" |
+ProxyServerAutoDetect_DropDown="Option2" |
+''') |
+ 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', |
+ 'supported_on': ['chrome.win:8-'], |
+ 'desc': """Description of list policy. |
+With a newline.""", |
+ 'caption': 'Caption of list policy.', |
+ 'label': 'Label of list policy.' |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.15', 'desc': 'blah' |
+ } |
+ }, |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ POLICY !!ListPolicy_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!ListPolicy_Explain |
+ |
+ PART !!ListPolicy_Part LISTBOX |
+ KEYNAME "Software\\Policies\\Chromium\\ListPolicy" |
+ VALUEPREFIX "" |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.15" |
+chromium="Chromium" |
+ListPolicy_Policy="Caption of list policy." |
+ListPolicy_Explain="Description of list policy.\\nWith a newline." |
+ListPolicy_Part="Label of list policy." |
+''') |
+ 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 ADM file. |
+ grd = self.PrepareTest(''' |
+ { |
+ 'policy_definitions': [ |
+ { |
+ 'name': 'NonWinGroup', |
+ 'type': 'group', |
+ 'policies': [{ |
+ 'name': 'NonWinPolicy', |
+ 'type': 'list', |
+ 'supported_on': ['chrome.linux:8-', 'chrome.mac:8-'], |
+ 'caption': 'Caption of list policy.', |
+ 'desc': 'Desc of list policy.', |
+ }], |
+ 'caption': 'Group caption.', |
+ 'desc': 'Group description.', |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.16', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.16" |
+chromium="Chromium" |
+''') |
+ 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', |
+ 'desc': 'Description of group.', |
+ 'caption': 'Caption of group.', |
+ 'policies': [{ |
+ 'name': 'Policy1', |
+ 'type': 'list', |
+ 'supported_on': ['chrome.win:8-'], |
+ 'caption': 'Caption of policy1.', |
+ 'desc': """Description of policy1. |
+With a newline.""" |
+ },{ |
+ 'name': 'Policy2', |
+ 'type': 'string', |
+ 'supported_on': ['chrome.win:8-'], |
+ 'caption': 'Caption of policy2.', |
+ 'desc': """Description of policy2. |
+With a newline.""" |
+ }], |
+ }, |
+ ], |
+ 'placeholders': [], |
+ 'messages': { |
+ 'win_supported_winxpsp2': { |
+ 'text': 'At least Windows 3.16', 'desc': 'blah' |
+ } |
+ } |
+ }''') |
+ output = self.GetOutput(grd, 'fr', {'_chromium' : '1'}, 'adm', 'en') |
+ expected_output = self.ConstructOutput( |
+ ['MACHINE', 'USER'], ''' |
+ CATEGORY !!chromium |
+ KEYNAME "Software\\Policies\\Chromium" |
+ |
+ CATEGORY !!Group1_Category |
+ POLICY !!Policy1_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!Policy1_Explain |
+ |
+ PART !!Policy1_Part LISTBOX |
+ KEYNAME "Software\\Policies\\Chromium\\Policy1" |
+ VALUEPREFIX "" |
+ END PART |
+ END POLICY |
+ |
+ POLICY !!Policy2_Policy |
+ #if version >= 4 |
+ SUPPORTED !!SUPPORTED_WINXPSP2 |
+ #endif |
+ EXPLAIN !!Policy2_Explain |
+ |
+ PART !!Policy2_Part EDITTEXT |
+ VALUENAME "Policy2" |
+ END PART |
+ END POLICY |
+ |
+ END CATEGORY |
+ |
+ END CATEGORY |
+ |
+''', '''[Strings] |
+SUPPORTED_WINXPSP2="At least Windows 3.16" |
+chromium="Chromium" |
+Group1_Category="Caption of group." |
+Policy1_Policy="Caption of policy1." |
+Policy1_Explain="Description of policy1.\\nWith a newline." |
+Policy1_Part="Caption of policy1." |
+Policy2_Policy="Caption of policy2." |
+Policy2_Explain="Description of policy2.\\nWith a newline." |
+Policy2_Part="Caption of policy2." |
+''') |
+ self.CompareOutputs(output, expected_output) |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
Property changes on: grit/format/policy_templates/writers/adm_writer_unittest.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |