summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_zcml.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-14 04:33:38 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-14 04:33:38 +0000
commit04e182bbc0c077afcd921f0df4231020549dc217 (patch)
treea994d2508aaac376b76e04dd4335129b6391dca1 /repoze/bfg/tests/test_zcml.py
parentf587c76deac60c0a328975dcc4641d0f85984e63 (diff)
downloadpyramid-04e182bbc0c077afcd921f0df4231020549dc217.tar.gz
pyramid-04e182bbc0c077afcd921f0df4231020549dc217.tar.bz2
pyramid-04e182bbc0c077afcd921f0df4231020549dc217.zip
- A ZCML ``view`` directive (and the associated ``bfg_view``
decorator) can now accept an "attr" value. If an "attr" value is supplied, it is considered a method named of the view object to be called when the response is required. This is typically only good for views that are classes or instances (not so useful for functions, as functions typically have no methods other than ``__call__``). - A ZCML ``view`` directive (and the associated ``bfg_view`` decorator) can now accept a "template" value. If a "template" value is supplied, and the view callable returns a dictionary, the associated template is rendered with the dictionary as keyword arguments.
Diffstat (limited to 'repoze/bfg/tests/test_zcml.py')
-rw-r--r--repoze/bfg/tests/test_zcml.py149
1 files changed, 112 insertions, 37 deletions
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 9e8c70cbd..e54bd108f 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -1,3 +1,7 @@
+import logging
+
+logging.basicConfig()
+
import unittest
from repoze.bfg.testing import cleanUp
@@ -35,7 +39,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -66,7 +71,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -102,7 +108,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -133,7 +140,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -172,7 +180,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -210,7 +219,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -249,7 +259,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -287,7 +298,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -303,6 +315,45 @@ class TestViewDirective(unittest.TestCase):
perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
self.assertEqual(perm, None)
+ def test_with_reltemplate(self):
+ from zope.interface import Interface
+ from zope.component import getSiteManager
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IViewPermission
+
+ import repoze.bfg.tests
+
+ context = DummyContext(repoze.bfg.tests)
+ class IFoo(Interface):
+ pass
+ class view(object):
+ def __init__(self, context, request):
+ self.request = request
+ self.context = context
+
+ def __call__(self):
+ return {'a':'1'}
+
+ import os
+ fixture = 'fixtures/minimal.txt'
+ self._callFUT(context, 'repoze.view', IFoo, view=view, template=fixture)
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ self.assertEqual(wrapper.__module__, view.__module__)
+ self.assertEqual(wrapper.__name__, view.__name__)
+ self.assertEqual(wrapper.__doc__, view.__doc__)
+ result = wrapper(None, None)
+ self.assertEqual(result.body, 'Hello.\n')
def test_request_type_asinterface(self):
from zope.component import getSiteManager
@@ -322,7 +373,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IDummy, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IDummy, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -352,7 +404,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', Dummy, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', Dummy, IView, None, None, None, None, None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -378,7 +430,8 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, 'GET', None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'GET', None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -407,7 +460,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(actions[0]['discriminator'], discrim)
register = actions[0]['callable']
register()
@@ -441,7 +495,7 @@ class TestViewDirective(unittest.TestCase):
factory = sm.getUtility(IRouteRequest, 'foo')
request_type = implementedBy(factory)
discrim = ('view', IFoo, '', request_type, IView, None, None, None,
- 'foo')
+ 'foo', None)
self.assertEqual(action['discriminator'], discrim)
the_view = sm.adapters.lookup((IFoo, request_type), IView, name='')
request = factory({})
@@ -463,7 +517,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -489,7 +544,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -514,7 +570,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -540,7 +597,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -565,7 +623,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -591,7 +650,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -618,7 +678,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -645,7 +706,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -673,7 +735,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -715,7 +778,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -741,7 +805,8 @@ class TestViewDirective(unittest.TestCase):
actions = context.actions
self.assertEqual(len(actions), 1)
action = actions[0]
- discrim = ('view', Foo, '', IRequest, IView, None, None, None, None)
+ discrim = ('view', Foo, '', IRequest, IView, None, None, None, None,
+ None)
self.assertEqual(action['discriminator'], discrim)
register = action['callable']
register()
@@ -1110,7 +1175,7 @@ class TestDeriveView(unittest.TestCase):
def test_view_with_debug_authorization_no_authpol(self):
def view(context, request):
return 'OK'
- self._registerSettings(debug_authorization=True)
+ self._registerSettings(debug_authorization=True, reload_templates=True)
logger = self._registerLogger()
result = self._callFUT(view, permission='view')
self.assertEqual(view.__module__, result.__module__)
@@ -1130,7 +1195,7 @@ class TestDeriveView(unittest.TestCase):
def test_view_with_debug_authorization_no_permission(self):
def view(context, request):
return 'OK'
- self._registerSettings(debug_authorization=True)
+ self._registerSettings(debug_authorization=True, reload_templates=True)
self._registerSecurityPolicy(True)
logger = self._registerLogger()
result = self._callFUT(view)
@@ -1151,7 +1216,7 @@ class TestDeriveView(unittest.TestCase):
def test_view_with_debug_authorization_permission_authpol_permitted(self):
def view(context, request):
return 'OK'
- self._registerSettings(debug_authorization=True)
+ self._registerSettings(debug_authorization=True, reload_templates=True)
logger = self._registerLogger()
self._registerSecurityPolicy(True)
result = self._callFUT(view, permission='view')
@@ -1172,7 +1237,7 @@ class TestDeriveView(unittest.TestCase):
from repoze.bfg.security import Unauthorized
def view(context, request):
""" """
- self._registerSettings(debug_authorization=True)
+ self._registerSettings(debug_authorization=True, reload_templates=True)
logger = self._registerLogger()
self._registerSecurityPolicy(False)
result = self._callFUT(view, permission='view')
@@ -1192,7 +1257,7 @@ class TestDeriveView(unittest.TestCase):
def test_view_with_debug_authorization_permission_authpol_denied2(self):
def view(context, request):
""" """
- self._registerSettings(debug_authorization=True)
+ self._registerSettings(debug_authorization=True, reload_templates=True)
logger = self._registerLogger()
self._registerSecurityPolicy(False)
result = self._callFUT(view, permission='view')
@@ -1330,7 +1395,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1340,6 +1405,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], None)
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
register = view_action['callable']
register()
sm = getSiteManager()
@@ -1378,7 +1444,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], IDummy)
self.assertEqual(view_discriminator[2],'')
@@ -1388,6 +1454,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], None)
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
request = DummyRequest()
self.assertEqual(wrapped(None, request), '123')
@@ -1441,7 +1508,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1451,6 +1518,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], 'GET')
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -1485,7 +1553,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1495,6 +1563,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], 'GET')
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -1530,7 +1599,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1540,6 +1609,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], 'GET')
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -1574,7 +1644,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1584,6 +1654,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], 'GET')
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -1618,7 +1689,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1628,6 +1699,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], None)
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -1662,7 +1734,7 @@ class TestRouteDirective(unittest.TestCase):
request_factory = sm.getUtility(IRouteRequest, 'name')
request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(len(view_discriminator), 10)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
@@ -1672,6 +1744,7 @@ class TestRouteDirective(unittest.TestCase):
self.assertEqual(view_discriminator[6], None)
self.assertEqual(view_discriminator[7], None)
self.assertEqual(view_discriminator[8], 'name')
+ self.assertEqual(view_discriminator[9], None)
wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
self.failUnless(wrapped)
@@ -2010,6 +2083,8 @@ class TestBFGViewFunctionGrokker(unittest.TestCase):
obj.__request_method__ = None
obj.__request_param__ = None
obj.__containment__ = None
+ obj.__attr__ = None
+ obj.__template__ = None
context = DummyContext()
result = grokker.grok('name', obj, context=context)
self.assertEqual(result, True)