From a4267ee630422aec26008271c6acda0568517a14 Mon Sep 17 00:00:00 2001 From: Mark Haley <83965898+mhaley-tignis@users.noreply.github.com> Date: Wed, 1 Nov 2023 11:30:32 -0400 Subject: [PATCH] fix parameters_to_url_query returns booleans with upper letter (#16947) * chore: add test to show python bool url params are not lower case * fix: python parameters_to_url_query template to properly detect booleans * fix: typo in test * fix: typo in test * chore: update test name to snake case and be more descriptive --- .../main/resources/python-pydantic-v1/api_client.mustache | 4 ++-- .../src/main/resources/python/api_client.mustache | 4 ++-- .../openapi_client/api_client.py | 4 ++-- .../echo_api/python-pydantic-v1/openapi_client/api_client.py | 4 ++-- .../client/echo_api/python-pydantic-v1/test/test_manual.py | 5 +++++ samples/client/echo_api/python/openapi_client/api_client.py | 4 ++-- samples/client/echo_api/python/test/test_manual.py | 5 +++++ .../petstore/python-aiohttp/petstore_api/api_client.py | 4 ++-- .../python-pydantic-v1-aiohttp/petstore_api/api_client.py | 4 ++-- .../petstore/python-pydantic-v1/petstore_api/api_client.py | 4 ++-- .../petstore/python-pydantic-v1/tests/test_api_client.py | 5 +++-- .../client/petstore/python/petstore_api/api_client.py | 4 ++-- .../openapi3/client/petstore/python/tests/test_api_client.py | 5 +++-- 13 files changed, 34 insertions(+), 22 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python-pydantic-v1/api_client.mustache b/modules/openapi-generator/src/main/resources/python-pydantic-v1/api_client.mustache index 0870094d783..fe61bd61a5e 100644 --- a/modules/openapi-generator/src/main/resources/python-pydantic-v1/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python-pydantic-v1/api_client.mustache @@ -567,10 +567,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/modules/openapi-generator/src/main/resources/python/api_client.mustache b/modules/openapi-generator/src/main/resources/python/api_client.mustache index 6a59dc77f16..b041d86e52f 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -481,10 +481,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py index 6b7b8d3379f..665f8d49e26 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py @@ -476,10 +476,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/client/echo_api/python-pydantic-v1/openapi_client/api_client.py b/samples/client/echo_api/python-pydantic-v1/openapi_client/api_client.py index 962fad87d68..459e3850849 100644 --- a/samples/client/echo_api/python-pydantic-v1/openapi_client/api_client.py +++ b/samples/client/echo_api/python-pydantic-v1/openapi_client/api_client.py @@ -529,10 +529,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/client/echo_api/python-pydantic-v1/test/test_manual.py b/samples/client/echo_api/python-pydantic-v1/test/test_manual.py index 48cd3cf7724..fedf4cfad6b 100644 --- a/samples/client/echo_api/python-pydantic-v1/test/test_manual.py +++ b/samples/client/echo_api/python-pydantic-v1/test/test_manual.py @@ -145,6 +145,11 @@ class TestManual(unittest.TestCase): self.assertTrue("Authorization" in e.headers) self.assertEqual(e.headers["Authorization"], "Basic dGVzdF91c2VybmFtZTp0ZXN0X3Bhc3N3b3Jk") + def test_parameters_to_url_query_boolean_value(self): + client = openapi_client.ApiClient() + params = client.parameters_to_url_query([("boolean", True),], {}) + self.assertEqual(params, "boolean=true") + def echoServerResponseParaserTest(self): s = """POST /echo/body/Pet/response_string HTTP/1.1 Host: localhost:3000 diff --git a/samples/client/echo_api/python/openapi_client/api_client.py b/samples/client/echo_api/python/openapi_client/api_client.py index 6b7b8d3379f..665f8d49e26 100644 --- a/samples/client/echo_api/python/openapi_client/api_client.py +++ b/samples/client/echo_api/python/openapi_client/api_client.py @@ -476,10 +476,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/client/echo_api/python/test/test_manual.py b/samples/client/echo_api/python/test/test_manual.py index 60199244ed2..9dbfa19178c 100644 --- a/samples/client/echo_api/python/test/test_manual.py +++ b/samples/client/echo_api/python/test/test_manual.py @@ -212,6 +212,11 @@ class TestManual(unittest.TestCase): self.assertEqual(pet2.tags[0].name, "None") self.assertEqual(pet2.category.id, 1) + def test_parameters_to_url_query_boolean_value(self): + client = openapi_client.ApiClient() + params = client.parameters_to_url_query([("boolean", True),], {}) + self.assertEqual(params, "boolean=true") + def echoServerResponseParaserTest(self): s = """POST /echo/body/Pet/response_string HTTP/1.1 Host: localhost:3000 diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/api_client.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/api_client.py index 806631ef145..8f779d0509b 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/api_client.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/api_client.py @@ -483,10 +483,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/api_client.py b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/api_client.py index 733ddaed7c3..dbef903bdd6 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/api_client.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/api_client.py @@ -499,10 +499,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/api_client.py b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/api_client.py index 9579cce1349..2a74a7d7004 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/api_client.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/api_client.py @@ -528,10 +528,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501 - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_api_client.py b/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_api_client.py index ee9afd740cd..d254d28010d 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_api_client.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_api_client.py @@ -257,5 +257,6 @@ class ApiClientTests(unittest.TestCase): result = self.api_client.parameters_to_url_query([('value', dictionary)], {}) self.assertEqual(result, 'value=%7B%22strValues%22%3A%20%5B%22one%22%2C%20%22two%22%2C%20%22three%22%5D%2C%20%22dictValues%22%3A%20%5B%7B%22name%22%3A%20%22value1%22%2C%20%22age%22%3A%2014%7D%2C%20%7B%22name%22%3A%20%22value2%22%2C%20%22age%22%3A%2012%7D%5D%7D') - - + def test_parameters_to_url_query_boolean_value(self): + result = self.api_client.parameters_to_url_query([('boolean', True)], {}) + self.assertEqual(result, "boolean=true") diff --git a/samples/openapi3/client/petstore/python/petstore_api/api_client.py b/samples/openapi3/client/petstore/python/petstore_api/api_client.py index 470e4f69f1a..0a5d2cf2771 100755 --- a/samples/openapi3/client/petstore/python/petstore_api/api_client.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api_client.py @@ -475,10 +475,10 @@ class ApiClient: if collection_formats is None: collection_formats = {} for k, v in params.items() if isinstance(params, dict) else params: - if isinstance(v, (int, float)): - v = str(v) if isinstance(v, bool): v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) if isinstance(v, dict): v = json.dumps(v) diff --git a/samples/openapi3/client/petstore/python/tests/test_api_client.py b/samples/openapi3/client/petstore/python/tests/test_api_client.py index 6871eb5e3a4..1de9b2136dd 100644 --- a/samples/openapi3/client/petstore/python/tests/test_api_client.py +++ b/samples/openapi3/client/petstore/python/tests/test_api_client.py @@ -243,5 +243,6 @@ class ApiClientTests(unittest.TestCase): result = self.api_client.parameters_to_url_query([('value', dictionary)], {}) self.assertEqual(result, 'value=%7B%22strValues%22%3A%20%5B%22one%22%2C%20%22two%22%2C%20%22three%22%5D%2C%20%22dictValues%22%3A%20%5B%7B%22name%22%3A%20%22value1%22%2C%20%22age%22%3A%2014%7D%2C%20%7B%22name%22%3A%20%22value2%22%2C%20%22age%22%3A%2012%7D%5D%7D') - - + def test_parameters_to_url_query_boolean_value(self): + result = self.api_client.parameters_to_url_query([('boolean', True)], {}) + self.assertEqual(result, "boolean=true")