summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_router.py
diff options
context:
space:
mode:
Diffstat (limited to 'repoze/bfg/tests/test_router.py')
-rw-r--r--repoze/bfg/tests/test_router.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index a4d0cb369..2a8539d4c 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -123,6 +123,24 @@ class RouterTests(unittest.TestCase):
self.failIf('debug_notfound' in result[0])
self.assertEqual(len(logger.messages), 0)
+ def test_call_root_is_icontextnotfound(self):
+ from zope.interface import implements
+ from repoze.bfg.interfaces import IContextNotFound
+ class NotFound(object):
+ implements(IContextNotFound)
+ context = NotFound()
+ traversalfactory = make_traversal_factory(context, '', [])
+ self._registerTraverserFactory(traversalfactory, '', None)
+ environ = self._makeEnviron()
+ start_response = DummyStartResponse()
+ rootfactory = make_rootfactory(NotFound())
+ self._registerRootFactory(rootfactory)
+ router = self._makeOne(None)
+ result = router(environ, start_response)
+ status = start_response.status
+ self.assertEqual(status, '404 Not Found')
+ self.failUnless('http://localhost:8080' in result[0], result)
+
def test_call_no_view_registered_debug_notfound_false(self):
rootfactory = make_rootfactory(None)
environ = self._makeEnviron()
@@ -587,6 +605,75 @@ class MakeAppTests(unittest.TestCase):
finally:
repoze.bfg.router.registry_manager = old_registry_manager
+ def test_routes_in_config_with_rootpolicy(self):
+ options= {'reload_templates':True,
+ 'debug_authorization':True}
+ import repoze.bfg.router
+ old_registry_manager = repoze.bfg.router.registry_manager
+ dummy_registry_manager = DummyRegistryManager()
+ repoze.bfg.router.registry_manager = dummy_registry_manager
+ from repoze.bfg.urldispatch import RoutesRootFactory
+ try:
+ from repoze.bfg.tests import routesapp
+ rootpolicy = make_rootfactory(None)
+ app = self._callFUT(rootpolicy, routesapp, options=options)
+ from repoze.bfg.interfaces import ISettings
+ from repoze.bfg.interfaces import ILogger
+ from repoze.bfg.interfaces import IRootFactory
+ settings = app.registry.getUtility(ISettings)
+ logger = app.registry.getUtility(ILogger, name='repoze.bfg.debug')
+ rootfactory = app.registry.getUtility(IRootFactory)
+ self.assertEqual(logger.name, 'repoze.bfg.debug')
+ self.assertEqual(settings.reload_templates, True)
+ self.assertEqual(settings.debug_authorization, True)
+ self.failUnless(isinstance(rootfactory, RoutesRootFactory))
+ self.assertEqual(rootfactory.get_root, rootpolicy)
+ self.assertEqual(dummy_registry_manager.pushed, True)
+ self.assertEqual(dummy_registry_manager.popped, True)
+ finally:
+ repoze.bfg.router.registry_manager = old_registry_manager
+
+ def test_routes_in_config_no_rootpolicy(self):
+ options= {'reload_templates':True,
+ 'debug_authorization':True}
+ import repoze.bfg.router
+ old_registry_manager = repoze.bfg.router.registry_manager
+ dummy_registry_manager = DummyRegistryManager()
+ repoze.bfg.router.registry_manager = dummy_registry_manager
+ from repoze.bfg.urldispatch import RoutesRootFactory
+ try:
+ from repoze.bfg.tests import routesapp
+ app = self._callFUT(None, routesapp, options=options)
+ from repoze.bfg.interfaces import ISettings
+ from repoze.bfg.interfaces import ILogger
+ from repoze.bfg.interfaces import IRootFactory
+ settings = app.registry.getUtility(ISettings)
+ logger = app.registry.getUtility(ILogger, name='repoze.bfg.debug')
+ rootfactory = app.registry.getUtility(IRootFactory)
+ self.assertEqual(logger.name, 'repoze.bfg.debug')
+ self.assertEqual(settings.reload_templates, True)
+ self.assertEqual(settings.debug_authorization, True)
+ self.failUnless(isinstance(rootfactory, RoutesRootFactory))
+ self.assertEqual(rootfactory.get_root, None)
+ self.assertEqual(dummy_registry_manager.pushed, True)
+ self.assertEqual(dummy_registry_manager.popped, True)
+ finally:
+ repoze.bfg.router.registry_manager = old_registry_manager
+
+ def test_no_routes_in_config_no_rootpolicy(self):
+ options= {'reload_templates':True,
+ 'debug_authorization':True}
+ import repoze.bfg.router
+ old_registry_manager = repoze.bfg.router.registry_manager
+ dummy_registry_manager = DummyRegistryManager()
+ repoze.bfg.router.registry_manager = dummy_registry_manager
+ try:
+ from repoze.bfg.tests import fixtureapp
+ self.assertRaises(ValueError, self._callFUT, None, fixtureapp,
+ options=options)
+ finally:
+ repoze.bfg.router.registry_manager = old_registry_manager
+
class DummyRegistryManager:
def push(self, registry):
self.pushed = True