summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2012-11-28 16:08:20 +0100
committerHelmut Grohne <helmut@subdivi.de>2012-11-28 16:08:20 +0100
commitd2f739d40ffe84538e0f743704d2f5c9331a1ba9 (patch)
tree7a552f5bd10caf0c63df152947a79986dccf9891
parent576bd830cf77dae71b2cd10f0241667fe48930a6 (diff)
downloadwsgitools-d2f739d40ffe84538e0f743704d2f5c9331a1ba9.tar.gz
added test for CachingMiddleware
-rwxr-xr-xtest.py54
1 files 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))