This repository was archived by the owner on Dec 25, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 6 files changed +58
-4
lines changed
modules/openapi-json-schema-generator/src/main/resources/python
3_0_3_unit_test/python/unit_test_api
features/nonCompliantUseDiscriminatorIfCompositionFails/python
petstore/python/petstore_api Expand file tree Collapse file tree 6 files changed +58
-4
lines changed Original file line number Diff line number Diff line change @@ -1981,7 +1981,9 @@ class ComposedBase(Discriminable):
19811981 )
19821982
19831983 # process composed schema
1984- discriminator = getattr(cls, 'discriminator', None)
1984+ discriminator = None
1985+ if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
1986+ discriminator = cls.MetaOapg.discriminator()
19851987 discriminated_cls = None
19861988 if discriminator and arg and isinstance(arg, frozendict.frozendict):
19871989 disc_property_name = list(discriminator.keys())[0]
Original file line number Diff line number Diff line change @@ -1948,7 +1948,9 @@ def _validate_oapg(
19481948 )
19491949
19501950 # process composed schema
1951- discriminator = getattr (cls , 'discriminator' , None )
1951+ discriminator = None
1952+ if hasattr (cls , 'MetaOapg' ) and hasattr (cls .MetaOapg , 'discriminator' ):
1953+ discriminator = cls .MetaOapg .discriminator ()
19521954 discriminated_cls = None
19531955 if discriminator and arg and isinstance (arg , frozendict .frozendict ):
19541956 disc_property_name = list (discriminator .keys ())[0 ]
Original file line number Diff line number Diff line change 1+ # coding: utf-8
2+
3+ """
4+ discriminator-test
5+
6+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7+
8+ The version of the OpenAPI document: 1.0
9+ Generated by: https://openapi-generator.tech
10+ """
11+
12+ import unittest
13+
14+ from this_package .model .operator import Operator
15+ from this_package .model .addition_operator import AdditionOperator
16+ from this_package .model .subtraction_operator import SubtractionOperator
17+ from this_package import configuration
18+
19+
20+ class TestOperator (unittest .TestCase ):
21+ """Operator unit test stubs"""
22+ _configuration = configuration .Configuration ()
23+
24+ def test_discriminator_works (self ):
25+ op = Operator (
26+ operator_id = 'ADD' ,
27+ a = 3.14 ,
28+ b = 3.14
29+ )
30+ assert op == dict (
31+ operator_id = 'ADD' ,
32+ a = 3.14 ,
33+ b = 3.14
34+ )
35+ """
36+ even though the payload validates with AdditionOperator + SubtractionOperator
37+ only AdditionOperator is used because nonCompliantUseDiscriminatorIfCompositionFails=true
38+ and discriminator validation was used when composed schema validation failed
39+ """
40+ assert isinstance (op , Operator )
41+ assert isinstance (op , AdditionOperator )
42+ assert not isinstance (op , SubtractionOperator )
43+
44+
45+ if __name__ == '__main__' :
46+ unittest .main ()
Original file line number Diff line number Diff line change @@ -1974,7 +1974,9 @@ def _validate_oapg(
19741974 )
19751975
19761976 # process composed schema
1977- discriminator = getattr (cls , 'discriminator' , None )
1977+ discriminator = None
1978+ if hasattr (cls , 'MetaOapg' ) and hasattr (cls .MetaOapg , 'discriminator' ):
1979+ discriminator = cls .MetaOapg .discriminator ()
19781980 discriminated_cls = None
19791981 if discriminator and arg and isinstance (arg , frozendict .frozendict ):
19801982 disc_property_name = list (discriminator .keys ())[0 ]
Original file line number Diff line number Diff line change @@ -1948,7 +1948,9 @@ def _validate_oapg(
19481948 )
19491949
19501950 # process composed schema
1951- discriminator = getattr (cls , 'discriminator' , None )
1951+ discriminator = None
1952+ if hasattr (cls , 'MetaOapg' ) and hasattr (cls .MetaOapg , 'discriminator' ):
1953+ discriminator = cls .MetaOapg .discriminator ()
19521954 discriminated_cls = None
19531955 if discriminator and arg and isinstance (arg , frozendict .frozendict ):
19541956 disc_property_name = list (discriminator .keys ())[0 ]
You can’t perform that action at this time.
0 commit comments