From d0fe8053ea365abf23ca2d8b1927b8836158a703 Mon Sep 17 00:00:00 2001 From: Stephan Jaensch Date: Tue, 9 Jun 2020 13:17:31 +0200 Subject: [PATCH 1/2] Fix: additionalProperties can be a boolean value --- swagger_spec_validator/validator20.py | 13 +++++++------ tests/validator20/validate_spec_test.py | 12 ++++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/swagger_spec_validator/validator20.py b/swagger_spec_validator/validator20.py index 69f9be5..118b676 100644 --- a/swagger_spec_validator/validator20.py +++ b/swagger_spec_validator/validator20.py @@ -512,12 +512,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 } From 7234ed917f127dcf750d4b5f2f1c355d3b9fc093 Mon Sep 17 00:00:00 2001 From: milki Date: Tue, 9 Jun 2020 10:17:51 -0700 Subject: [PATCH 2/2] Release version 2.7.1 --- CHANGELOG.rst | 4 ++++ swagger_spec_validator/__about__.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) 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"