summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-25 03:10:29 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-25 03:10:29 +0000
commitde49699ef9eeccc6339f29d2e197d6f26d4904dc (patch)
treeaf036d35b81a44af233eb4358fe677b87eb8bfc1
parentcfd4e5e06d05dac3e8f1c03b63bc3cf37242334a (diff)
downloadpyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.tar.gz
pyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.tar.bz2
pyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.zip
Test coverage.
-rw-r--r--repoze/bfg/functional.py6
-rw-r--r--repoze/bfg/tests/test_router.py56
-rw-r--r--repoze/bfg/tests/test_traversal.py8
-rw-r--r--repoze/bfg/tests/test_wsgi.py84
-rw-r--r--repoze/bfg/traversal.py1
-rw-r--r--repoze/bfg/wsgi.py1
6 files changed, 141 insertions, 15 deletions
diff --git a/repoze/bfg/functional.py b/repoze/bfg/functional.py
index cf196ebd8..351bcc4b6 100644
--- a/repoze/bfg/functional.py
+++ b/repoze/bfg/functional.py
@@ -94,10 +94,8 @@ def update_wrapper(wrapper,
function (defaults to functools.WRAPPER_UPDATES)
"""
for attr in assigned:
- try:
- setattr(wrapper, attr, getattr(wrapped, attr))
- except TypeError: # Python 2.3 doesn't allow assigning to __name__.
- pass
+ setattr(wrapper, attr, getattr(wrapped, attr))
+
for attr in updated:
getattr(wrapper, attr).update(getattr(wrapped, attr))
# Return the wrapper so this can be used as a decorator via curry()
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index c17bc623a..99f982371 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -518,6 +518,26 @@ class RouterTests(unittest.TestCase):
self.failIf(IPOSTRequest.providedBy(request))
self.failUnless(IRequest.providedBy(request))
+ def test_call_unknown_method(self):
+ from repoze.bfg.interfaces import INewRequest
+ from repoze.bfg.interfaces import IRequest
+ rootfactory = make_rootfactory(None)
+ context = DummyContext()
+ traversalfactory = make_traversal_factory(context, '', [])
+ response = DummyResponse()
+ response.app_iter = ['Hello world']
+ view = make_view(response)
+ environ = self._makeEnviron(REQUEST_METHOD='UNKNOWN')
+ self._registerTraverserFactory(traversalfactory, '', None)
+ self._registerView(view, '', None, None)
+ self._registerRootFactory(rootfactory)
+ router = self._makeOne()
+ start_response = DummyStartResponse()
+ request_events = self._registerEventListener(INewRequest)
+ result = router(environ, start_response)
+ request = request_events[0].request
+ self.failUnless(IRequest.providedBy(request))
+
def test_call_irequestfactory_override(self):
from repoze.bfg.interfaces import INewRequest
from repoze.bfg.interfaces import IRequestFactory
@@ -541,6 +561,42 @@ class RouterTests(unittest.TestCase):
result = router(environ, start_response)
request = request_events[0].request
self.failUnless(isinstance(request, Request2))
+
+ def test_call_inotfound_appfactory_override(self):
+ from repoze.bfg.interfaces import INotFoundAppFactory
+ def app():
+ """ """
+ self.registry.registerUtility(app, INotFoundAppFactory)
+ rootfactory = make_rootfactory(None)
+ context = DummyContext()
+ traversalfactory = make_traversal_factory(context, '', [])
+ response = DummyResponse()
+ response.app_iter = ['Hello world']
+ view = make_view(response)
+ environ = self._makeEnviron()
+ self._registerTraverserFactory(traversalfactory, '', None)
+ self._registerView(view, '', None, None)
+ self._registerRootFactory(rootfactory)
+ router = self._makeOne()
+ self.assertEqual(router.notfound_app_factory, app)
+
+ def test_call_iunauth_appfactory_override(self):
+ from repoze.bfg.interfaces import IUnauthorizedAppFactory
+ def app():
+ """ """
+ self.registry.registerUtility(app, IUnauthorizedAppFactory)
+ rootfactory = make_rootfactory(None)
+ context = DummyContext()
+ traversalfactory = make_traversal_factory(context, '', [])
+ response = DummyResponse()
+ response.app_iter = ['Hello world']
+ view = make_view(response)
+ environ = self._makeEnviron()
+ self._registerTraverserFactory(traversalfactory, '', None)
+ self._registerView(view, '', None, None)
+ self._registerRootFactory(rootfactory)
+ router = self._makeOne()
+ self.assertEqual(router.unauth_app_factory, app)
class MakeAppTests(unittest.TestCase):
def setUp(self):
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index e7b8158c4..2de08a314 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -74,6 +74,14 @@ class ModelGraphTraverserTests(unittest.TestCase):
context = DummyContext()
verifyObject(ITraverser, self._makeOne(context))
+ def test_call_with_no_pathinfo(self):
+ policy = self._makeOne(None)
+ environ = self._getEnviron()
+ ctx, name, subpath = policy(environ)
+ self.assertEqual(ctx, None)
+ self.assertEqual(name, '')
+ self.assertEqual(subpath, [])
+
def test_call_pathel_with_no_getitem(self):
policy = self._makeOne(None)
environ = self._getEnviron(PATH_INFO='/foo/bar')
diff --git a/repoze/bfg/tests/test_wsgi.py b/repoze/bfg/tests/test_wsgi.py
index e19e65044..95eaecf80 100644
--- a/repoze/bfg/tests/test_wsgi.py
+++ b/repoze/bfg/tests/test_wsgi.py
@@ -1,21 +1,87 @@
import unittest
-from zope.testing.cleanup import cleanUp
class WSGIAppTests(unittest.TestCase):
- def setUp(self):
- cleanUp()
+ def _callFUT(self, app):
+ from repoze.bfg.wsgi import wsgiapp
+ return wsgiapp(app)
- def tearDown(self):
- cleanUp()
-
def test_decorator(self):
- from repoze.bfg.wsgi import wsgiapp
- wrapped = wsgiapp(dummyapp)
context = DummyContext()
request = DummyRequest()
- response = wrapped(context, request)
+ decorator = self._callFUT(dummyapp)
+ response = decorator(context, request)
self.assertEqual(response, dummyapp)
+class TestNotFound(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.wsgi import NotFound
+ return NotFound
+
+ def _makeOne(self):
+ return self._getTargetClass()()
+
+ def test_no_message(self):
+ environ = {}
+ L = []
+ def start_response(status, headers):
+ L.append((status, headers))
+ app = self._makeOne()
+ result = app(environ, start_response)
+ self.assertEqual(len(result), 1)
+ self.failUnless('404 Not Found' in result[0])
+ self.assertEqual(L[0][0], '404 Not Found')
+ self.assertEqual(L[0][1], [('Content-Length', len(result[0])),
+ ('Content-Type', 'text/html')])
+
+ def test_with_message(self):
+ environ = {'message':'<hi!>'}
+ L = []
+ def start_response(status, headers):
+ L.append((status, headers))
+ app = self._makeOne()
+ result = app(environ, start_response)
+ self.assertEqual(len(result), 1)
+ self.failUnless('404 Not Found' in result[0])
+ self.failUnless('&lt;hi!&gt;' in result[0])
+ self.assertEqual(L[0][0], '404 Not Found')
+ self.assertEqual(L[0][1], [('Content-Length', len(result[0])),
+ ('Content-Type', 'text/html')])
+
+class TestUnauthorized(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.wsgi import Unauthorized
+ return Unauthorized
+
+ def _makeOne(self):
+ return self._getTargetClass()()
+
+ def test_no_message(self):
+ environ = {}
+ L = []
+ def start_response(status, headers):
+ L.append((status, headers))
+ app = self._makeOne()
+ result = app(environ, start_response)
+ self.assertEqual(len(result), 1)
+ self.failUnless('401 Unauthorized' in result[0])
+ self.assertEqual(L[0][0], '401 Unauthorized')
+ self.assertEqual(L[0][1], [('Content-Length', len(result[0])),
+ ('Content-Type', 'text/html')])
+
+ def test_with_message(self):
+ environ = {'message':'<hi!>'}
+ L = []
+ def start_response(status, headers):
+ L.append((status, headers))
+ app = self._makeOne()
+ result = app(environ, start_response)
+ self.assertEqual(len(result), 1)
+ self.failUnless('401 Unauthorized' in result[0])
+ self.failUnless('&lt;hi!&gt;' in result[0])
+ self.assertEqual(L[0][0], '401 Unauthorized')
+ self.assertEqual(L[0][1], [('Content-Length', len(result[0])),
+ ('Content-Type', 'text/html')])
+
def dummyapp(environ, start_response):
""" """
diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py
index 95a0e88e7..d3befe86c 100644
--- a/repoze/bfg/traversal.py
+++ b/repoze/bfg/traversal.py
@@ -131,7 +131,6 @@ class ModelGraphTraverser(object):
self.root = root
self.locatable = ILocation.providedBy(root)
- #61089 function calls (61086 primitive calls) in 0.191 CPU seconds
def __call__(self, environ, _marker=_marker):
try:
path = environ['PATH_INFO']
diff --git a/repoze/bfg/wsgi.py b/repoze/bfg/wsgi.py
index 38cca58a3..1a2c0460b 100644
--- a/repoze/bfg/wsgi.py
+++ b/repoze/bfg/wsgi.py
@@ -55,4 +55,3 @@ class NotFound(HTTPException):
class Unauthorized(HTTPException):
""" The default Unauthorized WSGI application """
status = '401 Unauthorized'
-