From d2f739d40ffe84538e0f743704d2f5c9331a1ba9 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Wed, 28 Nov 2012 16:08:20 +0100 Subject: added test for CachingMiddleware --- test.py | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index 5a96f93..3eb9553 100755 --- a/test.py +++ b/test.py @@ -48,21 +48,25 @@ class Request: """ @type key: str @type value: str + @returns: self """ self.environ[key] = value + return self def setmethod(self, request_method): """ @type request_method: str + @returns: self """ - self.setenv("REQUEST_METHOD", request_method) + return self.setenv("REQUEST_METHOD", request_method) def setheader(self, name, value): """ @type name: str @type value: str + @returns: self """ - self.setenv(name.upper().replace('-', '_'), value) + return self.setenv("HTTP_" + name.upper().replace('-', '_'), value) def copy(self): req = Request(self.testcase) @@ -190,14 +194,14 @@ class AuthDigestMiddlewareTest(unittest.TestCase): def test401garbage(self): req = self.req.copy() - req.setheader('http-authorization', 'Garbage') + req.setheader('Authorization', 'Garbage') res = req(self.app) res.status(401) res.header("WWW-Authenticate", lambda _: True) def test401digestgarbage(self): req = self.req.copy() - req.setheader('http-authorization', 'Digest ","') + req.setheader('Authorization', 'Digest ","') res = req(self.app) res.status(401) res.header("WWW-Authenticate", lambda _: True) @@ -211,7 +215,7 @@ class AuthDigestMiddlewareTest(unittest.TestCase): token = md5("bar:foo:%s" % password).hexdigest() other = md5("GET:").hexdigest() resp = md5("%s:%s:%s" % (token, nonce, other)).hexdigest() - req.setheader('http-authorization', 'Digest algorithm=md5,nonce="%s",' \ + req.setheader('Authorization', 'Digest algorithm=md5,nonce="%s",' \ 'uri=,username=bar,response="%s"' % (nonce, resp)) res = req(self.app) res.status(status) @@ -231,7 +235,7 @@ class AuthDigestMiddlewareTest(unittest.TestCase): token = md5("bar:foo:baz").hexdigest() other = md5("GET:").hexdigest() resp = md5("%s:%s:1:qux:auth:%s" % (token, nonce, other)).hexdigest() - req.setheader('http-authorization', 'Digest algorithm=md5,nonce="%s",' \ + req.setheader('Authorization', 'Digest algorithm=md5,nonce="%s",' \ 'uri=,username=bar,response="%s",qop=auth,nc=1,' \ 'cnonce=qux' % (nonce, resp)) res = req(self.app) @@ -303,6 +307,37 @@ class ContentLengthMiddlewareTest(unittest.TestCase): res.status("200 Found") res.header("Content-length", "7") +class CachingMiddlewareTest(unittest.TestCase): + def setUp(self): + self.cached = middlewares.CachingMiddleware(self.app) + self.accessed = dict() + + def app(self, environ, start_response): + count = self.accessed.get(environ["SCRIPT_NAME"], 0) + 1 + self.accessed[environ["SCRIPT_NAME"]] = count + headers = [("Content-Type", "text/plain")] + if "maxage0" in environ["SCRIPT_NAME"]: + headers.append(("Cache-Control", "max-age=0")) + start_response("200 Found", headers) + return ["%d" % count] + + def testCache(self): + res = Request(self)(self.cached) + res.status(200) + self.assertEqual(res.get_data(), "1") + res = Request(self)(self.cached) + res.status(200) + self.assertEqual(res.get_data(), "1") + + def testNoCache(self): + res = Request(self)(self.cached) + res.status(200) + self.assertEqual(res.get_data(), "1") + res = Request(self).setheader( + "Cache-Control", "max-age=0")(self.cached) + res.status(200) + self.assertEqual(res.get_data(), "2") + class BasicAuthMiddlewareTest(unittest.TestCase): def setUp(self): self.staticapp = applications.StaticContent( @@ -319,14 +354,14 @@ class BasicAuthMiddlewareTest(unittest.TestCase): def test401garbage(self): req = self.req.copy() - req.setheader('http-authorization', 'Garbage') + req.setheader('Authorization', 'Garbage') res = req(self.app) res.status(401) res.header("WWW-Authenticate", lambda _: True) def test401basicgarbage(self): req = self.req.copy() - req.setheader('http-authorization', 'Basic ()') + req.setheader('Authorization', 'Basic ()') res = req(self.app) res.status(401) res.header("WWW-Authenticate", lambda _: True) @@ -334,7 +369,7 @@ class BasicAuthMiddlewareTest(unittest.TestCase): def doauth(self, password="baz", status=200): req = self.req.copy() token = ("bar:%s" % password).encode("base64").strip() - req.setheader('http-authorization', 'Basic %s' % token) + req.setheader('Authorization', 'Basic %s' % token) res = req(self.app) res.status(status) @@ -383,6 +418,7 @@ fullsuite.addTest(alltests(StaticContentTest)) fullsuite.addTest(alltests(StaticFileTest)) fullsuite.addTest(alltests(AuthDigestMiddlewareTest)) fullsuite.addTest(alltests(ContentLengthMiddlewareTest)) +fullsuite.addTest(alltests(CachingMiddlewareTest)) fullsuite.addTest(alltests(BasicAuthMiddlewareTest)) fullsuite.addTest(alltests(NoWriteCallableMiddlewareTest)) fullsuite.addTest(alltests(RequestLogWSGIFilterTest)) -- cgit v1.2.3