mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-27 02:24:18 +00:00
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
|
import mock, socket, os, sys
|
||
|
from libmproxy import dump
|
||
|
from netlib import certutils
|
||
|
from libpathod.pathoc import Pathoc
|
||
|
import tutils
|
||
|
|
||
|
def get_free_port():
|
||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
|
s.bind(("127.0.0.1", 0))
|
||
|
port = s.getsockname()[1]
|
||
|
s.close()
|
||
|
return port
|
||
|
|
||
|
|
||
|
class AppTestMixin(object):
|
||
|
def request(self, spec):
|
||
|
p = Pathoc(("127.0.0.1", self.port))
|
||
|
p.connect()
|
||
|
return p.request(spec)
|
||
|
|
||
|
def test_basic(self):
|
||
|
assert self.request("get:/").status_code == 200
|
||
|
assert self.request("get:/").status_code == 200 # Check for connection close
|
||
|
assert len(self.m.apps.apps) == 0
|
||
|
|
||
|
def test_cert(self):
|
||
|
with tutils.tmpdir() as d:
|
||
|
# Create Certs
|
||
|
path = os.path.join(d, "test")
|
||
|
assert certutils.dummy_ca(path)
|
||
|
self.m.server.config.cacert = path
|
||
|
|
||
|
for ext in ["pem", "p12"]:
|
||
|
resp = self.request("get:/cert/%s" % ext)
|
||
|
assert resp.status_code == 200
|
||
|
with open(path + "-cert.%s" % ext, "rb") as f:
|
||
|
assert resp.content == f.read()
|
||
|
|
||
|
class TestAppExternal(AppTestMixin):
|
||
|
@classmethod
|
||
|
def setupAll(cls):
|
||
|
cls.port = get_free_port()
|
||
|
o = dump.Options(app=True, app_external=True, app_host="127.0.0.1", app_port=cls.port)
|
||
|
s = mock.MagicMock()
|
||
|
cls.m = dump.DumpMaster(s, o, None)
|
||
|
|
||
|
|
||
|
@classmethod
|
||
|
def teardownAll(cls):
|
||
|
cls.m.shutdown()
|