From ce8f9b5eadf324b4cc3154004bcf9f1f03e7d6c8 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sat, 10 Oct 2009 02:30:50 +0000 Subject: - The ``notfound`` and ``forbidden`` ZCML directives now accept the following addtional attributes: ``attr``, ``renderer``, and ``wrapper``. These have the same meaning as they do in the context of a ZCML ``view`` directive. --- repoze/bfg/tests/test_zcml.py | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'repoze/bfg/tests') diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index 35584f301..7cbadd1e2 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -947,6 +947,12 @@ class TestViewDirective(unittest.TestCase): self.assertEqual(wrapper, view) class TestNotFoundDirective(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + def _callFUT(self, context, view): from repoze.bfg.zcml import notfound return notfound(context, view) @@ -972,6 +978,12 @@ class TestNotFoundDirective(unittest.TestCase): self.assertEqual(derived_view.__name__, view.__name__) class TestForbiddenDirective(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + def _callFUT(self, context, view): from repoze.bfg.zcml import forbidden return forbidden(context, view) @@ -996,6 +1008,67 @@ class TestForbiddenDirective(unittest.TestCase): self.assertEqual(derived_view(None, None), 'OK') self.assertEqual(derived_view.__name__, view.__name__) +class TestViewUtility(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + + def _callFUT(self, context, view, attr, renderer, wrapper, iface): + from repoze.bfg.zcml import view_utility + return view_utility(context, view, attr, renderer, wrapper, iface) + + def test_no_view_no_renderer(self): + from zope.configuration.exceptions import ConfigurationError + context = DummyContext() + self.assertRaises(ConfigurationError, self._callFUT, context, + None, None, None, None, None) + + def test_no_view_with_renderer(self): + from zope.component import getSiteManager + from zope.interface import Interface + from repoze.bfg.interfaces import IRendererFactory + sm = getSiteManager() + def renderer(path): + return lambda *arg: 'OK' + sm.registerUtility(renderer, IRendererFactory, name='dummy') + class IDummy(Interface): + pass + context = DummyContext() + self._callFUT(context, None, None, 'dummy', None, IDummy) + actions = context.actions + self.assertEqual(len(actions), 1) + regadapt = actions[0] + self.assertEqual(regadapt['discriminator'], IDummy) + register = regadapt['callable'] + register() + derived_view = sm.getUtility(IDummy) + request = DummyRequest() + self.assertEqual(derived_view(None, request).body, 'OK') + + def test_template_renderer(self): + from zope.component import getSiteManager + from zope.interface import Interface + from repoze.bfg.interfaces import IRendererFactory + sm = getSiteManager() + def renderer(path): + return lambda *arg: 'OK' + sm.registerUtility(renderer, IRendererFactory, name='.pt') + class IDummy(Interface): + pass + context = DummyContext() + self._callFUT(context, None, None, 'fixtures/minimal.pt', None, IDummy) + actions = context.actions + self.assertEqual(len(actions), 1) + regadapt = actions[0] + self.assertEqual(regadapt['discriminator'], IDummy) + register = regadapt['callable'] + register() + derived_view = sm.getUtility(IDummy) + request = DummyRequest() + self.assertEqual(derived_view(None, request).body, 'OK') + class TestRepozeWho1AuthenticationPolicyDirective(unittest.TestCase): def setUp(self): cleanUp() -- cgit v1.2.3