Added logic to validate the default values from the templates.
Incorporated the review comments and added unit testcase for the newly added method. Co-Authored-By: Sahdev Zala <spzala@us.ibm.com> Related-bug: #1567552 Change-Id: I41f574a353495f25957b9b25ce6368fe6e92dbc2
This commit is contained in:
parent
9fd69f2bed
commit
e55f28458c
@ -53,7 +53,7 @@ class Input(object):
|
|||||||
def validate(self, value=None):
|
def validate(self, value=None):
|
||||||
self._validate_field()
|
self._validate_field()
|
||||||
self.validate_type(self.type)
|
self.validate_type(self.type)
|
||||||
if value:
|
if value is not None:
|
||||||
self._validate_value(value)
|
self._validate_value(value)
|
||||||
|
|
||||||
def _validate_field(self):
|
def _validate_field(self):
|
||||||
|
12
toscaparser/tests/data/test_invalid_input_defaults.yaml
Normal file
12
toscaparser/tests/data/test_invalid_input_defaults.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||||
|
|
||||||
|
description: Test template with default not matching required type.
|
||||||
|
|
||||||
|
topology_template:
|
||||||
|
inputs:
|
||||||
|
invalid_default:
|
||||||
|
type: integer
|
||||||
|
default: two
|
||||||
|
valid_default:
|
||||||
|
type: integer
|
||||||
|
default: 2
|
@ -1385,3 +1385,11 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
|
|||||||
os.path.dirname(os.path.abspath(__file__)),
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
"data/test_credential_datatype.yaml")
|
"data/test_credential_datatype.yaml")
|
||||||
self.assertIsNotNone(ToscaTemplate(tosca_tpl))
|
self.assertIsNotNone(ToscaTemplate(tosca_tpl))
|
||||||
|
|
||||||
|
def test_invalid_default_value(self):
|
||||||
|
tpl_path = os.path.join(
|
||||||
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
"data/test_invalid_input_defaults.yaml")
|
||||||
|
self.assertRaises(exception.ValidationError, ToscaTemplate, tpl_path)
|
||||||
|
exception.ExceptionCollector.assertExceptionMessage(
|
||||||
|
ValueError, _('"two" is not an integer.'))
|
||||||
|
@ -65,6 +65,10 @@ class TopologyTemplate(object):
|
|||||||
input = Input(name, attrs)
|
input = Input(name, attrs)
|
||||||
if self.parsed_params and name in self.parsed_params:
|
if self.parsed_params and name in self.parsed_params:
|
||||||
input.validate(self.parsed_params[name])
|
input.validate(self.parsed_params[name])
|
||||||
|
else:
|
||||||
|
default = input.default
|
||||||
|
if default:
|
||||||
|
input.validate(default)
|
||||||
inputs.append(input)
|
inputs.append(input)
|
||||||
return inputs
|
return inputs
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user