Skip to content

Commit

Permalink
Drop private import of 'format_form_param' from tests (#2500)
Browse files Browse the repository at this point in the history
* Drop private import of 'format_form_param' from tests

* Drop unused code path
  • Loading branch information
tomchristie committed Dec 12, 2022
1 parent b97c059 commit b82fbe2
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
4 changes: 1 addition & 3 deletions httpx/_utils.py
Expand Up @@ -81,12 +81,10 @@ def is_known_encoding(encoding: str) -> bool:
return True


def format_form_param(name: str, value: typing.Union[str, bytes]) -> bytes:
def format_form_param(name: str, value: str) -> bytes:
"""
Encode a name/value pair within a multipart form.
"""
if isinstance(value, bytes):
value = value.decode()

def replacer(match: typing.Match[str]) -> str:
return _HTML5_FORM_ENCODING_REPLACEMENTS[match.group(0)]
Expand Down
29 changes: 20 additions & 9 deletions tests/test_multipart.py
Expand Up @@ -8,7 +8,6 @@

import httpx
from httpx._content import encode_request
from httpx._utils import format_form_param


def echo_request_content(request: httpx.Request) -> httpx.Response:
Expand Down Expand Up @@ -437,17 +436,29 @@ def test_multipart_rewinds_files():

class TestHeaderParamHTML5Formatting:
def test_unicode(self):
param = format_form_param("filename", "n\u00e4me")
assert param == b'filename="n\xc3\xa4me"'
filename = "n\u00e4me"
expected = b'filename="n\xc3\xa4me"'
files = {"upload": (filename, b"<file content>")}
request = httpx.Request("GET", "https://www.example.com", files=files)
assert expected in request.read()

def test_ascii(self):
param = format_form_param("filename", b"name")
assert param == b'filename="name"'
filename = "name"
expected = b'filename="name"'
files = {"upload": (filename, b"<file content>")}
request = httpx.Request("GET", "https://www.example.com", files=files)
assert expected in request.read()

def test_unicode_escape(self):
param = format_form_param("filename", "hello\\world\u0022")
assert param == b'filename="hello\\\\world%22"'
filename = "hello\\world\u0022"
expected = b'filename="hello\\\\world%22"'
files = {"upload": (filename, b"<file content>")}
request = httpx.Request("GET", "https://www.example.com", files=files)
assert expected in request.read()

def test_unicode_with_control_character(self):
param = format_form_param("filename", "hello\x1A\x1B\x1C")
assert param == b'filename="hello%1A\x1B%1C"'
filename = "hello\x1A\x1B\x1C"
expected = b'filename="hello%1A\x1B%1C"'
files = {"upload": (filename, b"<file content>")}
request = httpx.Request("GET", "https://www.example.com", files=files)
assert expected in request.read()

0 comments on commit b82fbe2

Please sign in to comment.