summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-06-19 09:24:49 +0000
committerChris McDonough <chrism@agendaless.com>2009-06-19 09:24:49 +0000
commitb606d97195187bdb33e334a7a40df501b30e2f48 (patch)
tree487a09938f408e02757846d62796b582b0902ce3 /repoze/bfg/tests
parent65697f35f2670fc93e695a7ddf083320f8a11f1a (diff)
downloadpyramid-b606d97195187bdb33e334a7a40df501b30e2f48.tar.gz
pyramid-b606d97195187bdb33e334a7a40df501b30e2f48.tar.bz2
pyramid-b606d97195187bdb33e334a7a40df501b30e2f48.zip
- A new ZCML directive was added named ``notfound``. This ZCML
directive can be used to name a view that should be invoked when the request can't otherwise be resolved to a view callable. For example:: <notfound view="helloworld.views.notfound_view"/> - A new ZCML directive was added named ``forbidden``. This ZCML directive can be used to name a view that should be invoked when a view callable for a request is found, but cannot be invoked due to an authorization failure. For example:: <forbidden view="helloworld.views.forbidden_view"/>
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_router.py2
-rw-r--r--repoze/bfg/tests/test_zcml.py60
2 files changed, 59 insertions, 3 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 195d1bba7..1049fa752 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -184,7 +184,7 @@ class RouterTests(unittest.TestCase):
self.registry.registerUtility(factory, INotFoundAppFactory)
router = self._makeOne()
self.assertEqual(len(logger.messages), 1)
- self.failUnless('INotFoundView' in logger.messages[0])
+ self.failUnless('notfound_view' in logger.messages[0])
class DummyRequest:
def get_response(self, app):
return app
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index d537cf581..7fe33e56b 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -520,6 +520,62 @@ class TestViewDirective(unittest.TestCase):
self.assertRaises(ConfigurationError, self._callFUT, context,
'repoze.view', None, view, '', None, 'foo')
+class TestNotFoundDirective(unittest.TestCase):
+ def _callFUT(self, context, view):
+ from repoze.bfg.zcml import notfound
+ return notfound(context, view)
+
+ def test_it(self):
+ context = DummyContext()
+ def view(request):
+ return 'OK'
+ self._callFUT(context, view)
+ actions = context.actions
+ from repoze.bfg.interfaces import INotFoundView
+ from repoze.bfg.zcml import handler
+
+ self.assertEqual(len(actions), 1)
+
+ regadapt = actions[0]
+ regadapt_discriminator = ('notfound_view',)
+ self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
+ self.assertEqual(regadapt['callable'], handler)
+ self.assertEqual(regadapt['args'][0], 'registerUtility')
+ derived_view = regadapt['args'][1]
+ self.assertEqual(derived_view(None, None), 'OK')
+ self.assertEqual(derived_view.__name__, view.__name__)
+ self.assertEqual(regadapt['args'][2], INotFoundView)
+ self.assertEqual(regadapt['args'][3], '')
+ self.assertEqual(regadapt['args'][4], None)
+
+class TestForbiddenDirective(unittest.TestCase):
+ def _callFUT(self, context, view):
+ from repoze.bfg.zcml import forbidden
+ return forbidden(context, view)
+
+ def test_it(self):
+ context = DummyContext()
+ def view(request):
+ return 'OK'
+ self._callFUT(context, view)
+ actions = context.actions
+ from repoze.bfg.interfaces import IForbiddenView
+ from repoze.bfg.zcml import handler
+
+ self.assertEqual(len(actions), 1)
+
+ regadapt = actions[0]
+ regadapt_discriminator = ('notfound_view',)
+ self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
+ self.assertEqual(regadapt['callable'], handler)
+ self.assertEqual(regadapt['args'][0], 'registerUtility')
+ derived_view = regadapt['args'][1]
+ self.assertEqual(derived_view(None, None), 'OK')
+ self.assertEqual(derived_view.__name__, view.__name__)
+ self.assertEqual(regadapt['args'][2], IForbiddenView)
+ self.assertEqual(regadapt['args'][3], '')
+ self.assertEqual(regadapt['args'][4], None)
+
class TestDeriveView(unittest.TestCase):
def _callFUT(self, view):
from repoze.bfg.zcml import derive_view
@@ -787,7 +843,7 @@ class TestConnectRouteFunction(unittest.TestCase):
'conditions':{'sub_domain':['a', 'b']}
})
-class TestRoute(unittest.TestCase):
+class TestRouteDirective(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -978,7 +1034,7 @@ class TestBFGViewFunctionGrokker(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 0)
-class TestZCMLScanFunction(unittest.TestCase):
+class TestZCMLScanDirective(unittest.TestCase):
def setUp(self):
cleanUp()