mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-18 23:17:04 +00:00
python: enable more mypy checks 1/n (#17556)
* python: more mypy checks * mypy: check_untyped_defs * mypy: disallow_subclassing_any * mypy: disallow_untyped_decorators * mypy: disallow_any_generics
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
# flake8: noqa
|
||||
|
||||
|
||||
from datetime import date
|
||||
import os
|
||||
import time
|
||||
import unittest
|
||||
@@ -118,6 +119,7 @@ class ModelTests(unittest.TestCase):
|
||||
|
||||
nested_json = nested.to_json()
|
||||
nested2 = petstore_api.WithNestedOneOf.from_json(nested_json)
|
||||
assert nested2 is not None
|
||||
self.assertEqual(nested2.to_json(), nested_json)
|
||||
|
||||
def test_anyOf(self):
|
||||
@@ -172,6 +174,7 @@ class ModelTests(unittest.TestCase):
|
||||
self.assertEqual(dog.to_dict(), {'breed': 'bulldog', 'className':
|
||||
'dog', 'color': 'white'})
|
||||
dog2 = petstore_api.Dog.from_json(dog.to_json())
|
||||
assert dog2 is not None
|
||||
self.assertEqual(dog2.breed, 'bulldog')
|
||||
self.assertEqual(dog2.class_name, "dog")
|
||||
self.assertEqual(dog2.color, 'white')
|
||||
@@ -180,7 +183,8 @@ class ModelTests(unittest.TestCase):
|
||||
def test_list(self):
|
||||
# should throw exception as var_123_list should be string
|
||||
try:
|
||||
l3 = petstore_api.List(var_123_list=123)
|
||||
# Don't check the typing, because we are actually testing a typing error.
|
||||
l3 = petstore_api.ListClass(**{"123-list": 123}) # type: ignore
|
||||
self.assertTrue(False) # this line shouldn't execute
|
||||
except ValueError as e:
|
||||
#error_message = (
|
||||
@@ -189,13 +193,14 @@ class ModelTests(unittest.TestCase):
|
||||
# " str type expected (type=type_error.str)\n")
|
||||
self.assertTrue("str type expected" in str(e))
|
||||
|
||||
l = petstore_api.List(var_123_list="bulldog")
|
||||
l = petstore_api.ListClass(**{"123-list": "bulldog"})
|
||||
self.assertEqual(l.to_json(), '{"123-list":"bulldog"}')
|
||||
self.assertEqual(l.to_dict(), {'123-list': 'bulldog'})
|
||||
l2 = petstore_api.List.from_json(l.to_json())
|
||||
self.assertEqual(l2.var_123_list, 'bulldog')
|
||||
|
||||
self.assertTrue(isinstance(l2, petstore_api.List))
|
||||
l2 = petstore_api.ListClass.from_json(l.to_json())
|
||||
assert l2 is not None
|
||||
self.assertEqual(l2.var_123_list, 'bulldog')
|
||||
self.assertTrue(isinstance(l2, petstore_api.ListClass))
|
||||
|
||||
def test_enum_ref_property(self):
|
||||
# test enum ref property
|
||||
@@ -204,26 +209,28 @@ class ModelTests(unittest.TestCase):
|
||||
self.assertEqual(d.to_json(), '{"value": 1}')
|
||||
d2 = petstore_api.OuterObjectWithEnumProperty(value=petstore_api.OuterEnumInteger.NUMBER_1, str_value=petstore_api.OuterEnum.DELIVERED)
|
||||
self.assertEqual(d2.to_json(), '{"str_value": "delivered", "value": 1}')
|
||||
|
||||
# test from_json (round trip)
|
||||
d3 = petstore_api.OuterObjectWithEnumProperty.from_json(d2.to_json())
|
||||
assert d3 is not None
|
||||
self.assertEqual(d3.str_value, petstore_api.OuterEnum.DELIVERED)
|
||||
self.assertEqual(d3.value, petstore_api.OuterEnumInteger.NUMBER_1)
|
||||
self.assertEqual(d3.to_json(), '{"str_value": "delivered", "value": 1}')
|
||||
|
||||
@unittest.skip("TODO: pydantic v2: 'float' field alias the 'float' type used by 'number'")
|
||||
def test_float_strict_type(self):
|
||||
# assigning 123 to float shouldn't throw an exception
|
||||
a = petstore_api.FormatTest(number=39.8, float=123, byte=bytes("string", 'utf-8'), date="2013-09-17", password="testing09876")
|
||||
self.assertEqual(a.float, 123.0)
|
||||
a = petstore_api.FormatTest(number=39.8, float=123, byte=bytes("string", 'utf-8'), date=date(2013, 9, 17), password="testing09876")
|
||||
self.assertEqual(a.var_float, 123.0)
|
||||
|
||||
json_str = "{\"number\": 34.5, \"float\": \"456\", \"date\": \"2013-12-08\", \"password\": \"empty1234567\", \"pattern_with_digits\": \"1234567890\", \"pattern_with_digits_and_delimiter\": \"image_123\", \"string_with_double_quote_pattern\": \"this is \\\"something\\\"\", \"string\": \"string\"}"
|
||||
# no exception thrown when assigning 456 (integer) to float type since strict is set to false
|
||||
f = petstore_api.FormatTest.from_json(json_str)
|
||||
self.assertEqual(f.float, 456.0)
|
||||
assert f is not None
|
||||
self.assertEqual(f.var_float, 456.0)
|
||||
|
||||
def test_valdiator(self):
|
||||
# test regular expression
|
||||
a = petstore_api.FormatTest(number=123.45, byte=bytes("string", 'utf-8'), date="2013-09-17", password="testing09876")
|
||||
a = petstore_api.FormatTest(number=123.45, byte=bytes("string", 'utf-8'), date=date(2013, 9, 17), password="testing09876")
|
||||
try:
|
||||
a.pattern_with_digits_and_delimiter = "123"
|
||||
self.assertTrue(False) # this line shouldn't execute
|
||||
|
||||
@@ -71,6 +71,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
@async_test
|
||||
async def test_async_with_result(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
tasks = [
|
||||
asyncio.create_task(coro)
|
||||
@@ -100,31 +101,32 @@ class TestPetApiTests(unittest.TestCase):
|
||||
@async_test
|
||||
async def test_add_pet_and_get_pet_by_id(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
fetched = await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
|
||||
self.assertIsNotNone(fetched)
|
||||
self.assertEqual(self.pet.id, fetched.id)
|
||||
self.assertIsNotNone(fetched.category)
|
||||
assert self.pet.category is not None
|
||||
assert fetched.category is not None
|
||||
self.assertEqual(self.pet.category.name, fetched.category.name)
|
||||
|
||||
@async_test
|
||||
async def test_add_pet_and_get_pet_by_id_with_http_info(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
fetched = await self.pet_api.get_pet_by_id_with_http_info(pet_id=self.pet.id)
|
||||
self.assertIsNotNone(fetched)
|
||||
self.assertEqual(self.pet.id, fetched.data.id)
|
||||
self.assertIsNotNone(fetched.data.category)
|
||||
assert self.pet.category is not None
|
||||
assert fetched.data.category is not None
|
||||
self.assertEqual(self.pet.category.name, fetched.data.category.name)
|
||||
|
||||
@async_test
|
||||
async def test_add_pet_and_get_pet_by_id_without_preload_content(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
fetched = await self.pet_api.get_pet_by_id_without_preload_content(pet_id=self.pet.id)
|
||||
self.assertIsInstance(fetched, aiohttp.ClientResponse)
|
||||
# self.assertFalse(fetched.closed)
|
||||
# self.assertFalse(fetched.content._eof)
|
||||
read = await fetched.content.read()
|
||||
self.assertTrue(fetched.closed)
|
||||
self.assertTrue(fetched.content._eof)
|
||||
@@ -136,17 +138,19 @@ class TestPetApiTests(unittest.TestCase):
|
||||
async def test_update_pet(self):
|
||||
self.pet.name = "hello kity with updated"
|
||||
await self.pet_api.update_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
fetched = await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
|
||||
self.assertIsNotNone(fetched)
|
||||
self.assertEqual(self.pet.id, fetched.id)
|
||||
self.assertEqual(self.pet.name, fetched.name)
|
||||
self.assertIsNotNone(fetched.category)
|
||||
assert self.pet.category is not None
|
||||
assert fetched.category is not None
|
||||
self.assertEqual(fetched.category.name, self.pet.category.name)
|
||||
|
||||
@async_test
|
||||
async def test_find_pets_by_status(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.status is not None
|
||||
pets = await self.pet_api.find_pets_by_status(status=[self.pet.status])
|
||||
self.assertIn(
|
||||
self.pet.id,
|
||||
@@ -156,6 +160,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
@async_test
|
||||
async def test_find_pets_by_tags(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.tag.name is not None
|
||||
pets = await self.pet_api.find_pets_by_tags(tags=[self.tag.name])
|
||||
self.assertIn(
|
||||
self.pet.id,
|
||||
@@ -165,6 +170,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
@async_test
|
||||
async def test_update_pet_with_form(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
|
||||
name = "hello kity with form updated"
|
||||
status = "pending"
|
||||
@@ -180,6 +186,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
# upload file with form parameter
|
||||
try:
|
||||
additional_metadata = "special"
|
||||
assert self.pet.id is not None
|
||||
await self.pet_api.upload_file(
|
||||
pet_id=self.pet.id,
|
||||
additional_metadata=additional_metadata,
|
||||
@@ -197,6 +204,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
@async_test
|
||||
async def test_delete_pet(self):
|
||||
await self.pet_api.add_pet(self.pet)
|
||||
assert self.pet.id is not None
|
||||
await self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
|
||||
|
||||
try:
|
||||
@@ -213,6 +221,7 @@ class TestPetApiTests(unittest.TestCase):
|
||||
config.proxy = 'http://localhost:8080/proxy'
|
||||
async with petstore_api.ApiClient(config) as client:
|
||||
pet_api = petstore_api.PetApi(client)
|
||||
assert self.pet.id is not None
|
||||
|
||||
with self.assertRaisesRegex(petstore_api.rest.aiohttp.client_exceptions.ClientProxyConnectionError,
|
||||
'Cannot connect to host localhost:8080'):
|
||||
|
||||
@@ -72,11 +72,14 @@ class PetModelTests(unittest.TestCase):
|
||||
" \"status\": \"available\",\n"
|
||||
" \"tags\": [{\"id\": 1, \"name\": \"None\"}]}")
|
||||
pet = petstore_api.Pet.from_json(json_str)
|
||||
assert pet is not None
|
||||
self.assertEqual(pet.id, 1)
|
||||
self.assertEqual(pet.status, "available")
|
||||
self.assertEqual(pet.photo_urls, ["string"])
|
||||
assert pet.tags is not None
|
||||
self.assertEqual(pet.tags[0].id, 1)
|
||||
self.assertEqual(pet.tags[0].name, "None")
|
||||
assert pet.category is not None
|
||||
self.assertEqual(pet.category.id, 1)
|
||||
# test to_json
|
||||
self.assertEqual(pet.to_json(),
|
||||
@@ -90,16 +93,22 @@ class PetModelTests(unittest.TestCase):
|
||||
|
||||
# test from_dict
|
||||
pet2 = petstore_api.Pet.from_dict(pet.to_dict())
|
||||
assert pet2 is not None
|
||||
self.assertEqual(pet2.id, 1)
|
||||
self.assertEqual(pet2.status, "available")
|
||||
self.assertEqual(pet2.photo_urls, ["string"])
|
||||
assert pet2.tags is not None
|
||||
self.assertEqual(pet2.tags[0].id, 1)
|
||||
self.assertEqual(pet2.tags[0].name, "None")
|
||||
assert pet2.category is not None
|
||||
self.assertEqual(pet2.category.id, 1)
|
||||
|
||||
def test_unpack_operator(self):
|
||||
d = {"name": "required name", "id": 123, "photoUrls": ["https://a.com", "https://b.com"]}
|
||||
pet = petstore_api.Pet(**d)
|
||||
pet = petstore_api.Pet(
|
||||
name="required name",
|
||||
id=123,
|
||||
photoUrls=["https://a.com", "https://b.com"],
|
||||
)
|
||||
self.assertEqual(pet.to_json(), '{"id": 123, "name": "required name", "photoUrls": ["https://a.com", "https://b.com"]}')
|
||||
self.assertEqual(pet.to_dict(), {"id": 123, "name": "required name", "photoUrls": ["https://a.com", "https://b.com"]})
|
||||
def test_optional_fields(self):
|
||||
|
||||
Reference in New Issue
Block a user