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:
Lakshmi 2016-04-22 12:36:55 +05:30 committed by Sahdev Zala
parent 9fd69f2bed
commit e55f28458c
4 changed files with 25 additions and 1 deletions

View File

@ -53,7 +53,7 @@ class Input(object):
def validate(self, value=None):
self._validate_field()
self.validate_type(self.type)
if value:
if value is not None:
self._validate_value(value)
def _validate_field(self):

View 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

View File

@ -1385,3 +1385,11 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
os.path.dirname(os.path.abspath(__file__)),
"data/test_credential_datatype.yaml")
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.'))

View File

@ -65,6 +65,10 @@ class TopologyTemplate(object):
input = Input(name, attrs)
if self.parsed_params and name in self.parsed_params:
input.validate(self.parsed_params[name])
else:
default = input.default
if default:
input.validate(default)
inputs.append(input)
return inputs