forked from loafle/openapi-generator-original
add null check in string with regular expression (#15233)
This commit is contained in:
parent
738beb401e
commit
70a6106626
@ -32,6 +32,18 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
|
|||||||
|
|
||||||
@validator('{{{name}}}')
|
@validator('{{{name}}}')
|
||||||
def {{{name}}}_validate_regular_expression(cls, v):
|
def {{{name}}}_validate_regular_expression(cls, v):
|
||||||
|
{{^required}}
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
|
{{/required}}
|
||||||
|
{{#required}}
|
||||||
|
{{#isNullable}}
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
|
{{/isNullable}}
|
||||||
|
{{/required}}
|
||||||
if not re.match(r"{{{.}}}", v{{#vendorExtensions.x-modifiers}} ,re.{{{.}}}{{/vendorExtensions.x-modifiers}}):
|
if not re.match(r"{{{.}}}", v{{#vendorExtensions.x-modifiers}} ,re.{{{.}}}{{/vendorExtensions.x-modifiers}}):
|
||||||
raise ValueError(r"must validate the regular expression {{{vendorExtensions.x-pattern}}}")
|
raise ValueError(r"must validate the regular expression {{{vendorExtensions.x-pattern}}}")
|
||||||
return v
|
return v
|
||||||
@ -43,6 +55,14 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
|
|||||||
{{^required}}
|
{{^required}}
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
{{/required}}
|
||||||
|
{{#required}}
|
||||||
|
{{#isNullable}}
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
|
{{/isNullable}}
|
||||||
{{/required}}
|
{{/required}}
|
||||||
{{#isArray}}
|
{{#isArray}}
|
||||||
for i in v:
|
for i in v:
|
||||||
|
@ -42,6 +42,7 @@ class DefaultValue(BaseModel):
|
|||||||
def array_string_enum_default_validate_enum(cls, v):
|
def array_string_enum_default_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
for i in v:
|
for i in v:
|
||||||
if i not in ('success', 'failure', 'unclassified'):
|
if i not in ('success', 'failure', 'unclassified'):
|
||||||
raise ValueError("each list item must be one of ('success', 'failure', 'unclassified')")
|
raise ValueError("each list item must be one of ('success', 'failure', 'unclassified')")
|
||||||
|
@ -41,6 +41,7 @@ class Pet(BaseModel):
|
|||||||
def status_validate_enum(cls, v):
|
def status_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('available', 'pending', 'sold'):
|
if v not in ('available', 'pending', 'sold'):
|
||||||
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
||||||
return v
|
return v
|
||||||
|
@ -35,6 +35,7 @@ class Query(BaseModel):
|
|||||||
def outcomes_validate_enum(cls, v):
|
def outcomes_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
for i in v:
|
for i in v:
|
||||||
if i not in ('SUCCESS', 'FAILURE', 'SKIPPED'):
|
if i not in ('SUCCESS', 'FAILURE', 'SKIPPED'):
|
||||||
raise ValueError("each list item must be one of ('SUCCESS', 'FAILURE', 'SKIPPED')")
|
raise ValueError("each list item must be one of ('SUCCESS', 'FAILURE', 'SKIPPED')")
|
||||||
|
@ -34,6 +34,7 @@ class EnumArrays(BaseModel):
|
|||||||
def just_symbol_validate_enum(cls, v):
|
def just_symbol_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('>=', '$'):
|
if v not in ('>=', '$'):
|
||||||
raise ValueError("must be one of enum values ('>=', '$')")
|
raise ValueError("must be one of enum values ('>=', '$')")
|
||||||
return v
|
return v
|
||||||
@ -42,6 +43,7 @@ class EnumArrays(BaseModel):
|
|||||||
def array_enum_validate_enum(cls, v):
|
def array_enum_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
for i in v:
|
for i in v:
|
||||||
if i not in ('fish', 'crab'):
|
if i not in ('fish', 'crab'):
|
||||||
raise ValueError("each list item must be one of ('fish', 'crab')")
|
raise ValueError("each list item must be one of ('fish', 'crab')")
|
||||||
|
@ -45,6 +45,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_string_validate_enum(cls, v):
|
def enum_string_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('UPPER', 'lower', ''):
|
if v not in ('UPPER', 'lower', ''):
|
||||||
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
|
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
|
||||||
return v
|
return v
|
||||||
@ -59,6 +60,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_integer_default_validate_enum(cls, v):
|
def enum_integer_default_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1, 5, 14):
|
if v not in (1, 5, 14):
|
||||||
raise ValueError("must be one of enum values (1, 5, 14)")
|
raise ValueError("must be one of enum values (1, 5, 14)")
|
||||||
return v
|
return v
|
||||||
@ -67,6 +69,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_integer_validate_enum(cls, v):
|
def enum_integer_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1, -1):
|
if v not in (1, -1):
|
||||||
raise ValueError("must be one of enum values (1, -1)")
|
raise ValueError("must be one of enum values (1, -1)")
|
||||||
return v
|
return v
|
||||||
@ -75,6 +78,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_number_validate_enum(cls, v):
|
def enum_number_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1.1, -1.2):
|
if v not in (1.1, -1.2):
|
||||||
raise ValueError("must be one of enum values (1.1, -1.2)")
|
raise ValueError("must be one of enum values (1.1, -1.2)")
|
||||||
return v
|
return v
|
||||||
|
@ -47,24 +47,36 @@ class FormatTest(BaseModel):
|
|||||||
|
|
||||||
@validator('string')
|
@validator('string')
|
||||||
def string_validate_regular_expression(cls, v):
|
def string_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"[a-z]", v ,re.IGNORECASE):
|
if not re.match(r"[a-z]", v ,re.IGNORECASE):
|
||||||
raise ValueError(r"must validate the regular expression /[a-z]/i")
|
raise ValueError(r"must validate the regular expression /[a-z]/i")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('string_with_double_quote_pattern')
|
@validator('string_with_double_quote_pattern')
|
||||||
def string_with_double_quote_pattern_validate_regular_expression(cls, v):
|
def string_with_double_quote_pattern_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"this is \"something\"", v):
|
if not re.match(r"this is \"something\"", v):
|
||||||
raise ValueError(r"must validate the regular expression /this is \"something\"/")
|
raise ValueError(r"must validate the regular expression /this is \"something\"/")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('pattern_with_digits')
|
@validator('pattern_with_digits')
|
||||||
def pattern_with_digits_validate_regular_expression(cls, v):
|
def pattern_with_digits_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"^\d{10}$", v):
|
if not re.match(r"^\d{10}$", v):
|
||||||
raise ValueError(r"must validate the regular expression /^\d{10}$/")
|
raise ValueError(r"must validate the regular expression /^\d{10}$/")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('pattern_with_digits_and_delimiter')
|
@validator('pattern_with_digits_and_delimiter')
|
||||||
def pattern_with_digits_and_delimiter_validate_regular_expression(cls, v):
|
def pattern_with_digits_and_delimiter_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"^image_\d{1,3}$", v ,re.IGNORECASE):
|
if not re.match(r"^image_\d{1,3}$", v ,re.IGNORECASE):
|
||||||
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
|
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
|
||||||
return v
|
return v
|
||||||
|
@ -36,6 +36,7 @@ class MapTest(BaseModel):
|
|||||||
def map_of_enum_string_validate_enum(cls, v):
|
def map_of_enum_string_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('UPPER', 'lower'):
|
if v not in ('UPPER', 'lower'):
|
||||||
raise ValueError("must be one of enum values ('UPPER', 'lower')")
|
raise ValueError("must be one of enum values ('UPPER', 'lower')")
|
||||||
return v
|
return v
|
||||||
|
@ -38,6 +38,7 @@ class Order(BaseModel):
|
|||||||
def status_validate_enum(cls, v):
|
def status_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('placed', 'approved', 'delivered'):
|
if v not in ('placed', 'approved', 'delivered'):
|
||||||
raise ValueError("must be one of enum values ('placed', 'approved', 'delivered')")
|
raise ValueError("must be one of enum values ('placed', 'approved', 'delivered')")
|
||||||
return v
|
return v
|
||||||
|
@ -40,6 +40,7 @@ class Pet(BaseModel):
|
|||||||
def status_validate_enum(cls, v):
|
def status_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('available', 'pending', 'sold'):
|
if v not in ('available', 'pending', 'sold'):
|
||||||
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
||||||
return v
|
return v
|
||||||
|
@ -36,6 +36,7 @@ class SpecialName(BaseModel):
|
|||||||
def var_schema_validate_enum(cls, v):
|
def var_schema_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('available', 'pending', 'sold'):
|
if v not in ('available', 'pending', 'sold'):
|
||||||
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
||||||
return v
|
return v
|
||||||
|
@ -35,6 +35,7 @@ class EnumArrays(BaseModel):
|
|||||||
def just_symbol_validate_enum(cls, v):
|
def just_symbol_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('>=', '$'):
|
if v not in ('>=', '$'):
|
||||||
raise ValueError("must be one of enum values ('>=', '$')")
|
raise ValueError("must be one of enum values ('>=', '$')")
|
||||||
return v
|
return v
|
||||||
@ -43,6 +44,7 @@ class EnumArrays(BaseModel):
|
|||||||
def array_enum_validate_enum(cls, v):
|
def array_enum_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
for i in v:
|
for i in v:
|
||||||
if i not in ('fish', 'crab'):
|
if i not in ('fish', 'crab'):
|
||||||
raise ValueError("each list item must be one of ('fish', 'crab')")
|
raise ValueError("each list item must be one of ('fish', 'crab')")
|
||||||
|
@ -46,6 +46,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_string_validate_enum(cls, v):
|
def enum_string_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('UPPER', 'lower', ''):
|
if v not in ('UPPER', 'lower', ''):
|
||||||
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
|
raise ValueError("must be one of enum values ('UPPER', 'lower', '')")
|
||||||
return v
|
return v
|
||||||
@ -60,6 +61,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_integer_default_validate_enum(cls, v):
|
def enum_integer_default_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1, 5, 14):
|
if v not in (1, 5, 14):
|
||||||
raise ValueError("must be one of enum values (1, 5, 14)")
|
raise ValueError("must be one of enum values (1, 5, 14)")
|
||||||
return v
|
return v
|
||||||
@ -68,6 +70,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_integer_validate_enum(cls, v):
|
def enum_integer_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1, -1):
|
if v not in (1, -1):
|
||||||
raise ValueError("must be one of enum values (1, -1)")
|
raise ValueError("must be one of enum values (1, -1)")
|
||||||
return v
|
return v
|
||||||
@ -76,6 +79,7 @@ class EnumTest(BaseModel):
|
|||||||
def enum_number_validate_enum(cls, v):
|
def enum_number_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in (1.1, -1.2):
|
if v not in (1.1, -1.2):
|
||||||
raise ValueError("must be one of enum values (1.1, -1.2)")
|
raise ValueError("must be one of enum values (1.1, -1.2)")
|
||||||
return v
|
return v
|
||||||
|
@ -48,24 +48,36 @@ class FormatTest(BaseModel):
|
|||||||
|
|
||||||
@validator('string')
|
@validator('string')
|
||||||
def string_validate_regular_expression(cls, v):
|
def string_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"[a-z]", v ,re.IGNORECASE):
|
if not re.match(r"[a-z]", v ,re.IGNORECASE):
|
||||||
raise ValueError(r"must validate the regular expression /[a-z]/i")
|
raise ValueError(r"must validate the regular expression /[a-z]/i")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('string_with_double_quote_pattern')
|
@validator('string_with_double_quote_pattern')
|
||||||
def string_with_double_quote_pattern_validate_regular_expression(cls, v):
|
def string_with_double_quote_pattern_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"this is \"something\"", v):
|
if not re.match(r"this is \"something\"", v):
|
||||||
raise ValueError(r"must validate the regular expression /this is \"something\"/")
|
raise ValueError(r"must validate the regular expression /this is \"something\"/")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('pattern_with_digits')
|
@validator('pattern_with_digits')
|
||||||
def pattern_with_digits_validate_regular_expression(cls, v):
|
def pattern_with_digits_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"^\d{10}$", v):
|
if not re.match(r"^\d{10}$", v):
|
||||||
raise ValueError(r"must validate the regular expression /^\d{10}$/")
|
raise ValueError(r"must validate the regular expression /^\d{10}$/")
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@validator('pattern_with_digits_and_delimiter')
|
@validator('pattern_with_digits_and_delimiter')
|
||||||
def pattern_with_digits_and_delimiter_validate_regular_expression(cls, v):
|
def pattern_with_digits_and_delimiter_validate_regular_expression(cls, v):
|
||||||
|
if v is None:
|
||||||
|
return v
|
||||||
|
|
||||||
if not re.match(r"^image_\d{1,3}$", v ,re.IGNORECASE):
|
if not re.match(r"^image_\d{1,3}$", v ,re.IGNORECASE):
|
||||||
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
|
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
|
||||||
return v
|
return v
|
||||||
|
@ -37,6 +37,7 @@ class MapTest(BaseModel):
|
|||||||
def map_of_enum_string_validate_enum(cls, v):
|
def map_of_enum_string_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('UPPER', 'lower'):
|
if v not in ('UPPER', 'lower'):
|
||||||
raise ValueError("must be one of enum values ('UPPER', 'lower')")
|
raise ValueError("must be one of enum values ('UPPER', 'lower')")
|
||||||
return v
|
return v
|
||||||
|
@ -39,6 +39,7 @@ class Order(BaseModel):
|
|||||||
def status_validate_enum(cls, v):
|
def status_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('placed', 'approved', 'delivered'):
|
if v not in ('placed', 'approved', 'delivered'):
|
||||||
raise ValueError("must be one of enum values ('placed', 'approved', 'delivered')")
|
raise ValueError("must be one of enum values ('placed', 'approved', 'delivered')")
|
||||||
return v
|
return v
|
||||||
|
@ -41,6 +41,7 @@ class Pet(BaseModel):
|
|||||||
def status_validate_enum(cls, v):
|
def status_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('available', 'pending', 'sold'):
|
if v not in ('available', 'pending', 'sold'):
|
||||||
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
||||||
return v
|
return v
|
||||||
|
@ -37,6 +37,7 @@ class SpecialName(BaseModel):
|
|||||||
def var_schema_validate_enum(cls, v):
|
def var_schema_validate_enum(cls, v):
|
||||||
if v is None:
|
if v is None:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
if v not in ('available', 'pending', 'sold'):
|
if v not in ('available', 'pending', 'sold'):
|
||||||
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
|
||||||
return v
|
return v
|
||||||
|
@ -314,6 +314,10 @@ class ModelTests(unittest.TestCase):
|
|||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
self.assertTrue(r"must validate the regular expression /^image_\d{1,3}$/i" in str(e))
|
self.assertTrue(r"must validate the regular expression /^image_\d{1,3}$/i" in str(e))
|
||||||
|
|
||||||
|
# test None with optional string (with regualr expression)
|
||||||
|
a = petstore_api.FormatTest(number=123.45, byte=bytes("string", 'utf-8'), date="2013-09-17", password="testing09876")
|
||||||
|
a.string = None # shouldn't throw an exception
|
||||||
|
|
||||||
a.pattern_with_digits_and_delimiter = "IMAGE_123"
|
a.pattern_with_digits_and_delimiter = "IMAGE_123"
|
||||||
self.assertEqual(a.pattern_with_digits_and_delimiter, "IMAGE_123")
|
self.assertEqual(a.pattern_with_digits_and_delimiter, "IMAGE_123")
|
||||||
a.pattern_with_digits_and_delimiter = "image_123"
|
a.pattern_with_digits_and_delimiter = "image_123"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user