Skip to content
Prev Previous commit
Next Next commit
[autofix.ci] apply automated fixes
  • Loading branch information
autofix-ci[bot] authored May 23, 2024
commit 23d6ec18a2397f102696834cb5b4bdc25b144253
4 changes: 2 additions & 2 deletions mitmproxy/addons/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@ def escape_quotes(s: str) -> str:
is_json = True
except json.JSONDecodeError:
# Fall back to plain string representation
body_str = f"\"{escape_quotes(decoded_content)}\""
body_str = f'"{escape_quotes(decoded_content)}"'

code += f'body = {body_str}\n'
code += f"body = {body_str}\n"
else:
code += "body = None\n"

Expand Down
99 changes: 54 additions & 45 deletions test/mitmproxy/addons/test_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,76 +194,77 @@ def test_correct_host_used(self, get_request):
)
assert export.httpie_command(get_request) == result


class TestExportPythonRequestsCommand:
def test_get(self, export_curl, get_request):
result = (
'import requests\n'
'\n'
"import requests\n"
"\n"
'url = "http://address:22/path?a=foo&a=bar&b=baz"\n'
'headers = {\n'
"headers = {\n"
' "header": "qvalue",\n'
'}\n'
'cookies = {}\n'
'\n'
'body = None\n'
"}\n"
"cookies = {}\n"
"\n"
"body = None\n"
'res = requests.request(method="GET", url=url, headers=headers, '
'cookies=cookies, data=body)\n'
'print(res.text)\n'
"cookies=cookies, data=body)\n"
"print(res.text)\n"
)
assert export.python_requests_command(get_request) == result

def test_post(self, export_curl, post_request):
post_request.request.content = b"nobinarysupport?"
result = (
'import requests\n'
'\n'
"import requests\n"
"\n"
'url = "http://address:22/path"\n'
'headers = {\n'
'}\n'
'cookies = {}\n'
'\n'
"headers = {\n"
"}\n"
"cookies = {}\n"
"\n"
'body = "nobinarysupport?"\n'
'res = requests.request(method="POST", url=url, headers=headers, '
'cookies=cookies, data=body)\n'
'print(res.text)\n'
"cookies=cookies, data=body)\n"
"print(res.text)\n"
)
assert export.python_requests_command(post_request) == result

def test_success_with_binary_data(self, export_curl, post_request):
# yeah, we support binary data in python
post_request.request.headers["Content-Type"] = "application/json; charset=utf-8"
result = (
'import requests\n'
'\n'
"import requests\n"
"\n"
'url = "http://address:22/path"\n'
'headers = {\n'
"headers = {\n"
' "Content-Type": "application/json; charset=utf-8",\n'
'}\n'
'cookies = {}\n'
'\n'
'body = '
"}\n"
"cookies = {}\n"
"\n"
"body = "
"b'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f "
'!"#$%&\\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff\'\n'
"!\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff'\n"
'res = requests.request(method="POST", url=url, headers=headers, '
'cookies=cookies, data=body)\n'
'print(res.text)\n'
"cookies=cookies, data=body)\n"
"print(res.text)\n"
)
assert export.python_requests_command(post_request) == result

def test_patch(self, export_curl, patch_request):
result = (
'import requests\n'
'\n'
"import requests\n"
"\n"
'url = "http://address:22/path?query=param"\n'
'headers = {\n'
"headers = {\n"
' "header": "qvalue",\n'
'}\n'
'cookies = {}\n'
'\n'
"}\n"
"cookies = {}\n"
"\n"
'body = "content"\n'
'res = requests.request(method="PATCH", url=url, headers=headers, '
'cookies=cookies, data=body)\n'
'print(res.text)\n'
"cookies=cookies, data=body)\n"
"print(res.text)\n"
)
assert export.python_requests_command(patch_request) == result

Expand All @@ -281,22 +282,23 @@ def test_correct_host_used(self, get_request):
get_request.request.headers["host"] = "domain:22"

result = (
'import requests\n'
'\n'
"import requests\n"
"\n"
'url = "http://domain:22/path?a=foo&a=bar&b=baz"\n'
'headers = {\n'
"headers = {\n"
' "header": "qvalue",\n'
' "host": "domain:22",\n'
'}\n'
'cookies = {}\n'
'\n'
'body = None\n'
"}\n"
"cookies = {}\n"
"\n"
"body = None\n"
'res = requests.request(method="GET", url=url, headers=headers, '
'cookies=cookies, data=body)\n'
'print(res.text)\n'
"cookies=cookies, data=body)\n"
"print(res.text)\n"
)
assert export.python_requests_command(get_request) == result


class TestRaw:
def test_req_and_resp_present(self, get_flow):
assert b"header: qvalue" in export.raw(get_flow)
Expand Down Expand Up @@ -378,7 +380,14 @@ def test_export(tmp_path) -> None:
with taddons.context() as tctx:
tctx.configure(e)

assert e.formats() == ["curl", "httpie", "python_requests", "raw", "raw_request", "raw_response"]
assert e.formats() == [
"curl",
"httpie",
"python_requests",
"raw",
"raw_request",
"raw_response",
]
with pytest.raises(exceptions.CommandError):
e.file("nonexistent", tflow.tflow(resp=True), f)

Expand Down