From 116fcfcf7a744c98328bc9df87e9fa5490b66ae7 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 27 Apr 2012 15:56:42 +1200 Subject: Internal error page for WSGI. Also, 100% test coverage. --- test/test_wsgi.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/test_wsgi.py b/test/test_wsgi.py index f5f79f87..ab2e2668 100644 --- a/test/test_wsgi.py +++ b/test/test_wsgi.py @@ -1,4 +1,4 @@ -import cStringIO +import cStringIO, sys import libpry from libmproxy import wsgi import tutils @@ -19,10 +19,12 @@ class TestApp: class uWSGIAdaptor(libpry.AutoTree): def test_make_environ(self): w = wsgi.WSGIAdaptor(None, "foo", 80) - assert w.make_environ( - tutils.treq(), - None - ) + tr = tutils.treq() + assert w.make_environ(tr, None) + + tr.path = "/foo?bar=voing" + r = w.make_environ(tr, None) + assert r["QUERY_STRING"] == "bar=voing" def test_serve(self): ta = TestApp() @@ -40,6 +42,60 @@ class uWSGIAdaptor(libpry.AutoTree): assert "Hello world" in val assert "Server:" in val + def _serve(self, app): + w = wsgi.WSGIAdaptor(app, "foo", 80) + r = tutils.treq() + r.host = "foo" + r.port = 80 + wfile = cStringIO.StringIO() + err = w.serve(r, wfile) + return wfile.getvalue() + + def test_serve_empty_body(self): + def app(environ, start_response): + status = '200 OK' + response_headers = [('Foo', 'bar')] + start_response(status, response_headers) + return [] + assert self._serve(app) + + def test_serve_double_start(self): + def app(environ, start_response): + try: + raise ValueError("foo") + except: + ei = sys.exc_info() + status = '200 OK' + response_headers = [('Content-type', 'text/plain')] + start_response(status, response_headers) + start_response(status, response_headers) + assert "Internal Server Error" in self._serve(app) + + def test_serve_single_err(self): + def app(environ, start_response): + try: + raise ValueError("foo") + except: + ei = sys.exc_info() + status = '200 OK' + response_headers = [('Content-type', 'text/plain')] + start_response(status, response_headers, ei) + assert "Internal Server Error" in self._serve(app) + + def test_serve_double_err(self): + def app(environ, start_response): + try: + raise ValueError("foo") + except: + ei = sys.exc_info() + status = '200 OK' + response_headers = [('Content-type', 'text/plain')] + start_response(status, response_headers) + yield "aaa" + start_response(status, response_headers, ei) + yield "bbb" + assert "Internal Server Error" in self._serve(app) + class uAppRegistry(libpry.AutoTree): def test_add_get(self): -- cgit v1.2.3