def test_deployment_prompt_alphabetical_order(self): # check that params are prompted for in alphabetical order when the file is loaded with preserve_order=False curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace( '\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace( '\\', '\\\\') parameters_with_reference_path = os.path.join( curr_dir, 'param-validation-ref-params.json').replace('\\', '\\\\') template = get_file_json(template_path, preserve_order=False) template_param_defs = template.get('parameters', {}) parameter_list = [[parameters_path], [parameters_with_reference_path]] result_parameters = _process_parameters(template_param_defs, parameter_list) missing_parameters = _find_missing_parameters(result_parameters, template) param_alpha_order = [ "[u'arrayParam', u'boolParam', u'enumParam', u'objectParam', u'secureParam']", "['arrayParam', 'boolParam', 'enumParam', 'objectParam', 'secureParam']" ] results = _prompt_for_parameters(dict(missing_parameters), fail_on_no_tty=False) self.assertTrue(str(list(results.keys())) in param_alpha_order)
def test_deployment_missing_values(self): curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace( '\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace( '\\', '\\\\') parameters_with_reference_path = os.path.join( curr_dir, 'param-validation-ref-params.json').replace('\\', '\\\\') template = get_file_json(template_path, preserve_order=True) template_param_defs = template.get('parameters', {}) parameter_list = [[parameters_path], [parameters_with_reference_path]] result_parameters = _process_parameters(template_param_defs, parameter_list) missing_parameters = _find_missing_parameters(result_parameters, template) # ensure that parameters with default values are not considered missing params_with_defaults = [ x for x in template_param_defs if 'defaultValue' in template_param_defs[x] ] for item in params_with_defaults: self.assertTrue(item not in missing_parameters) # ensure that a parameter that specifies a reference does not prompt self.assertTrue('secretReference' not in missing_parameters) self.assertTrue('secretReference' in result_parameters)
def test_deployment_parameters(self): curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace( '\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace( '\\', '\\\\') template = get_file_json(template_path, preserve_order=True) template_param_defs = template.get('parameters', {}) # test different ways of passing in parameters tests = [ { # empty JSON works "parameter_list": [["{}"]], "expected": {}, }, { # empty parameters works "parameter_list": [], "expected": {}, }, { # loading from file "parameter_list": [[parameters_path]], "expected": {"stringParam": {"value": "foo"}, "intParam": {"value": 10}, "madeupParam": {"value": "bar"}}, }, { # KEY=VALUE syntax with extra equal sign "parameter_list": [['stringParam=foo=bar']], "expected": {"stringParam": {"value": "foo=bar"}}, }, { # raw JSON (same as @file) "parameter_list": [['{\"stringParam\": {\"value\": \"foo\"}}']], "expected": {"stringParam": {"value": "foo"}}, }, { # multiple KEY=VALUE "parameter_list": [['stringParam=foo', 'intParam=3']], "expected": {"stringParam": {"value": "foo"}, "intParam": {"value": 3}}, }, { # KEY=VALUE where last in wins "parameter_list": [['stringParam=foo', 'stringParam=bar']], "expected": {"stringParam": {"value": "bar"}}, }, { # file loading overriden by KEY=VALUE "parameter_list": [[parameters_path], ['stringParam=bar']], "expected": {"stringParam": {"value": "bar"}, "intParam": {"value": 10}, "madeupParam": {"value": "bar"}}, } ] for i, test in enumerate(tests): parameter_list = test['parameter_list'] result_parameters = _process_parameters(template_param_defs, parameter_list) self.assertEqual(result_parameters, test['expected'], i)
def test_deployment_parameters(self): curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace('\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace('\\', '\\\\') template = get_file_json(template_path, preserve_order=True) template_param_defs = template.get('parameters', {}) # test different ways of passing in parameters tests = [ { # empty JSON works "parameter_list": [["{}"]], "expected": {}, }, { # empty parameters works "parameter_list": [], "expected": {}, }, { # loading from file "parameter_list": [[parameters_path]], "expected": {"stringParam": {"value": "foo"}, "intParam": {"value": 10}, "madeupParam": {"value": "bar"}}, }, { # KEY=VALUE syntax with extra equal sign "parameter_list": [['stringParam=foo=bar']], "expected": {"stringParam": {"value": "foo=bar"}}, }, { # raw JSON (same as @file) "parameter_list": [['{\"stringParam\": {\"value\": \"foo\"}}']], "expected": {"stringParam": {"value": "foo"}}, }, { # multiple KEY=VALUE "parameter_list": [['stringParam=foo', 'intParam=3']], "expected": {"stringParam": {"value": "foo"}, "intParam": {"value": 3}}, }, { # KEY=VALUE where last in wins "parameter_list": [['stringParam=foo', 'stringParam=bar']], "expected": {"stringParam": {"value": "bar"}}, }, { # file loading overriden by KEY=VALUE "parameter_list": [[parameters_path], ['stringParam=bar']], "expected": {"stringParam": {"value": "bar"}, "intParam": {"value": 10}, "madeupParam": {"value": "bar"}}, } ] for i, test in enumerate(tests): parameter_list = test['parameter_list'] result_parameters = _process_parameters(template_param_defs, parameter_list) self.assertEqual(result_parameters, test['expected'], i)
def test_deployment_prompt_alphabetical_order(self): # check that params are prompted for in alphabetical order when the file is loaded with preserve_order=False curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace('\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace('\\', '\\\\') parameters_with_reference_path = os.path.join(curr_dir, 'param-validation-ref-params.json').replace('\\', '\\\\') template = get_file_json(template_path, preserve_order=False) template_param_defs = template.get('parameters', {}) parameter_list = [[parameters_path], [parameters_with_reference_path]] result_parameters = _process_parameters(template_param_defs, parameter_list) missing_parameters = _find_missing_parameters(result_parameters, template) param_alpha_order = ["[u'arrayParam', u'boolParam', u'enumParam', u'objectParam', u'secureParam']", "['arrayParam', 'boolParam', 'enumParam', 'objectParam', 'secureParam']"] results = _prompt_for_parameters(dict(missing_parameters), fail_on_no_tty=False) self.assertTrue(str(list(results.keys())) in param_alpha_order)
def test_deployment_missing_values(self): curr_dir = os.path.dirname(os.path.realpath(__file__)) template_path = os.path.join(curr_dir, 'param-validation-template.json').replace('\\', '\\\\') parameters_path = os.path.join(curr_dir, 'param-validation-params.json').replace('\\', '\\\\') parameters_with_reference_path = os.path.join(curr_dir, 'param-validation-ref-params.json').replace('\\', '\\\\') template = get_file_json(template_path, preserve_order=True) template_param_defs = template.get('parameters', {}) parameter_list = [[parameters_path], [parameters_with_reference_path]] result_parameters = _process_parameters(template_param_defs, parameter_list) missing_parameters = _find_missing_parameters(result_parameters, template) # ensure that parameters with default values are not considered missing params_with_defaults = [x for x in template_param_defs if 'defaultValue' in template_param_defs[x]] for item in params_with_defaults: self.assertTrue(item not in missing_parameters) # ensure that a parameter that specifies a reference does not prompt self.assertTrue('secretReference' not in missing_parameters) self.assertTrue('secretReference' in result_parameters)