diff --git a/CHANGELOG.rst b/CHANGELOG.rst index decfcfd..ade64f5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,9 @@ Changelog ========= +2.7.1 (2020-06-09) +------------------ +- Fix: `additionalProperties` can be a boolean value - PR #138 + 2.7.0 (2020-06-05) ------------------ - Ensure correct validation into additionalProperties and items specifications - PR #134. Thanks brycedrennan for your contribution. diff --git a/swagger_spec_validator/__about__.py b/swagger_spec_validator/__about__.py index 5197bb0..60bb992 100644 --- a/swagger_spec_validator/__about__.py +++ b/swagger_spec_validator/__about__.py @@ -12,7 +12,7 @@ __summary__ = "Validation of Swagger specifications" __uri__ = "http://github.com/Yelp/swagger_spec_validator" -__version__ = "2.7.0" +__version__ = "2.7.1" __author__ = "John Billings" __email__ = "billings@yelp.com" diff --git a/swagger_spec_validator/validator20.py b/swagger_spec_validator/validator20.py index 7b2752d..c18b7db 100644 --- a/swagger_spec_validator/validator20.py +++ b/swagger_spec_validator/validator20.py @@ -516,12 +516,13 @@ def validate_definition(definition, deref, def_name=None, visited_definitions_id ) if 'additionalProperties' in definition: - validate_definition( - definition=definition.get('additionalProperties'), - deref=deref, - def_name='{}/{}'.format(def_name, 'additionalProperties'), - visited_definitions_ids=visited_definitions_ids, - ) + if definition.get('additionalProperties') not in (True, False): + validate_definition( + definition=definition.get('additionalProperties'), + deref=deref, + def_name='{}/additionalProperties'.format(def_name), + visited_definitions_ids=visited_definitions_ids, + ) if 'discriminator' in definition: required_props, not_required_props = get_collapsed_properties_type_mappings(definition, deref) diff --git a/tests/validator20/validate_spec_test.py b/tests/validator20/validate_spec_test.py index 2d57f05..e9c006f 100644 --- a/tests/validator20/validate_spec_test.py +++ b/tests/validator20/validate_spec_test.py @@ -427,8 +427,6 @@ def test_highlight_inconsistent_schema_object_validation(minimal_swagger_dict, s def test_additional_properties_validated(minimal_swagger_dict, default_checks_spec_dict): invalid_spec = {'type': 'object', 'required': ['foo']} - minimal_swagger_dict['definitions']['injected_definition'] = invalid_spec - minimal_swagger_dict['definitions']['injected_definition'] = { 'type': 'object', 'additionalProperties': invalid_spec } @@ -437,10 +435,16 @@ def test_additional_properties_validated(minimal_swagger_dict, default_checks_sp validate_spec(minimal_swagger_dict) +def test_additional_properties_bool(minimal_swagger_dict, default_checks_spec_dict): + minimal_swagger_dict['definitions']['injected_definition'] = { + 'type': 'object', 'additionalProperties': False, + } + + validate_spec(minimal_swagger_dict) + + def test_array_items_validated(minimal_swagger_dict, default_checks_spec_dict): invalid_spec = {'type': 'object', 'required': ['foo']} - minimal_swagger_dict['definitions']['injected_definition'] = invalid_spec - minimal_swagger_dict['definitions']['injected_definition'] = { 'type': 'array', 'items': invalid_spec }