def _validate_port_map_list(options_list, id_provider, force_options): kwargs = validate.set_warning(report_codes.FORCE_OPTIONS, force_options) option_type = "port-map" validators = [ validate.NamesIn(PORT_MAP_OPTIONS, option_type=option_type, **kwargs), validate.ValueId("id", option_name_for_report="port-map id", id_provider=id_provider), validate.DependsOnOption( ["internal-port"], "port", option_type=option_type, prerequisite_type=option_type, ), validate.IsRequiredSome(["port", "range"], option_type=option_type), validate.MutuallyExclusive(["port", "range"], option_type=option_type), validate.ValuePortNumber("port"), validate.ValuePortNumber("internal-port"), validate.ValuePortRange("range", **kwargs), ] validator_all = validate.ValidatorAll(validators) report_list = [] for options in options_list: report_list.extend(validator_all.validate(options)) return report_list
def test_success_when_dependency_present(self): assert_report_item_list_equal( validate.DependsOnOption( ["name"], "prerequisite", option_type="type" ).validate({"name": "value", "prerequisite": "value",}), [], )
def test_report_when_dependency_missing(self): assert_report_item_list_equal( validate.DependsOnOption( ["name"], "prerequisite", option_type="type1", prerequisite_type="type2").validate({"name": "value"}), [ fixture.error( report_codes.PREREQUISITE_OPTION_IS_MISSING, option_name="name", option_type="type1", prerequisite_name="prerequisite", prerequisite_type="type2", ), ])
def test_more_options(self): assert_report_item_list_equal( validate.DependsOnOption( ["name1", "name2", "name3"], "prerequisite" ).validate({"name1": "value", "name3": "value",}), [ fixture.error( report_codes.PREREQUISITE_OPTION_IS_MISSING, option_name=name, option_type=None, prerequisite_name="prerequisite", prerequisite_type=None, ) for name in ["name1", "name3"] ], )