diff options
Diffstat (limited to 'test.py')
-rwxr-xr-x | test.py | 44 |
1 files changed, 35 insertions, 9 deletions
@@ -1,12 +1,19 @@ -#!/usr/bin/env python2.5 +#!/usr/bin/env python import unittest import doctest - +import wsgiref.validate +# Cannot use io module as it is broken in 2.6. +# Writing a str to a io.StringIO results in an exception. +try: + import cStringIO as io +except ImportError: + import StringIO as io try: from hashlib import md5 except ImportError: from md5 import md5 +import sys try: next @@ -20,7 +27,21 @@ class Request: @type case: unittest.TestCase """ self.testcase = case - self.environ = dict(REQUEST_METHOD="GET") + self.environ = dict( + REQUEST_METHOD="GET", + SERVER_NAME="localhost", + SERVER_PORT="80", + SCRIPT_NAME="", + PATH_INFO="", + QUERY_STRING="") + self.environ.update({ + "wsgi.version": (1, 0), + "wsgi.input": io.StringIO(), + "wsgi.errors": sys.stderr, + "wsgi.url_scheme": "http", + "wsgi.multithread": False, + "wsgi.multiprocess": False, + "wsgi.run_once": False}) def setenv(self, key, value): """ @@ -48,6 +69,7 @@ class Request: return req def __call__(self, app): + app = wsgiref.validate.validator(app) res = Result(self.testcase) def write(data): res.writtendata.append(data) @@ -55,7 +77,10 @@ class Request: res.statusdata = status res.headersdata = headers return write - res.returneddata = app(self.environ, start_response) + iterator = app(self.environ, start_response) + self.returneddata = list(iterator) + if hasattr(iterator, "close"): + iterator.close() return res class Result: @@ -105,8 +130,8 @@ from wsgitools import applications class StaticContentTest(unittest.TestCase): def setUp(self): - self.app = applications.StaticContent("200 Found", [("Spam", "Egg")], - "nothing") + self.app = applications.StaticContent( + "200 Found", [("Content-Type", "text/plain")], "nothing") self.req = Request(self) def testGet(self): @@ -125,9 +150,11 @@ from wsgitools import digest class AuthDigestMiddlewareTest(unittest.TestCase): def setUp(self): - self.staticapp = applications.StaticContent("200 Found", [], "success") + self.staticapp = applications.StaticContent( + "200 Found", [("Content-Type", "text/plain")], "success") token_gen = digest.AuthTokenGenerator("foo", lambda _: "baz") - self.app = digest.AuthDigestMiddleware(self.staticapp, token_gen) + self.app = digest.AuthDigestMiddleware( + wsgiref.validate.validator(self.staticapp), token_gen) self.req = Request(self) def test401(self): @@ -165,7 +192,6 @@ fullsuite.addTest(alltests(AuthDigestMiddlewareTest)) if __name__ == "__main__": runner = unittest.TextTestRunner(verbosity=2) - import sys if "profile" in sys.argv: try: import cProfile as profile |