Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Fixes application/x-www-form-urlencoded encoding, issue 45 #48

Merged
merged 3 commits into from
Oct 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ class StyleFormSerializer(ParameterSerializerBase):
prefix_separator_iterator: typing.Optional[PrefixSeparatorIterator] = None
) -> str:
if prefix_separator_iterator is None:
prefix_separator_iterator = PrefixSeparatorIterator('?', '&')
prefix_separator_iterator = PrefixSeparatorIterator('', '&')
return self._ref6570_expansion(
variable_name=name,
in_data=in_data,
Expand Down Expand Up @@ -1472,7 +1472,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
raise ValueError(
f'Unable to serialize {in_data} to application/x-www-form-urlencoded because it is not a dict of data')
cast_in_data = self.__json_encoder.default(in_data)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=False)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=True)
return dict(body=value)

def serialize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ class RESTClientObject(object):
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
r = self.pool_manager.request(
method, url,
fields=fields,
body=body,
encode_multipart=False,
preload_content=not stream,
timeout=timeout,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def _serialize_form(
prefix_separator_iterator: typing.Optional[PrefixSeparatorIterator] = None
) -> str:
if prefix_separator_iterator is None:
prefix_separator_iterator = PrefixSeparatorIterator('?', '&')
prefix_separator_iterator = PrefixSeparatorIterator('', '&')
return self._ref6570_expansion(
variable_name=name,
in_data=in_data,
Expand Down Expand Up @@ -1462,7 +1462,7 @@ def __serialize_application_x_www_form_data(
raise ValueError(
f'Unable to serialize {in_data} to application/x-www-form-urlencoded because it is not a dict of data')
cast_in_data = self.__json_encoder.default(in_data)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=False)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=True)
return dict(body=value)

def serialize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def request(
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
r = self.pool_manager.request(
method, url,
fields=fields,
body=body,
encode_multipart=False,
preload_content=not stream,
timeout=timeout,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def _serialize_form(
prefix_separator_iterator: typing.Optional[PrefixSeparatorIterator] = None
) -> str:
if prefix_separator_iterator is None:
prefix_separator_iterator = PrefixSeparatorIterator('?', '&')
prefix_separator_iterator = PrefixSeparatorIterator('', '&')
return self._ref6570_expansion(
variable_name=name,
in_data=in_data,
Expand Down Expand Up @@ -1462,7 +1462,7 @@ def __serialize_application_x_www_form_data(
raise ValueError(
f'Unable to serialize {in_data} to application/x-www-form-urlencoded because it is not a dict of data')
cast_in_data = self.__json_encoder.default(in_data)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=False)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=True)
return dict(body=value)

def serialize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def request(
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
r = self.pool_manager.request(
method, url,
fields=fields,
body=body,
encode_multipart=False,
preload_content=not stream,
timeout=timeout,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ def _serialize_form(
prefix_separator_iterator: typing.Optional[PrefixSeparatorIterator] = None
) -> str:
if prefix_separator_iterator is None:
prefix_separator_iterator = PrefixSeparatorIterator('?', '&')
prefix_separator_iterator = PrefixSeparatorIterator('', '&')
return self._ref6570_expansion(
variable_name=name,
in_data=in_data,
Expand Down Expand Up @@ -1471,7 +1471,7 @@ def __serialize_application_x_www_form_data(
raise ValueError(
f'Unable to serialize {in_data} to application/x-www-form-urlencoded because it is not a dict of data')
cast_in_data = self.__json_encoder.default(in_data)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=False)
value = self._serialize_form(cast_in_data, name='', explode=True, percent_encode=True)
return dict(body=value)

def serialize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def request(
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
r = self.pool_manager.request(
method, url,
fields=fields,
body=body,
encode_multipart=False,
preload_content=not stream,
timeout=timeout,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# coding: utf-8

"""


Generated by: https://openapi-generator.tech
"""

import unittest
from unittest.mock import patch

import urllib3

import petstore_api
from petstore_api.paths.pet_pet_id import post
from petstore_api import configuration, schemas, api_client

from ... import ApiTestMixin


class TestPetPetId(ApiTestMixin, unittest.TestCase):
"""
PetPetId unit test stubs
Updates a pet in the store with form data # noqa: E501
"""

def test_post(self):
used_api_client = api_client.ApiClient()
api = post.ApiForpost(api_client=used_api_client)

with patch.object(urllib3.PoolManager, 'request') as mock_request:
path_params = {'petId': 2345}
body = {
'name': 'mister furball award',
'status': 'happy, fuzzy, and bouncy'
}
mock_request.return_value = self.response("")

api_response = api.post(path_params=path_params, body=body)
mock_request.assert_called_with(
'POST',
'http://petstore.swagger.io:80/v2/pet/2345',
body='name=mister%20furball%20award&status=happy%2C%20fuzzy%2C%20and%20bouncy',
encode_multipart=False,
preload_content=True,
timeout=None,
headers={
'User-Agent': self.user_agent,
'Content-Type': 'application/x-www-form-urlencoded'
}
)
assert isinstance(api_response.response, urllib3.HTTPResponse)
assert isinstance(api_response.body, schemas.Unset)
assert isinstance(api_response.headers, schemas.Unset)
assert api_response.response.status == 200


if __name__ == '__main__':
unittest.main()
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def test_throws_error_for_not_implemented_content_type(self):
def test_application_x_www_form_urlencoded_serialization(self):
payload = dict(
some_null=None,
some_str='a',
some_str='hi there',
some_int=1,
some_float=3.14,
some_list=[],
Expand All @@ -123,7 +123,7 @@ def test_application_x_www_form_urlencoded_serialization(self):
serialization = request_body.serialize(payload, content_type)
self.assertEqual(
serialization,
dict(body='?some_str=a&some_int=1&some_float=3.14')
dict(body='some_str=hi%20there&some_int=1&some_float=3.14')
)

serialization = request_body.serialize({}, content_type)
Expand Down