mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +00:00
We can't sensibly unit test pages withhout firing up a server.
We've just added functionality to do this ourselves, so rip out the old stuff.
This commit is contained in:
parent
26c8437e88
commit
9ae53aecd0
@ -3,104 +3,6 @@ import tornado.web, tornado.template, tornado.ioloop, tornado.httpserver
|
|||||||
import rparse, utils, version
|
import rparse, utils, version
|
||||||
|
|
||||||
|
|
||||||
class APILog(tornado.web.RequestHandler):
|
|
||||||
def get(self):
|
|
||||||
self.write(
|
|
||||||
dict(
|
|
||||||
d = self.application.get_log()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class APILogClear(tornado.web.RequestHandler):
|
|
||||||
def post(self):
|
|
||||||
self.application.clear_log()
|
|
||||||
self.write("OK")
|
|
||||||
|
|
||||||
|
|
||||||
class APIShutdown(tornado.web.RequestHandler):
|
|
||||||
def post(self):
|
|
||||||
tornado.ioloop.IOLoop.instance().stop()
|
|
||||||
self.write("OK")
|
|
||||||
|
|
||||||
|
|
||||||
class APIInfo(tornado.web.RequestHandler):
|
|
||||||
def get(self):
|
|
||||||
self.write(
|
|
||||||
dict(
|
|
||||||
version = version.IVERSION
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class _Page(tornado.web.RequestHandler):
|
|
||||||
def render(self, name, **kwargs):
|
|
||||||
tornado.web.RequestHandler.render(self, name + ".html", **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class Index(_Page):
|
|
||||||
name = "index"
|
|
||||||
section = "main"
|
|
||||||
def get(self):
|
|
||||||
self.render(self.name, section=self.section, spec="")
|
|
||||||
|
|
||||||
|
|
||||||
class Preview(_Page):
|
|
||||||
name = "preview"
|
|
||||||
section = "main"
|
|
||||||
SANITY = 1024*1024
|
|
||||||
def get(self):
|
|
||||||
spec = self.get_argument("spec", None)
|
|
||||||
args = dict(
|
|
||||||
spec = spec,
|
|
||||||
section = self.section,
|
|
||||||
syntaxerror = None,
|
|
||||||
error = None
|
|
||||||
)
|
|
||||||
try:
|
|
||||||
r = rparse.parse(self.application.settings, spec)
|
|
||||||
except rparse.ParseException, v:
|
|
||||||
args["syntaxerror"] = str(v)
|
|
||||||
args["marked"] = v.marked()
|
|
||||||
return self.render(self.name, **args)
|
|
||||||
if r.length() > self.SANITY:
|
|
||||||
error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length()
|
|
||||||
args["error"] = error
|
|
||||||
else:
|
|
||||||
d = utils.DummyRequest()
|
|
||||||
r.serve(d)
|
|
||||||
args["output"] = d.getvalue()
|
|
||||||
self.render(self.name, **args)
|
|
||||||
|
|
||||||
|
|
||||||
class Help(_Page):
|
|
||||||
name = "help"
|
|
||||||
section = "help"
|
|
||||||
def get(self):
|
|
||||||
self.render(self.name, section=self.section)
|
|
||||||
|
|
||||||
|
|
||||||
class Log(_Page):
|
|
||||||
name = "log"
|
|
||||||
section = "log"
|
|
||||||
def get(self):
|
|
||||||
self.render(self.name, section=self.section, log=self.application.log)
|
|
||||||
|
|
||||||
|
|
||||||
class OneLog(_Page):
|
|
||||||
name = "onelog"
|
|
||||||
section = "log"
|
|
||||||
def get(self, lid):
|
|
||||||
l = pprint.pformat(self.application.log_by_id(int(lid)))
|
|
||||||
self.render(self.name, section=self.section, alog=l, lid=lid)
|
|
||||||
|
|
||||||
|
|
||||||
class ClearLog(_Page):
|
|
||||||
def post(self):
|
|
||||||
self.application.clear_logs()
|
|
||||||
self.redirect("/log")
|
|
||||||
|
|
||||||
|
|
||||||
class Pathod(object):
|
class Pathod(object):
|
||||||
def __init__(self, spec, application, request, **settings):
|
def __init__(self, spec, application, request, **settings):
|
||||||
self.application, self.request, self.settings = application, request, settings
|
self.application, self.request, self.settings = application, request, settings
|
||||||
@ -262,3 +164,102 @@ def run(server):
|
|||||||
tornado.ioloop.IOLoop.instance().start()
|
tornado.ioloop.IOLoop.instance().start()
|
||||||
server.stop()
|
server.stop()
|
||||||
|
|
||||||
|
|
||||||
|
class APILog(tornado.web.RequestHandler):
|
||||||
|
def get(self):
|
||||||
|
self.write(
|
||||||
|
dict(
|
||||||
|
d = self.application.get_log()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class APILogClear(tornado.web.RequestHandler):
|
||||||
|
def post(self):
|
||||||
|
self.application.clear_log()
|
||||||
|
self.write("OK")
|
||||||
|
|
||||||
|
|
||||||
|
class APIShutdown(tornado.web.RequestHandler):
|
||||||
|
def post(self):
|
||||||
|
tornado.ioloop.IOLoop.instance().stop()
|
||||||
|
self.write("OK")
|
||||||
|
|
||||||
|
|
||||||
|
class APIInfo(tornado.web.RequestHandler):
|
||||||
|
def get(self):
|
||||||
|
self.write(
|
||||||
|
dict(
|
||||||
|
version = version.IVERSION
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class _Page(tornado.web.RequestHandler):
|
||||||
|
def render(self, name, **kwargs):
|
||||||
|
tornado.web.RequestHandler.render(self, name + ".html", **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class Index(_Page):
|
||||||
|
name = "index"
|
||||||
|
section = "main"
|
||||||
|
def get(self):
|
||||||
|
self.render(self.name, section=self.section, spec="")
|
||||||
|
|
||||||
|
|
||||||
|
class Preview(_Page):
|
||||||
|
name = "preview"
|
||||||
|
section = "main"
|
||||||
|
SANITY = 1024*1024
|
||||||
|
def get(self):
|
||||||
|
spec = self.get_argument("spec", None)
|
||||||
|
args = dict(
|
||||||
|
spec = spec,
|
||||||
|
section = self.section,
|
||||||
|
syntaxerror = None,
|
||||||
|
error = None
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
r = rparse.parse(self.application.settings, spec)
|
||||||
|
except rparse.ParseException, v:
|
||||||
|
args["syntaxerror"] = str(v)
|
||||||
|
args["marked"] = v.marked()
|
||||||
|
return self.render(self.name, **args)
|
||||||
|
if r.length() > self.SANITY:
|
||||||
|
error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length()
|
||||||
|
args["error"] = error
|
||||||
|
else:
|
||||||
|
d = utils.DummyRequest()
|
||||||
|
r.serve(d)
|
||||||
|
args["output"] = d.getvalue()
|
||||||
|
self.render(self.name, **args)
|
||||||
|
|
||||||
|
|
||||||
|
class Help(_Page):
|
||||||
|
name = "help"
|
||||||
|
section = "help"
|
||||||
|
def get(self):
|
||||||
|
self.render(self.name, section=self.section)
|
||||||
|
|
||||||
|
|
||||||
|
class Log(_Page):
|
||||||
|
name = "log"
|
||||||
|
section = "log"
|
||||||
|
def get(self):
|
||||||
|
self.render(self.name, section=self.section, log=self.application.log)
|
||||||
|
|
||||||
|
|
||||||
|
class OneLog(_Page):
|
||||||
|
name = "onelog"
|
||||||
|
section = "log"
|
||||||
|
def get(self, lid):
|
||||||
|
l = pprint.pformat(self.application.log_by_id(int(lid)))
|
||||||
|
self.render(self.name, section=self.section, alog=l, lid=lid)
|
||||||
|
|
||||||
|
|
||||||
|
class ClearLog(_Page):
|
||||||
|
def post(self):
|
||||||
|
self.application.clear_logs()
|
||||||
|
self.redirect("/log")
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,19 +4,6 @@ import pathod
|
|||||||
|
|
||||||
IFACE = "127.0.0.1"
|
IFACE = "127.0.0.1"
|
||||||
|
|
||||||
class PaThread(threading.Thread):
|
|
||||||
def __init__(self, q, app):
|
|
||||||
threading.Thread.__init__(self)
|
|
||||||
self.q = q
|
|
||||||
self.app = app
|
|
||||||
self.port = None
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
self.server, self.port = pathod.make_server(self.app, 0, IFACE, None)
|
|
||||||
self.q.put(self.port)
|
|
||||||
pathod.run(self.server)
|
|
||||||
|
|
||||||
|
|
||||||
class Daemon:
|
class Daemon:
|
||||||
def __init__(self, staticdir=None, anchors=()):
|
def __init__(self, staticdir=None, anchors=()):
|
||||||
self.app = pathod.make_app(staticdir=staticdir, anchors=anchors)
|
self.app = pathod.make_app(staticdir=staticdir, anchors=anchors)
|
||||||
@ -33,3 +20,17 @@ class Daemon:
|
|||||||
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
requests.post("%s/api/shutdown"%self.urlbase)
|
requests.post("%s/api/shutdown"%self.urlbase)
|
||||||
|
|
||||||
|
|
||||||
|
class PaThread(threading.Thread):
|
||||||
|
def __init__(self, q, app):
|
||||||
|
threading.Thread.__init__(self)
|
||||||
|
self.q = q
|
||||||
|
self.app = app
|
||||||
|
self.port = None
|
||||||
|
|
||||||
|
# begin nocover
|
||||||
|
def run(self):
|
||||||
|
self.server, self.port = pathod.make_server(self.app, 0, IFACE, None)
|
||||||
|
self.q.put(self.port)
|
||||||
|
pathod.run(self.server)
|
||||||
|
@ -31,41 +31,13 @@ class uApplication(libpry.AutoTree):
|
|||||||
assert not a.log_by_id(0)
|
assert not a.log_by_id(0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class uPages(libpry.AutoTree):
|
|
||||||
def dummy_page(self, path):
|
|
||||||
# A hideous, hideous kludge, but Tornado seems to have no more sensible
|
|
||||||
# way to do this.
|
|
||||||
a = pathod.PathodApp(staticdir=None)
|
|
||||||
for h in a.handlers[0][1]:
|
|
||||||
if h.regex.match(path):
|
|
||||||
klass = h.handler_class
|
|
||||||
r = httpserver.HTTPRequest("GET", path)
|
|
||||||
del r.connection
|
|
||||||
k = klass(a, r)
|
|
||||||
k._transforms = []
|
|
||||||
return k
|
|
||||||
|
|
||||||
def test_index(self):
|
|
||||||
page = self.dummy_page("/")
|
|
||||||
page.get()
|
|
||||||
assert "".join(page._write_buffer)
|
|
||||||
|
|
||||||
def test_help(self):
|
|
||||||
page = self.dummy_page("/help")
|
|
||||||
page.get()
|
|
||||||
assert "".join(page._write_buffer)
|
|
||||||
|
|
||||||
|
|
||||||
class u_make_server(libpry.AutoTree):
|
class u_make_server(libpry.AutoTree):
|
||||||
def test_simple(self):
|
def test_simple(self):
|
||||||
app = pathod.PathodApp()
|
app = pathod.PathodApp()
|
||||||
assert pathod.make_server(app, 0, "127.0.0.1", None)
|
assert pathod.make_server(app, 0, "127.0.0.1", None)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tests = [
|
tests = [
|
||||||
uApplication(),
|
uApplication(),
|
||||||
#uPages(),
|
|
||||||
u_make_server()
|
u_make_server()
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user