diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:59:04 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:59:04 +0000 |
| commit | 93a4f5df2f74e4cbefc70733f2c0258859207106 (patch) | |
| tree | 437a2e991d29dc555e6727ef753c5b8059859c40 /repoze/bfg/tests | |
| parent | 79957510964157dae99201b1b6a14ef209bc50f7 (diff) | |
| download | pyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.tar.gz pyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.tar.bz2 pyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.zip | |
Add a plug point for a security policy.
Diffstat (limited to 'repoze/bfg/tests')
| -rw-r--r-- | repoze/bfg/tests/test_router.py | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index 8f4b2ff95..c684e06b5 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -38,13 +38,15 @@ class RouterTests(unittest.TestCase, PlacelessSetup): headerii = [] def rootpolicy(environ): return None - def traversalpolicy(root, environ): + def traversalpolicy(environ, root): return DummyContext(), 'foo', [] + def securitypolicy(environ, context, name): + return None def start_response(status, headers): statii[:] = [status] headerii[:] = [headers] environ = self._makeEnviron() - router = self._makeOne(rootpolicy, traversalpolicy) + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) result = router(environ, start_response) headers = headerii[0] self.assertEqual(len(headers), 2) @@ -52,17 +54,40 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self.assertEqual(status, '404 Not Found') self.failUnless('http://localhost:8080' in result[0], result) + def test_call_securitypolicy_denies(self): + statii = [] + headerii = [] + def rootpolicy(environ): + return None + def traversalpolicy(environ, root): + return DummyContext(), 'foo', [] + def securitypolicy(environ, context, name): + from webob.exc import HTTPUnauthorized + return HTTPUnauthorized() + def start_response(status, headers): + statii[:] = [status] + headerii[:] = [headers] + environ = self._makeEnviron() + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) + result = router(environ, start_response) + headers = headerii[0] + self.assertEqual(len(headers), 2) + status = statii[0] + self.assertEqual(status, '401 Unauthorized') + def test_call_app_registered_nonspecific_default_path(self): def rootpolicy(environ): return None context = DummyContext() - def traversalpolicy(root, environ): + def traversalpolicy(environ, root): return context, '', [] def start_response(status, headers): pass + def securitypolicy(environ, context, name): + return None environ = self._makeEnviron() self._registerFactory(DummyWSGIApplicationFactory, '', None, None) - router = self._makeOne(rootpolicy, traversalpolicy) + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) result = router(environ, start_response) self.failUnless(result[0] is context) import webob @@ -73,13 +98,15 @@ class RouterTests(unittest.TestCase, PlacelessSetup): def rootpolicy(environ): return None context = DummyContext() - def traversalpolicy(root, environ): + def traversalpolicy(environ, root): return context, 'foo', ['bar', 'baz'] def start_response(status, headers): pass + def securitypolicy(environ, context, name): + return None environ = self._makeEnviron() self._registerFactory(DummyWSGIApplicationFactory, 'foo', None, None) - router = self._makeOne(rootpolicy, traversalpolicy) + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) result = router(environ, start_response) self.failUnless(result[0] is context) import webob @@ -95,15 +122,17 @@ class RouterTests(unittest.TestCase, PlacelessSetup): class IContext(Interface): pass directlyProvides(context, IContext) - def traversalpolicy(root, environ): + def traversalpolicy(environ, root): return context, 'foo', ['bar', 'baz'] def start_response(status, headers): pass + def securitypolicy(environ, context, name): + return None environ = self._makeEnviron() from repoze.bfg.interfaces import IWebObRequest self._registerFactory(DummyWSGIApplicationFactory, 'foo', IContext, IWebObRequest) - router = self._makeOne(rootpolicy, traversalpolicy) + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) result = router(environ, start_response) self.failUnless(result[0] is context) import webob @@ -123,16 +152,18 @@ class RouterTests(unittest.TestCase, PlacelessSetup): headerii = [] def rootpolicy(environ): return None - def traversalpolicy(root, environ): + def traversalpolicy(environ, root): return context, 'foo', [] def start_response(status, headers): statii[:] = [status] headerii[:] = [headers] + def securitypolicy(environ, context, name): + return None environ = self._makeEnviron() from repoze.bfg.interfaces import IWebObRequest self._registerFactory(DummyWSGIApplicationFactory, 'foo', IContext, IWebObRequest) - router = self._makeOne(rootpolicy, traversalpolicy) + router = self._makeOne(rootpolicy, traversalpolicy, securitypolicy) result = router(environ, start_response) headers = headerii[0] self.assertEqual(len(headers), 2) |
