diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-01-25 03:10:29 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-01-25 03:10:29 +0000 |
| commit | de49699ef9eeccc6339f29d2e197d6f26d4904dc (patch) | |
| tree | af036d35b81a44af233eb4358fe677b87eb8bfc1 | |
| parent | cfd4e5e06d05dac3e8f1c03b63bc3cf37242334a (diff) | |
| download | pyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.tar.gz pyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.tar.bz2 pyramid-de49699ef9eeccc6339f29d2e197d6f26d4904dc.zip | |
Test coverage.
| -rw-r--r-- | repoze/bfg/functional.py | 6 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_router.py | 56 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 8 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_wsgi.py | 84 | ||||
| -rw-r--r-- | repoze/bfg/traversal.py | 1 | ||||
| -rw-r--r-- | repoze/bfg/wsgi.py | 1 |
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('<hi!>' 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('<hi!>' 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' - |
