Commit cfa39288 authored by Chris Sharp's avatar Chris Sharp Committed by Commit Bot

Fix crash in jamf_writer.py when int policy has maximum schema

Bug: 1115511
Change-Id: Idc0c4fef58ec3338157e11488cdba8d9ea87e434
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2351552
Commit-Queue: Chris Sharp <csharp@chromium.org>
Reviewed-by: default avatarYann Dago <ydago@chromium.org>
Cr-Commit-Position: refs/heads/master@{#797315}
parent 93304dcb
......@@ -108,7 +108,7 @@ class JamfWriter(template_writer.TemplateWriter):
if 'minimum' in policy['schema']:
policy_output['minimum'] = policy['schema']['minimum']
if 'maximum' in policy['schema']:
policy_output['properties']['maximum'] = policy['schema']['maximum']
policy_output['maximum'] = policy['schema']['maximum']
elif policy['type'] == 'list':
policy_output['items'] = policy['schema']['items']
elif policy['type'] == 'string-enum-list' or policy[
......
......@@ -15,6 +15,10 @@ import json
from writers import writer_unittest_common
def _JsonFormat(input):
return json.dumps(input, indent=2, sort_keys=True, separators=(',', ': '))
class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'''Unit tests for JamfWriter.'''
......@@ -53,10 +57,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'placeholders': [],
'messages': {},
}
return json.dumps(template,
indent=2,
sort_keys=True,
separators=(',', ': '))
return _JsonFormat(template)
def _GetExpectedOutput(self, policy_name, policy_type, policy_caption,
initial_type):
......@@ -96,7 +97,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'title': 'title_obj'
}
return json.dumps(output, indent=2, sort_keys=True, separators=(',', ': '))
return _JsonFormat(output)
def testStringPolicy(self):
policy_json = self._GetTestPolicyTemplate('stringPolicy', 'string', '',
......@@ -114,6 +115,48 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf')
self.assertEquals(output.strip(), expected.strip())
def testIntPolicyWithMinAndMax(self):
template = {
'policy_definitions': [{
'name': 'intPolicyWithMinAndMax',
'id': 1,
'type': 'int',
'supported_on': ['chrome.mac:*-'],
'caption': 'An int policy with min and max',
'desc': '',
'schema': {
'type': 'int',
'minimum': 0,
'maximum': 10
}
}],
'policy_atomic_group_definitions': [],
'placeholders': [],
'messages': {},
}
policy_json = _JsonFormat(template)
expected = {
'description': 'Google Chrome',
'options': {
'remove_empty_properties': True
},
'properties': {
'intPolicyWithMinAndMax': {
'description': 'An int policy with min and max',
'maximum': 10,
'minimum': 0,
'title': 'intPolicyWithMinAndMax',
'type': 'integer'
}
},
'title': 'com.google.chrome'
}
expected_json = _JsonFormat(expected)
output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf')
self.assertEquals(output.strip(), expected_json.strip())
def testIntEnumPolicy(self):
policy_json = self._GetTestPolicyTemplate('intPolicy', 'int-enum', '',
'An int-enum policy')
......@@ -203,10 +246,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'placeholders': [],
'messages': {},
}
policy_json = json.dumps(template,
indent=2,
sort_keys=True,
separators=(',', ': '))
policy_json = _JsonFormat(template)
expected = {
'description': 'Google Chrome',
......@@ -237,10 +277,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'items': copy.deepcopy(expected['properties']['name']['items'])
}
output_expected = json.dumps(expected,
indent=2,
sort_keys=True,
separators=(',', ': '))
output_expected = _JsonFormat(expected)
output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf')
self.assertEquals(output.strip(), output_expected.strip())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment