Index: grit/format/policy_templates/writers/plist_writer_unittest.py |
=================================================================== |
--- grit/format/policy_templates/writers/plist_writer_unittest.py (revision 202) |
+++ grit/format/policy_templates/writers/plist_writer_unittest.py (working copy) |
@@ -1,691 +0,0 @@ |
-#!/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.plist_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 PListWriterUnittest(writer_unittest_common.WriterUnittestCommon): |
- '''Unit tests for PListWriter.''' |
- |
- def _GetExpectedOutputs(self, product_name, bundle_id, policies): |
- '''Substitutes the variable parts into a plist template. The result |
- of this function can be used as an expected result to test the output |
- of PListWriter. |
- |
- Args: |
- product_name: The name of the product, normally Chromium or Google Chrome. |
- bundle_id: The mac bundle id of the product. |
- policies: The list of policies. |
- |
- Returns: |
- The text of a plist template with the variable parts substituted. |
- ''' |
- return ''' |
-<?xml version="1.0" ?> |
-<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> |
-<plist version="1"> |
- <dict> |
- <key>pfm_name</key> |
- <string>%s</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_version</key> |
- <string>1</string> |
- <key>pfm_domain</key> |
- <string>%s</string> |
- <key>pfm_subkeys</key> |
- %s |
- </dict> |
-</plist>''' % (product_name, bundle_id, policies) |
- |
- def _GetExpectedOutputsWithVersion(self, product_name, bundle_id, policies, |
- version): |
- '''Substitutes the variable parts into a plist template. The result |
- of this function can be used as an expected result to test the output |
- of PListWriter. |
- |
- Args: |
- product_name: The name of the product, normally Chromium or Google Chrome. |
- bundle_id: The mac bundle id of the product. |
- policies: The list of policies. |
- |
- Returns: |
- The text of a plist template with the variable parts substituted. |
- ''' |
- return ''' |
-<?xml version="1.0" ?> |
-<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> |
-<plist version="1"> |
- <dict> |
- <key>pfm_name</key> |
- <string>%s</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_version</key> |
- <string>1</string> |
- <key>pfm_domain</key> |
- <string>%s</string> |
- <key>pfm_subkeys</key> |
- %s |
- </dict> |
- <!--%s--> |
-</plist>''' % (product_name, bundle_id, policies, version) |
- |
- def testEmpty(self): |
- # Test PListWriter in case of empty polices. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium': '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '<array/>') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testEmptyVersion(self): |
- # Test PListWriter in case of empty polices. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium': '1', |
- 'mac_bundle_id': 'com.example.Test', |
- 'version': '39.0.0.0'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputsWithVersion( |
- 'Chromium', |
- 'com.example.Test', |
- '<array/>', |
- 'chromium version: 39.0.0.0') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testMainPolicy(self): |
- # Tests a policy group with a single policy of type 'main'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'MainGroup', |
- 'type': 'group', |
- 'policies': [{ |
- 'name': 'MainPolicy', |
- 'type': 'main', |
- 'desc': '', |
- 'caption': '', |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- 'desc': '', |
- 'caption': '', |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {} |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>MainPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>boolean</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testRecommendedPolicy(self): |
- # Tests a policy group with a single policy of type 'main'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'MainGroup', |
- 'type': 'group', |
- 'policies': [{ |
- 'name': 'MainPolicy', |
- 'type': 'main', |
- 'desc': '', |
- 'caption': '', |
- 'features': { |
- 'can_be_recommended' : True |
- }, |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- 'desc': '', |
- 'caption': '', |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {} |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>MainPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user</string> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>boolean</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testRecommendedOnlyPolicy(self): |
- # Tests a policy group with a single policy of type 'main'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'MainGroup', |
- 'type': 'group', |
- 'policies': [{ |
- 'name': 'MainPolicy', |
- 'type': 'main', |
- 'desc': '', |
- 'caption': '', |
- 'features': { |
- 'can_be_recommended' : True, |
- 'can_be_mandatory' : False |
- }, |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- 'desc': '', |
- 'caption': '', |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {} |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>MainPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user</string> |
- </array> |
- <key>pfm_type</key> |
- <string>boolean</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testStringPolicy(self): |
- # Tests a policy group with a single policy of type 'string'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'StringGroup', |
- 'type': 'group', |
- 'desc': '', |
- 'caption': '', |
- 'policies': [{ |
- 'name': 'StringPolicy', |
- 'type': 'string', |
- 'supported_on': ['chrome.mac:8-'], |
- 'desc': '', |
- 'caption': '', |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>StringPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>string</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testListPolicy(self): |
- # Tests a policy group with a single policy of type 'list'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'ListGroup', |
- 'type': 'group', |
- 'desc': '', |
- 'caption': '', |
- 'policies': [{ |
- 'name': 'ListPolicy', |
- 'type': 'list', |
- 'schema': { |
- 'type': 'array', |
- 'items': { 'type': 'string' }, |
- }, |
- 'supported_on': ['chrome.mac:8-'], |
- 'desc': '', |
- 'caption': '', |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>ListPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>array</string> |
- <key>pfm_subkeys</key> |
- <array> |
- <dict> |
- <key>pfm_type</key> |
- <string>string</string> |
- </dict> |
- </array> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testStringEnumListPolicy(self): |
- # Tests a policy group with a single policy of type 'string-enum-list'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'ListGroup', |
- 'type': 'group', |
- 'desc': '', |
- 'caption': '', |
- 'policies': [{ |
- 'name': 'ListPolicy', |
- 'type': 'string-enum-list', |
- 'schema': { |
- 'type': 'array', |
- 'items': { 'type': 'string' }, |
- }, |
- 'items': [ |
- {'name': 'ProxyServerDisabled', 'value': 'one', 'caption': ''}, |
- {'name': 'ProxyServerAutoDetect', 'value': 'two', 'caption': ''}, |
- ], |
- 'supported_on': ['chrome.mac:8-'], |
- 'supported_on': ['chrome.mac:8-'], |
- 'desc': '', |
- 'caption': '', |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>ListPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>array</string> |
- <key>pfm_subkeys</key> |
- <array> |
- <dict> |
- <key>pfm_type</key> |
- <string>string</string> |
- </dict> |
- </array> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testIntPolicy(self): |
- # Tests a policy group with a single policy of type 'int'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'IntGroup', |
- 'type': 'group', |
- 'caption': '', |
- 'desc': '', |
- 'policies': [{ |
- 'name': 'IntPolicy', |
- 'type': 'int', |
- 'caption': '', |
- 'desc': '', |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>IntPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>integer</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testIntEnumPolicy(self): |
- # Tests a policy group with a single policy of type 'int-enum'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'EnumGroup', |
- 'type': 'group', |
- 'caption': '', |
- 'desc': '', |
- 'policies': [{ |
- 'name': 'EnumPolicy', |
- 'type': 'int-enum', |
- 'desc': '', |
- 'caption': '', |
- 'items': [ |
- {'name': 'ProxyServerDisabled', 'value': 0, 'caption': ''}, |
- {'name': 'ProxyServerAutoDetect', 'value': 1, 'caption': ''}, |
- ], |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Google_Chrome', 'com.example.Test2', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>EnumPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>integer</string> |
- <key>pfm_range_list</key> |
- <array> |
- <integer>0</integer> |
- <integer>1</integer> |
- </array> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testStringEnumPolicy(self): |
- # Tests a policy group with a single policy of type 'string-enum'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'EnumGroup', |
- 'type': 'group', |
- 'caption': '', |
- 'desc': '', |
- 'policies': [{ |
- 'name': 'EnumPolicy', |
- 'type': 'string-enum', |
- 'desc': '', |
- 'caption': '', |
- 'items': [ |
- {'name': 'ProxyServerDisabled', 'value': 'one', 'caption': ''}, |
- {'name': 'ProxyServerAutoDetect', 'value': 'two', 'caption': ''}, |
- ], |
- 'supported_on': ['chrome.mac:8-'], |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Google_Chrome', 'com.example.Test2', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>EnumPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>string</string> |
- <key>pfm_range_list</key> |
- <array> |
- <string>one</string> |
- <string>two</string> |
- </array> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testDictionaryPolicy(self): |
- # Tests a policy group with a single policy of type 'dict'. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'DictionaryGroup', |
- 'type': 'group', |
- 'desc': '', |
- 'caption': '', |
- 'policies': [{ |
- 'name': 'DictionaryPolicy', |
- 'type': 'dict', |
- 'supported_on': ['chrome.mac:8-'], |
- 'desc': '', |
- 'caption': '', |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_chromium' : '1', 'mac_bundle_id': 'com.example.Test'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Chromium', 'com.example.Test', '''<array> |
- <dict> |
- <key>pfm_name</key> |
- <string>DictionaryPolicy</string> |
- <key>pfm_description</key> |
- <string/> |
- <key>pfm_title</key> |
- <string/> |
- <key>pfm_targets</key> |
- <array> |
- <string>user-managed</string> |
- </array> |
- <key>pfm_type</key> |
- <string>dictionary</string> |
- </dict> |
- </array>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- def testNonSupportedPolicy(self): |
- # Tests a policy that is not supported on Mac, so it shouldn't |
- # be included in the plist file. |
- grd = self.PrepareTest(''' |
- { |
- 'policy_definitions': [ |
- { |
- 'name': 'NonMacGroup', |
- 'type': 'group', |
- 'caption': '', |
- 'desc': '', |
- 'policies': [{ |
- 'name': 'NonMacPolicy', |
- 'type': 'string', |
- 'supported_on': ['chrome.linux:8-', 'chrome.win:7-'], |
- 'caption': '', |
- 'desc': '', |
- }], |
- }, |
- ], |
- 'placeholders': [], |
- 'messages': {}, |
- }''') |
- output = self.GetOutput( |
- grd, |
- 'fr', |
- {'_google_chrome': '1', 'mac_bundle_id': 'com.example.Test2'}, |
- 'plist', |
- 'en') |
- expected_output = self._GetExpectedOutputs( |
- 'Google_Chrome', 'com.example.Test2', '''<array/>''') |
- self.assertEquals(output.strip(), expected_output.strip()) |
- |
- |
-if __name__ == '__main__': |
- unittest.main() |