mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-25 09:37:37 +00:00
move examples tests (#2199)
This commit is contained in:
parent
ab2fcbef8d
commit
907825714b
0
test/examples/__init__.py
Normal file
0
test/examples/__init__.py
Normal file
@ -1,5 +1,3 @@
|
||||
import json
|
||||
import shlex
|
||||
import pytest
|
||||
|
||||
from mitmproxy import options
|
||||
@ -11,9 +9,8 @@ from mitmproxy.addons import script
|
||||
from mitmproxy.test import tflow
|
||||
from mitmproxy.test import tutils
|
||||
from mitmproxy.net.http import Headers
|
||||
from mitmproxy.net.http import cookies
|
||||
|
||||
from . import tservers
|
||||
from ..mitmproxy import tservers
|
||||
|
||||
example_dir = tutils.test_data.push("../examples")
|
||||
|
||||
@ -121,84 +118,3 @@ class TestScripts(tservers.MasterTest):
|
||||
assert f.request.port == 80
|
||||
|
||||
assert f.request.headers["Host"] == original_host
|
||||
|
||||
|
||||
class TestHARDump:
|
||||
|
||||
def flow(self, resp_content=b'message'):
|
||||
times = dict(
|
||||
timestamp_start=746203272,
|
||||
timestamp_end=746203272,
|
||||
)
|
||||
|
||||
# Create a dummy flow for testing
|
||||
return tflow.tflow(
|
||||
req=tutils.treq(method=b'GET', **times),
|
||||
resp=tutils.tresp(content=resp_content, **times)
|
||||
)
|
||||
|
||||
def test_no_file_arg(self):
|
||||
with pytest.raises(ScriptError):
|
||||
tscript("complex/har_dump.py")
|
||||
|
||||
def test_simple(self, tmpdir):
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger("response", self.flow())
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert len(har["log"]["entries"]) == 1
|
||||
|
||||
def test_base64(self, tmpdir):
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger(
|
||||
"response", self.flow(resp_content=b"foo" + b"\xFF" * 10)
|
||||
)
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert har["log"]["entries"][0]["response"]["content"]["encoding"] == "base64"
|
||||
|
||||
def test_format_cookies(self):
|
||||
m, sc = tscript("complex/har_dump.py", "-")
|
||||
format_cookies = sc.ns.format_cookies
|
||||
|
||||
CA = cookies.CookieAttrs
|
||||
|
||||
f = format_cookies([("n", "v", CA([("k", "v")]))])[0]
|
||||
assert f['name'] == "n"
|
||||
assert f['value'] == "v"
|
||||
assert not f['httpOnly']
|
||||
assert not f['secure']
|
||||
|
||||
f = format_cookies([("n", "v", CA([("httponly", None), ("secure", None)]))])[0]
|
||||
assert f['httpOnly']
|
||||
assert f['secure']
|
||||
|
||||
f = format_cookies([("n", "v", CA([("expires", "Mon, 24-Aug-2037 00:00:00 GMT")]))])[0]
|
||||
assert f['expires']
|
||||
|
||||
def test_binary(self, tmpdir):
|
||||
|
||||
f = self.flow()
|
||||
f.request.method = "POST"
|
||||
f.request.headers["content-type"] = "application/x-www-form-urlencoded"
|
||||
f.request.content = b"foo=bar&baz=s%c3%bc%c3%9f"
|
||||
f.response.headers["random-junk"] = bytes(range(256))
|
||||
f.response.content = bytes(range(256))
|
||||
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger("response", f)
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert len(har["log"]["entries"]) == 1
|
114
test/examples/test_har_dump.py
Normal file
114
test/examples/test_har_dump.py
Normal file
@ -0,0 +1,114 @@
|
||||
import json
|
||||
import shlex
|
||||
import pytest
|
||||
|
||||
from mitmproxy import options
|
||||
from mitmproxy import proxy
|
||||
from mitmproxy import master
|
||||
from mitmproxy.addons import script
|
||||
|
||||
from mitmproxy.test import tflow
|
||||
from mitmproxy.test import tutils
|
||||
from mitmproxy.net.http import cookies
|
||||
|
||||
example_dir = tutils.test_data.push("../examples")
|
||||
|
||||
|
||||
class ScriptError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class RaiseMaster(master.Master):
|
||||
def add_log(self, e, level):
|
||||
if level in ("warn", "error"):
|
||||
raise ScriptError(e)
|
||||
|
||||
|
||||
def tscript(cmd, args=""):
|
||||
o = options.Options()
|
||||
cmd = example_dir.path(cmd) + " " + args
|
||||
m = RaiseMaster(o, proxy.DummyServer())
|
||||
sc = script.Script(cmd)
|
||||
m.addons.add(sc)
|
||||
return m, sc
|
||||
|
||||
|
||||
class TestHARDump:
|
||||
|
||||
def flow(self, resp_content=b'message'):
|
||||
times = dict(
|
||||
timestamp_start=746203272,
|
||||
timestamp_end=746203272,
|
||||
)
|
||||
|
||||
# Create a dummy flow for testing
|
||||
return tflow.tflow(
|
||||
req=tutils.treq(method=b'GET', **times),
|
||||
resp=tutils.tresp(content=resp_content, **times)
|
||||
)
|
||||
|
||||
def test_no_file_arg(self):
|
||||
with pytest.raises(ScriptError):
|
||||
tscript("complex/har_dump.py")
|
||||
|
||||
def test_simple(self, tmpdir):
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger("response", self.flow())
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert len(har["log"]["entries"]) == 1
|
||||
|
||||
def test_base64(self, tmpdir):
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger(
|
||||
"response", self.flow(resp_content=b"foo" + b"\xFF" * 10)
|
||||
)
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert har["log"]["entries"][0]["response"]["content"]["encoding"] == "base64"
|
||||
|
||||
def test_format_cookies(self):
|
||||
m, sc = tscript("complex/har_dump.py", "-")
|
||||
format_cookies = sc.ns.format_cookies
|
||||
|
||||
CA = cookies.CookieAttrs
|
||||
|
||||
f = format_cookies([("n", "v", CA([("k", "v")]))])[0]
|
||||
assert f['name'] == "n"
|
||||
assert f['value'] == "v"
|
||||
assert not f['httpOnly']
|
||||
assert not f['secure']
|
||||
|
||||
f = format_cookies([("n", "v", CA([("httponly", None), ("secure", None)]))])[0]
|
||||
assert f['httpOnly']
|
||||
assert f['secure']
|
||||
|
||||
f = format_cookies([("n", "v", CA([("expires", "Mon, 24-Aug-2037 00:00:00 GMT")]))])[0]
|
||||
assert f['expires']
|
||||
|
||||
def test_binary(self, tmpdir):
|
||||
|
||||
f = self.flow()
|
||||
f.request.method = "POST"
|
||||
f.request.headers["content-type"] = "application/x-www-form-urlencoded"
|
||||
f.request.content = b"foo=bar&baz=s%c3%bc%c3%9f"
|
||||
f.response.headers["random-junk"] = bytes(range(256))
|
||||
f.response.content = bytes(range(256))
|
||||
|
||||
path = str(tmpdir.join("somefile"))
|
||||
|
||||
m, sc = tscript("complex/har_dump.py", shlex.quote(path))
|
||||
m.addons.trigger("response", f)
|
||||
m.addons.remove(sc)
|
||||
|
||||
with open(path, "r") as inp:
|
||||
har = json.load(inp)
|
||||
assert len(har["log"]["entries"]) == 1
|
0
test/mitmproxy/examples/test_xss_scanner.py → test/examples/test_xss_scanner.py
Executable file → Normal file
0
test/mitmproxy/examples/test_xss_scanner.py → test/examples/test_xss_scanner.py
Executable file → Normal file
Loading…
Reference in New Issue
Block a user