Index: grit/format/policy_templates/writers/admx_writer_unittest.py |
=================================================================== |
--- grit/format/policy_templates/writers/admx_writer_unittest.py (revision 0) |
+++ grit/format/policy_templates/writers/admx_writer_unittest.py (revision 0) |
@@ -0,0 +1,343 @@ |
+#!/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. |
+ |
+ |
+"""Unittests for grit.format.policy_templates.writers.admx_writer.""" |
+ |
+ |
+import os |
+import sys |
+import unittest |
+if __name__ == '__main__': |
+ sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '../../../..')) |
+ |
+ |
+from grit.format.policy_templates.writers import admx_writer |
+from grit.format.policy_templates.writers import xml_writer_base_unittest |
+from xml.dom import minidom |
+ |
+ |
+class AdmxWriterTest(xml_writer_base_unittest.XmlWriterBaseTest): |
+ |
+ def _CreateDocumentElement(self): |
+ dom_impl = minidom.getDOMImplementation('') |
+ doc = dom_impl.createDocument(None, 'root', None) |
+ return doc.documentElement |
+ |
+ def setUp(self): |
+ # Writer configuration. This dictionary contains parameter used by the ADMX |
+ # Writer |
+ config = { |
+ 'win_group_policy_class': 'TestClass', |
+ 'win_supported_os': 'SUPPORTED_TESTOS', |
+ 'win_reg_key_name': 'Software\\Policies\\Test', |
+ 'win_category_path': ['test_category'], |
+ 'admx_namespace': 'ADMXWriter.Test.Namespace', |
+ 'admx_prefix': 'test_prefix' |
+ } |
+ self.writer = admx_writer.GetWriter(config) |
+ self.writer.Init() |
+ |
+ def _GetPoliciesElement(self, doc): |
+ node_list = doc.getElementsByTagName('policies') |
+ self.assertTrue(node_list.length == 1) |
+ return node_list.item(0) |
+ |
+ def _GetCategoriesElement(self, doc): |
+ node_list = doc.getElementsByTagName('categories') |
+ self.assertTrue(node_list.length == 1) |
+ return node_list.item(0) |
+ |
+ def testEmpty(self): |
+ self.writer.BeginTemplate() |
+ self.writer.EndTemplate() |
+ |
+ output = self.writer.GetTemplateText() |
+ expected_output = ( |
+ '<?xml version="1.0" ?>\n' |
+ '<policyDefinitions revision="1.0" schemaVersion="1.0">\n' |
+ ' <policyNamespaces>\n' |
+ ' <target namespace="ADMXWriter.Test.Namespace"' |
+ ' prefix="test_prefix"/>\n' |
+ ' <using namespace="Microsoft.Policies.Windows" prefix="windows"/>\n' |
+ ' </policyNamespaces>\n' |
+ ' <resources minRequiredRevision="1.0"/>\n' |
+ ' <supportedOn>\n' |
+ ' <definitions>\n' |
+ ' <definition displayName="' |
+ '$(string.SUPPORTED_TESTOS)" name="SUPPORTED_TESTOS"/>\n' |
+ ' </definitions>\n' |
+ ' </supportedOn>\n' |
+ ' <categories>\n' |
+ ' <category displayName="$(string.test_category)"' |
+ ' name="test_category"/>\n' |
+ ' </categories>\n' |
+ ' <policies/>\n' |
+ '</policyDefinitions>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testEmptyPolicyGroup(self): |
+ empty_policy_group = { |
+ 'name': 'PolicyGroup', |
+ 'policies': [] |
+ } |
+ # Initialize writer to write a policy group. |
+ self.writer.BeginTemplate() |
+ # Write policy group |
+ self.writer.BeginPolicyGroup(empty_policy_group) |
+ self.writer.EndPolicyGroup() |
+ |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = '' |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ output = self.GetXMLOfChildren( |
+ self._GetCategoriesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<category displayName="$(string.test_category)"' |
+ ' name="test_category"/>\n' |
+ '<category displayName="$(string.PolicyGroup_group)"' |
+ ' name="PolicyGroup">\n' |
+ ' <parentCategory ref="test_category"/>\n' |
+ '</category>') |
+ |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testPolicyGroup(self): |
+ empty_policy_group = { |
+ 'name': 'PolicyGroup', |
+ 'policies': [ |
+ {'name': 'PolicyStub2', |
+ 'type': 'main'}, |
+ {'name': 'PolicyStub1', |
+ 'type': 'main'}, |
+ ] |
+ } |
+ # Initialize writer to write a policy group. |
+ self.writer.BeginTemplate() |
+ # Write policy group |
+ self.writer.BeginPolicyGroup(empty_policy_group) |
+ self.writer.EndPolicyGroup() |
+ |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = '' |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ output = self.GetXMLOfChildren( |
+ self._GetCategoriesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<category displayName="$(string.test_category)"' |
+ ' name="test_category"/>\n' |
+ '<category displayName="$(string.PolicyGroup_group)"' |
+ ' name="PolicyGroup">\n' |
+ ' <parentCategory ref="test_category"/>\n' |
+ '</category>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ |
+ def _initWriterForPolicy(self, writer, policy): |
+ '''Initializes the writer to write the given policy next. |
+ ''' |
+ policy_group = { |
+ 'name': 'PolicyGroup', |
+ 'policies': [policy] |
+ } |
+ writer.BeginTemplate() |
+ writer.BeginPolicyGroup(policy_group) |
+ |
+ def testMainPolicy(self): |
+ main_policy = { |
+ 'name': 'DummyMainPolicy', |
+ 'type': 'main', |
+ } |
+ |
+ self._initWriterForPolicy(self.writer, main_policy) |
+ |
+ self.writer.WritePolicy(main_policy) |
+ |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<policy class="TestClass" displayName="$(string.DummyMainPolicy)"' |
+ ' explainText="$(string.DummyMainPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="DummyMainPolicy"' |
+ ' presentation="$(presentation.DummyMainPolicy)"' |
+ ' valueName="DummyMainPolicy">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <enabledValue>\n' |
+ ' <decimal value="1"/>\n' |
+ ' </enabledValue>\n' |
+ ' <disabledValue>\n' |
+ ' <decimal value="0"/>\n' |
+ ' </disabledValue>\n' |
+ '</policy>') |
+ |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testStringPolicy(self): |
+ string_policy = { |
+ 'name': 'SampleStringPolicy', |
+ 'type': 'string', |
+ } |
+ self._initWriterForPolicy(self.writer, string_policy) |
+ |
+ self.writer.WritePolicy(string_policy) |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<policy class="TestClass" displayName="$(string.SampleStringPolicy)"' |
+ ' explainText="$(string.SampleStringPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="SampleStringPolicy"' |
+ ' presentation="$(presentation.SampleStringPolicy)">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <elements>\n' |
+ ' <text id="SampleStringPolicy" valueName="SampleStringPolicy"/>\n' |
+ ' </elements>\n' |
+ '</policy>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testIntPolicy(self): |
+ int_policy = { |
+ 'name': 'SampleIntPolicy', |
+ 'type': 'int', |
+ } |
+ self._initWriterForPolicy(self.writer, int_policy) |
+ |
+ self.writer.WritePolicy(int_policy) |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<policy class="TestClass" displayName="$(string.SampleIntPolicy)"' |
+ ' explainText="$(string.SampleIntPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="SampleIntPolicy"' |
+ ' presentation="$(presentation.SampleIntPolicy)">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <elements>\n' |
+ ' <decimal id="SampleIntPolicy" valueName="SampleIntPolicy"/>\n' |
+ ' </elements>\n' |
+ '</policy>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testIntEnumPolicy(self): |
+ enum_policy = { |
+ 'name': 'SampleEnumPolicy', |
+ 'type': 'int-enum', |
+ 'items': [ |
+ {'name': 'item_1', 'value': 0}, |
+ {'name': 'item_2', 'value': 1}, |
+ ] |
+ } |
+ |
+ self._initWriterForPolicy(self.writer, enum_policy) |
+ self.writer.WritePolicy(enum_policy) |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<policy class="TestClass" displayName="$(string.SampleEnumPolicy)"' |
+ ' explainText="$(string.SampleEnumPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="SampleEnumPolicy"' |
+ ' presentation="$(presentation.SampleEnumPolicy)">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <elements>\n' |
+ ' <enum id="SampleEnumPolicy" valueName="SampleEnumPolicy">\n' |
+ ' <item displayName="$(string.item_1)">\n' |
+ ' <value>\n' |
+ ' <decimal value="0"/>\n' |
+ ' </value>\n' |
+ ' </item>\n' |
+ ' <item displayName="$(string.item_2)">\n' |
+ ' <value>\n' |
+ ' <decimal value="1"/>\n' |
+ ' </value>\n' |
+ ' </item>\n' |
+ ' </enum>\n' |
+ ' </elements>\n' |
+ '</policy>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testStringEnumPolicy(self): |
+ enum_policy = { |
+ 'name': 'SampleEnumPolicy', |
+ 'type': 'string-enum', |
+ 'items': [ |
+ {'name': 'item_1', 'value': 'one'}, |
+ {'name': 'item_2', 'value': 'two'}, |
+ ] |
+ } |
+ |
+ # This test is different than the others because it also tests that space |
+ # usage inside <string> nodes is correct. |
+ dom_impl = minidom.getDOMImplementation('') |
+ self.writer._doc = dom_impl.createDocument(None, 'policyDefinitions', None) |
+ self.writer._active_policies_elem = self.writer._doc.documentElement |
+ self.writer._active_policy_group_name = 'PolicyGroup' |
+ self.writer.WritePolicy(enum_policy) |
+ output = self.writer.GetTemplateText() |
+ expected_output = ( |
+ '<?xml version="1.0" ?>\n' |
+ '<policyDefinitions>\n' |
+ ' <policy class="TestClass" displayName="$(string.SampleEnumPolicy)"' |
+ ' explainText="$(string.SampleEnumPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="SampleEnumPolicy"' |
+ ' presentation="$(presentation.SampleEnumPolicy)">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <elements>\n' |
+ ' <enum id="SampleEnumPolicy" valueName="SampleEnumPolicy">\n' |
+ ' <item displayName="$(string.item_1)">\n' |
+ ' <value>\n' |
+ ' <string>one</string>\n' |
+ ' </value>\n' |
+ ' </item>\n' |
+ ' <item displayName="$(string.item_2)">\n' |
+ ' <value>\n' |
+ ' <string>two</string>\n' |
+ ' </value>\n' |
+ ' </item>\n' |
+ ' </enum>\n' |
+ ' </elements>\n' |
+ ' </policy>\n' |
+ '</policyDefinitions>') |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testListPolicy(self): |
+ list_policy = { |
+ 'name': 'SampleListPolicy', |
+ 'type': 'list', |
+ } |
+ self._initWriterForPolicy(self.writer, list_policy) |
+ self.writer.WritePolicy(list_policy) |
+ output = self.GetXMLOfChildren(self._GetPoliciesElement(self.writer._doc)) |
+ expected_output = ( |
+ '<policy class="TestClass" displayName="$(string.SampleListPolicy)"' |
+ ' explainText="$(string.SampleListPolicy_Explain)"' |
+ ' key="Software\\Policies\\Test" name="SampleListPolicy"' |
+ ' presentation="$(presentation.SampleListPolicy)">\n' |
+ ' <parentCategory ref="PolicyGroup"/>\n' |
+ ' <supportedOn ref="SUPPORTED_TESTOS"/>\n' |
+ ' <elements>\n' |
+ ' <list id="SampleListPolicyDesc"' |
+ ' key="Software\Policies\Test\SampleListPolicy" valuePrefix=""/>\n' |
+ ' </elements>\n' |
+ '</policy>') |
+ |
+ self.AssertXMLEquals(output, expected_output) |
+ |
+ def testPlatform(self): |
+ # Test that the writer correctly chooses policies of platform Windows. |
+ self.assertTrue(self.writer.IsPolicySupported({ |
+ 'supported_on': [ |
+ {'platforms': ['win', 'zzz']}, {'platforms': ['aaa']} |
+ ] |
+ })) |
+ self.assertFalse(self.writer.IsPolicySupported({ |
+ 'supported_on': [ |
+ {'platforms': ['mac', 'linux']}, {'platforms': ['aaa']} |
+ ] |
+ })) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
Property changes on: grit/format/policy_templates/writers/admx_writer_unittest.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |