From dee5315a250a3e51899ead00894a472cdb39f8a2 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Wed, 22 Nov 2023 11:22:49 +0100 Subject: [PATCH 1/2] Allow undefined required properties According to the OpenAPI spec this is allowed. This should solve #97 --- openapi_spec_validator/validation/keywords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi_spec_validator/validation/keywords.py b/openapi_spec_validator/validation/keywords.py index 081a0ec..e21df31 100644 --- a/openapi_spec_validator/validation/keywords.py +++ b/openapi_spec_validator/validation/keywords.py @@ -144,7 +144,7 @@ def __call__( set(required) - set(properties) - set(nested_properties) ) else: - extra_properties = list(set(required) - set(properties)) + extra_properties = [] if extra_properties and require_properties: yield ExtraParametersError( From da26455ce114237bc2291962227ff7a828875cb0 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Fri, 19 Jan 2024 17:31:54 +0100 Subject: [PATCH 2/2] Update unit tests for new behaviour --- tests/integration/validation/test_exceptions.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/integration/validation/test_exceptions.py b/tests/integration/validation/test_exceptions.py index 687f85a..c8f5961 100644 --- a/tests/integration/validation/test_exceptions.py +++ b/tests/integration/validation/test_exceptions.py @@ -202,7 +202,7 @@ def test_allow_allof_when_required_is_linked_to_the_parent_object(self): errors_list = list(errors) assert errors_list == [] - def test_extra_parameters_in_required(self): + def test_allow_extra_parameters_in_required(self): spec = { "openapi": "3.0.0", "info": { @@ -225,10 +225,7 @@ def test_extra_parameters_in_required(self): errors = OpenAPIV30SpecValidator(spec).iter_errors() errors_list = list(errors) - assert errors_list[0].__class__ == ExtraParametersError - assert errors_list[0].message == ( - "Required list has not defined properties: ['testparam1']" - ) + assert len(errors_list) == 0 def test_undocumented_parameter(self): spec = {