blob: fd051d1c953d9b335063d9ba5cf33e5f68d9411e [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 writers.template_writer'''
import os
import sys
if __name__ == '__main__':
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../..'))
import unittest
from writers import template_writer
POLICY_DEFS = [
{
'name': 'zp',
'type': 'string',
'caption': 'a1',
'supported_on': []
},
{
'type':
'group',
'caption':
'z_group1_caption',
'name':
'group1',
'policies': [{
'name': 'z0',
'type': 'string',
'supported_on': []
}, {
'name': 'a0',
'type': 'string',
'supported_on': []
}]
},
{
'type': 'group',
'caption': 'b_group2_caption',
'name': 'group2',
'policies': [{
'name': 'q',
'type': 'string',
'supported_on': []
}],
}, {
'name': 'ap',
'type': 'string',
'caption': 'a2',
'supported_on': []
}
]
GROUP_FIRST_SORTED_POLICY_DEFS = [
{
'type': 'group',
'caption': 'b_group2_caption',
'name': 'group2',
'policies': [{
'name': 'q',
'type': 'string',
'supported_on': []
}],
},
{
'type':
'group',
'caption':
'z_group1_caption',
'name':
'group1',
'policies': [{
'name': 'z0',
'type': 'string',
'supported_on': []
}, {
'name': 'a0',
'type': 'string',
'supported_on': []
}]
},
{
'name': 'ap',
'type': 'string',
'caption': 'a2',
'supported_on': []
},
{
'name': 'zp',
'type': 'string',
'caption': 'a1',
'supported_on': []
},
]
IGNORE_GROUPS_SORTED_POLICY_DEFS = [
{
'name': 'a0',
'type': 'string',
'supported_on': []
},
{
'name': 'ap',
'type': 'string',
'caption': 'a2',
'supported_on': []
},
{
'name': 'q',
'type': 'string',
'supported_on': []
},
{
'name': 'z0',
'type': 'string',
'supported_on': []
},
{
'name': 'zp',
'type': 'string',
'caption': 'a1',
'supported_on': []
},
]
class TemplateWriterUnittests(unittest.TestCase):
'''Unit tests for templater_writer.py.'''
def _IsPolicySupported(self, platform, version, policy):
tw = template_writer.TemplateWriter([platform], {'major_version': version})
if platform != '*':
self.assertEqual(
tw.IsPolicySupported(policy),
tw.IsPolicySupportedOnPlatform(policy, platform))
return tw.IsPolicySupported(policy)
def testSortingGroupsFirst(self):
tw = template_writer.TemplateWriter(None, None)
sorted_list = tw.SortPoliciesGroupsFirst(POLICY_DEFS)
self.assertEqual(sorted_list, GROUP_FIRST_SORTED_POLICY_DEFS)
def testSortingIgnoreGroups(self):
tw = template_writer.TemplateWriter(None, None)
sorted_list = tw.FlattenGroupsAndSortPolicies(POLICY_DEFS)
self.assertEqual(sorted_list, IGNORE_GROUPS_SORTED_POLICY_DEFS)
def testPoliciesIsNotSupported(self):
tw = template_writer.TemplateWriter(None, None)
self.assertFalse(tw.IsPolicySupported({'future': True}))
self.assertFalse(tw.IsPolicySupported({'deprecated': True}))
def testPoliciesIsSupportedOnCertainVersion(self):
platform = 'win'
policy = {
'supported_on': [{
'platforms': ['win'],
'since_version': '11',
'until_version': '12'
}]
}
self.assertFalse(self._IsPolicySupported(platform, 10, policy))
self.assertTrue(self._IsPolicySupported(platform, 11, policy))
self.assertTrue(self._IsPolicySupported(platform, 12, policy))
self.assertFalse(self._IsPolicySupported(platform, 13, policy))
policy = {
'supported_on': [{
'platforms': ['win'],
'since_version': '11',
'until_version': ''
}]
}
self.assertFalse(self._IsPolicySupported(platform, 10, policy))
self.assertTrue(self._IsPolicySupported(platform, 11, policy))
self.assertTrue(self._IsPolicySupported(platform, 12, policy))
self.assertTrue(self._IsPolicySupported(platform, 13, policy))
def testPoliciesIsSupportedOnMulitplePlatform(self):
policy = {
'supported_on': [{
'platforms': ['win'],
'since_version': '12',
'until_version': ''
}, {
'platforms': ['mac'],
'since_version': '11',
'until_version': ''
}]
}
self.assertFalse(self._IsPolicySupported('win', 11, policy))
self.assertTrue(self._IsPolicySupported('mac', 11, policy))
self.assertTrue(self._IsPolicySupported('*', 11, policy))
self.assertFalse(self._IsPolicySupported('*', 10, policy))
def testHasExpandedPolicyDescriptionForUrlSchema(self):
policy = {'url_schema': 'https://example.com/details', 'type': 'list'}
tw = template_writer.TemplateWriter(None, None)
self.assertTrue(tw.HasExpandedPolicyDescription(policy))
def testHasExpandedPolicyDescriptionForJSONPolicies(self):
policy = {'name': 'PolicyName', 'type': 'dict'}
tw = template_writer.TemplateWriter(None, None)
self.assertTrue(tw.HasExpandedPolicyDescription(policy))
def testGetExpandedPolicyDescriptionForUrlSchema(self):
policy = {'type': 'integer', 'url_schema': 'https://example.com/details'}
tw = template_writer.TemplateWriter(None, None)
tw.messages = {
'doc_schema_description_link': {
'text': '''See $6'''
},
}
expanded_description = tw.GetExpandedPolicyDescription(policy)
self.assertEqual(expanded_description, 'See https://example.com/details')
def testGetExpandedPolicyDescriptionForJSONPolicies(self):
policy = {'name': 'PolicyName', 'type': 'dict'}
tw = template_writer.TemplateWriter(None, None)
tw.messages = {
'doc_schema_description_link': {
'text': '''See $6'''
},
}
expanded_description = tw.GetExpandedPolicyDescription(policy)
self.assertEqual(
expanded_description,
'See https://cloud.google.com/docs/chrome-enterprise/policies/?policy=PolicyName'
)
if __name__ == '__main__':
unittest.main()