Skip to content

Commit f203cde

Browse files
authored
Merge pull request #249 from python-openapi/fix/discriminator-handing-for-non-object-instances
Discriminator handling for non-object instances
2 parents a195558 + f5b364f commit f203cde

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

openapi_schema_validator/_keywords.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ def handle_discriminator(
2121
"""
2222
discriminator = schema["discriminator"]
2323
prop_name = discriminator["propertyName"]
24+
25+
if not validator.is_type(instance, "object"):
26+
yield ValidationError(
27+
f"{instance!r} is not of type 'object'", context=[]
28+
)
29+
return
30+
2431
prop_value = instance.get(prop_name)
2532
if not prop_value:
2633
# instance is missing $propertyName

tests/integration/test_validators.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,13 @@ def test_oneof_discriminator(self, validator_class, schema_type):
450450
validator = validator_class(
451451
schema, format_checker=oas30_format_checker
452452
)
453+
454+
with pytest.raises(
455+
ValidationError,
456+
match="is not of type 'object'",
457+
):
458+
validator.validate("not-an-object")
459+
453460
with pytest.raises(
454461
ValidationError, match="does not contain discriminating property"
455462
):

0 commit comments

Comments
 (0)