diff options
Diffstat (limited to 'test/test_flow_export.py')
-rw-r--r-- | test/test_flow_export.py | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/test/test_flow_export.py b/test/test_flow_export.py new file mode 100644 index 00000000..7bd7a442 --- /dev/null +++ b/test/test_flow_export.py @@ -0,0 +1,105 @@ +import netlib.tutils +from libmproxy import flow_export +from . import tutils + +req_get = netlib.tutils.treq( + method='GET', + content='', +) + +req_post = netlib.tutils.treq( + method='POST', + headers=None, +) + +req_patch = netlib.tutils.treq( + method='PATCH', + path=b"/path?query=param", +) + + +def test_curl_command(): + flow = tutils.tflow(req=req_get) + result = """curl -H 'header:qvalue' -H 'content-length:7' 'http://address/path'""" + assert flow_export.curl_command(flow) == result + + flow = tutils.tflow(req=req_post) + result = """curl -X POST 'http://address/path' --data-binary 'content'""" + assert flow_export.curl_command(flow) == result + + flow = tutils.tflow(req=req_patch) + result = """curl -H 'header:qvalue' -H 'content-length:7' -X PATCH 'http://address/path?query=param' --data-binary 'content'""" + assert flow_export.curl_command(flow) == result + + +def test_python_code(): + flow = tutils.tflow(req=req_get) + result = ("""import requests\n\n""" + """url = 'http://address/path'\n\n""" + """headers = {\n""" + """ 'header': 'qvalue',\n""" + """ 'content-length': '7',\n""" + """}\n\n""" + """response = requests.request(\n""" + """ method='GET',\n""" + """ url=url,\n""" + """ headers=headers,\n""" + """)\n\n""" + """print(response.text)""") + assert flow_export.python_code(flow) == result + + flow = tutils.tflow(req=req_post) + result = ("""import requests\n\n""" + """url = 'http://address/path'\n\n""" + """data = '''content'''\n\n""" + """response = requests.request(\n""" + """ method='POST',\n""" + """ url=url,\n""" + """ data=data,\n)\n\n""" + """print(response.text)""") + assert flow_export.python_code(flow) == result + + flow = tutils.tflow(req=req_patch) + result = ("""import requests\n\n""" + """url = 'http://address/path'\n\n""" + """headers = {\n""" + """ 'header': 'qvalue',\n""" + """ 'content-length': '7',\n""" + """}\n\n""" + """params = {\n""" + """ 'query': 'param',\n""" + """}\n\n""" + """data = '''content'''\n\n""" + """response = requests.request(\n""" + """ method='PATCH',\n""" + """ url=url,\n""" + """ headers=headers,\n""" + """ params=params,\n""" + """ data=data,\n""" + """)\n\n""" + """print(response.text)""") + assert flow_export.python_code(flow) == result + + +def test_raw_request(): + flow = tutils.tflow(req=req_get) + result = ("""GET /path HTTP/1.1\r\n""" + """header: qvalue\r\n""" + """content-length: 7\r\n""" + """host: address:22\r\n\r\n""" + """""") + assert flow_export.raw_request(flow) == result + + flow = tutils.tflow(req=req_post) + result = ("""POST /path HTTP/1.1\r\n""" + """host: address:22\r\n\r\n""" + """content""") + assert flow_export.raw_request(flow) == result + + flow = tutils.tflow(req=req_patch) + result = ("""PATCH /path?query=param HTTP/1.1\r\n""" + """header: qvalue\r\n""" + """content-length: 7\r\n""" + """host: address:22\r\n\r\n""" + """content""") + assert flow_export.raw_request(flow) == result |