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): ...@@ -108,7 +108,7 @@ class JamfWriter(template_writer.TemplateWriter):
if 'minimum' in policy['schema']: if 'minimum' in policy['schema']:
policy_output['minimum'] = policy['schema']['minimum'] policy_output['minimum'] = policy['schema']['minimum']
if 'maximum' in policy['schema']: if 'maximum' in policy['schema']:
policy_output['properties']['maximum'] = policy['schema']['maximum'] policy_output['maximum'] = policy['schema']['maximum']
elif policy['type'] == 'list': elif policy['type'] == 'list':
policy_output['items'] = policy['schema']['items'] policy_output['items'] = policy['schema']['items']
elif policy['type'] == 'string-enum-list' or policy[ elif policy['type'] == 'string-enum-list' or policy[
......
...@@ -15,6 +15,10 @@ import json ...@@ -15,6 +15,10 @@ import json
from writers import writer_unittest_common 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): class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'''Unit tests for JamfWriter.''' '''Unit tests for JamfWriter.'''
...@@ -53,10 +57,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): ...@@ -53,10 +57,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'placeholders': [], 'placeholders': [],
'messages': {}, 'messages': {},
} }
return json.dumps(template, return _JsonFormat(template)
indent=2,
sort_keys=True,
separators=(',', ': '))
def _GetExpectedOutput(self, policy_name, policy_type, policy_caption, def _GetExpectedOutput(self, policy_name, policy_type, policy_caption,
initial_type): initial_type):
...@@ -96,7 +97,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): ...@@ -96,7 +97,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'title': 'title_obj' 'title': 'title_obj'
} }
return json.dumps(output, indent=2, sort_keys=True, separators=(',', ': ')) return _JsonFormat(output)
def testStringPolicy(self): def testStringPolicy(self):
policy_json = self._GetTestPolicyTemplate('stringPolicy', 'string', '', policy_json = self._GetTestPolicyTemplate('stringPolicy', 'string', '',
...@@ -114,6 +115,48 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): ...@@ -114,6 +115,48 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf') output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf')
self.assertEquals(output.strip(), expected.strip()) 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): def testIntEnumPolicy(self):
policy_json = self._GetTestPolicyTemplate('intPolicy', 'int-enum', '', policy_json = self._GetTestPolicyTemplate('intPolicy', 'int-enum', '',
'An int-enum policy') 'An int-enum policy')
...@@ -203,10 +246,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): ...@@ -203,10 +246,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'placeholders': [], 'placeholders': [],
'messages': {}, 'messages': {},
} }
policy_json = json.dumps(template, policy_json = _JsonFormat(template)
indent=2,
sort_keys=True,
separators=(',', ': '))
expected = { expected = {
'description': 'Google Chrome', 'description': 'Google Chrome',
...@@ -237,10 +277,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): ...@@ -237,10 +277,7 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon):
'items': copy.deepcopy(expected['properties']['name']['items']) 'items': copy.deepcopy(expected['properties']['name']['items'])
} }
output_expected = json.dumps(expected, output_expected = _JsonFormat(expected)
indent=2,
sort_keys=True,
separators=(',', ': '))
output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf') output = self.GetOutput(policy_json, {'_google_chrome': '1'}, 'jamf')
self.assertEquals(output.strip(), output_expected.strip()) 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