summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_zcml.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-06 03:36:59 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-06 03:36:59 +0000
commitd66bfb5d1f1aef5cce4941b49740dbd136c95605 (patch)
tree0204e233befdb8ad99332e498308468015f3558e /repoze/bfg/tests/test_zcml.py
parent50df953770409dc9c9558c77bd5c0bbb17ac54f6 (diff)
downloadpyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.gz
pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.bz2
pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.zip
Merge multiview2 branch to HEAD.
Diffstat (limited to 'repoze/bfg/tests/test_zcml.py')
-rw-r--r--repoze/bfg/tests/test_zcml.py1905
1 files changed, 1239 insertions, 666 deletions
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 49baa3a34..fdf8fa9e3 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -20,185 +20,144 @@ class TestViewDirective(unittest.TestCase):
'repoze.view', None)
def test_view_as_function(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IViewPermission
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
view = lambda *arg: None
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- self.assertEqual(regadapt['args'][1], view)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ self.failUnless(wrapper)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_function_requestonly(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
+
context = DummyContext()
def view(request):
return 'OK'
- class IFoo:
+ class IFoo(Interface):
pass
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
self.failIfEqual(wrapper, view)
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, 'OK')
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_instance(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
+
context = DummyContext()
class AView:
def __call__(self, context, request):
""" """
view = AView()
- class IFoo:
+ class IFoo(Interface):
pass
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
+ self.assertEqual(len(actions), 1)
- self.assertEqual(len(actions), 2)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ self.failUnless(wrapper)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- self.assertEqual(regadapt['args'][1], view)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_instance_requestonly(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
+
context = DummyContext()
class AView:
def __call__(self, request):
return 'OK'
view = AView()
- class IFoo:
+ class IFoo(Interface):
pass
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
self.failIfEqual(wrapper, view)
self.assertEqual(wrapper.__module__, view.__module__)
self.failUnless('instance' in wrapper.__name__)
self.assertEqual(wrapper.__doc__, view.__doc__)
result = wrapper(None, None)
self.assertEqual(result, 'OK')
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_oldstyle_class(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
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
class view:
def __init__(self, context, request):
@@ -209,47 +168,36 @@ class TestViewDirective(unittest.TestCase):
return self
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, 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.context, None)
self.assertEqual(result.request, None)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_oldstyle_class_requestonly(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
+
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
class view:
def __init__(self, request):
@@ -259,46 +207,35 @@ class TestViewDirective(unittest.TestCase):
return self
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, 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.request, None)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
+
def test_view_as_newstyle_class(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
+
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
class view(object):
def __init__(self, context, request):
@@ -309,47 +246,35 @@ class TestViewDirective(unittest.TestCase):
return self
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, 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.context, None)
self.assertEqual(result.request, None)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_view_as_newstyle_class_requestonly(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
+
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
class view(object):
def __init__(self, request):
@@ -359,170 +284,470 @@ class TestViewDirective(unittest.TestCase):
return self
self._callFUT(context, 'repoze.view', IFoo, view=view)
actions = context.actions
- from repoze.bfg.interfaces import IRequest
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- wrapper = regadapt['args'][1]
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, 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.request, None)
- self.assertEqual(regadapt['args'][2], (IFoo, IRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
+
def test_request_type_asinterface(self):
- context = DummyContext()
- class IFoo:
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IViewPermission
+ class IRequest(Interface):
+ pass
+ class IFoo(Interface):
pass
+ context = DummyContext(IRequest)
view = lambda *arg: None
self._callFUT(context, 'repoze.view', IFoo, view=view,
request_type=IDummy)
actions = context.actions
+
+ self.assertEqual(len(actions), 1)
+
+ action = actions[0]
+ discrim = ('view', IFoo, '', IDummy, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IDummy), IView, name='')
+ self.failUnless(wrapper)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
+
+ def test_request_type_as_noninterface(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from zope.interface import implementedBy
from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
+ class IFoo(Interface):
+ pass
+ class Dummy:
+ pass
+ context = DummyContext(Dummy)
+ view = lambda *arg: None
+ self._callFUT(context, 'repoze.view', IFoo, view=view,
+ request_type=Dummy)
+ actions = context.actions
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', DummyModule,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, DummyModule))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', DummyModule, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- self.assertEqual(regadapt['args'][1], view)
- self.assertEqual(regadapt['args'][2], (IFoo, DummyModule))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
+ action = actions[0]
+ discrim = ('view', IFoo, '', Dummy, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ iface = implementedBy(Dummy)
+ wrapper = sm.adapters.lookup((IFoo, iface), IView, name='')
+ self.failUnless(wrapper)
+ self.failIf(hasattr(wrapper, '__call_permissive__'))
def test_request_type_ashttpmethod(self):
+ from zope.interface import Interface
+ from zope.component import getSiteManager
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRequest
context = DummyContext()
- class IFoo:
+ class IFoo(Interface):
pass
view = lambda *arg: None
self._callFUT(context, 'repoze.view', IFoo, view=view,
request_type='GET')
actions = context.actions
- from repoze.bfg.interfaces import IView
- from repoze.bfg.interfaces import IGETRequest
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- self.assertEqual(permission['args'][2], (IFoo, IGETRequest))
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IDummy, IView)
- self.assertEqual(regadapt['args'][2], (IFoo, IGETRequest))
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'GET', None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.method = 'GET'
+ self.assertEqual(wrapper.__predicated__(None, request), True)
+ request.method = 'POST'
+ self.assertEqual(wrapper.__predicated__(None, request), False)
+
def test_request_type_asinterfacestring(self):
- context = DummyContext()
- class IFoo:
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IViewPermission
+ class IFoo(Interface):
+ pass
+ class IRequest(Interface):
pass
+ context = DummyContext(IRequest)
view = lambda *arg: None
self._callFUT(context, 'repoze.view', IFoo, view=view,
request_type='whatever')
actions = context.actions
- from repoze.bfg.interfaces import IView
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
- permission = actions[0]
- self.assertEqual(permission['args'][2], (IFoo, DummyModule))
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', DummyModule, IView)
- self.assertEqual(regadapt['args'][2], (IFoo, DummyModule))
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(actions[0]['discriminator'], discrim)
+ register = actions[0]['callable']
+ register()
+ sm = getSiteManager()
+ regview = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ self.assertEqual(view, regview)
+ self.failIf(hasattr(view, '__call_permissive__'))
+
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, None)
def test_with_route_name(self):
+ from zope.interface import Interface
+ from zope.interface import implementedBy
+ from zope.component import getSiteManager
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+ class IFoo(Interface):
+ pass
+ context = DummyContext()
+ view = lambda *arg: '123'
+ self._callFUT(context, 'repoze.view', IFoo, view=view, route_name='foo')
+ actions = context.actions
+
+ self.assertEqual(len(actions), 1)
+
+ action = actions[0]
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ factory = sm.getUtility(IRouteRequest, 'foo')
+ request_type = implementedBy(factory)
+ discrim = ('view', IFoo, '', request_type, IView, None, None, None,
+ 'foo')
+ self.assertEqual(action['discriminator'], discrim)
+ the_view = sm.adapters.lookup((IFoo, request_type), IView, name='')
+ request = factory({})
+ self.assertEqual(the_view(None, request), '123')
+
+ def test_with_request_method_true(self):
from zope.component import getSiteManager
- from repoze.bfg.interfaces import IRequestFactories
- class IFoo:
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ context = DummyContext()
+ class IFoo(Interface):
pass
- class IDummyRequest:
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ return '123'
+ self._callFUT(context, None, IFoo, view=view, request_method='POST')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.method = 'POST'
+ self.assertEqual(wrapper(None, request), '123')
+
+ def test_with_request_method_false(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.view import NotFound
+ context = DummyContext()
+ class IFoo(Interface):
pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ """ """
+ self._callFUT(context, None, IFoo, view=view, request_method='POST')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.method = 'GET'
+ self.assertRaises(NotFound, wrapper, None, request)
+
+ def test_with_request_param_noval_true(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
context = DummyContext()
- factories = {None:{'interface':IDummyRequest}}
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
sm = getSiteManager()
- sm.registerUtility(factories, IRequestFactories, name='foo')
+ def view(context, request):
+ return '123'
+ self._callFUT(context, None, IFoo, view=view, request_param='abc')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.params = {'abc':''}
+ self.assertEqual(wrapper(None, request), '123')
+
+ def test_with_request_param_noval_false(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.view import NotFound
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
view = lambda *arg: None
- self._callFUT(context, 'repoze.view', IFoo, view=view, route_name='foo')
+ sm = getSiteManager()
+ def view(context, request):
+ """ """
+ self._callFUT(context, None, IFoo, view=view, request_param='abc')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.params = {}
+ self.assertRaises(NotFound, wrapper, None, request)
+
+ def test_with_request_paramoval_true(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ return '123'
+ self._callFUT(context, None, IFoo, view=view, request_param='abc=123')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.params = {'abc':'123'}
+ self.assertEqual(wrapper(None, request), '123')
+
+ def test_with_request_param_val_false(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.view import NotFound
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ """ """
+ self._callFUT(context, None, IFoo, view=view, request_param='abc=123')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ request.params = {'abc':'456'}
+ self.assertRaises(NotFound, wrapper, None, request)
+
+ def test_with_containment_true(self):
+ from zope.component import getSiteManager
+ from zope.interface import directlyProvides
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ return '123'
+ sm.registerAdapter(view, (IFoo, IRequest), IView, name='')
+ self._callFUT(context, None, IFoo, view=view, containment=IFoo)
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ context = Dummy()
+ directlyProvides(context, IFoo)
+ self.assertEqual(wrapper(context, request), '123')
+
+ def test_with_containment_false(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.view import NotFound
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ def view(context, request):
+ """ """
+ self._callFUT(context, None, IFoo, view=view, containment=IFoo)
actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, IFoo, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ request = DummyRequest()
+ context = Dummy()
+ self.assertRaises(NotFound, wrapper, context, request)
+
+ def test_multiview_replaces_traditional_view(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IMultiView
from repoze.bfg.interfaces import IViewPermission
- from repoze.bfg.security import ViewPermissionFactory
- from repoze.bfg.zcml import handler
-
- self.assertEqual(len(actions), 2)
-
- permission = actions[0]
- permission_discriminator = ('permission', IFoo, '', IDummyRequest,
- IViewPermission)
- self.assertEqual(permission['discriminator'], permission_discriminator)
- self.assertEqual(permission['callable'], handler)
- self.assertEqual(permission['args'][0], 'registerAdapter')
- self.failUnless(isinstance(permission['args'][1],ViewPermissionFactory))
- self.assertEqual(permission['args'][1].permission_name, 'repoze.view')
- self.assertEqual(permission['args'][2], (IFoo, IDummyRequest))
- self.assertEqual(permission['args'][3], IViewPermission)
- self.assertEqual(permission['args'][4], '')
- self.assertEqual(permission['args'][5], None)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IDummyRequest, IView)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- self.assertEqual(regadapt['args'][1], view)
- self.assertEqual(regadapt['args'][2], (IFoo, IDummyRequest))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
-
- def test_with_route_name_bad_order(self):
context = DummyContext()
- context.request_factories = {}
+ class IFoo(Interface):
+ pass
view = lambda *arg: None
- from zope.configuration.exceptions import ConfigurationError
- self.assertRaises(ConfigurationError, self._callFUT, context,
- 'repoze.view', None, view, '', None, 'foo')
+ sm = getSiteManager()
+ def view(context, request):
+ return '123'
+ sm.registerAdapter(view, (IFoo, IRequest), IView, name='')
+ self._callFUT(context, 'repoze.view', IFoo, view=view)
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ self.failUnless(IMultiView.providedBy(wrapper))
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, wrapper.__permitted__)
+ self.assertEqual(wrapper(None, None), '123')
+
+ def test_multiview_replaces_multiview(self):
+ from zope.component import getSiteManager
+ from zope.interface import Interface
+ from zope.interface import implements
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IMultiView
+ from repoze.bfg.interfaces import IViewPermission
+ context = DummyContext()
+ class IFoo(Interface):
+ pass
+ view = lambda *arg: None
+ sm = getSiteManager()
+ class DummyMultiView:
+ implements(IMultiView)
+ def __init__(self):
+ self.views = []
+ self.name = 'name'
+ def add(self, view, score):
+ self.views.append(view)
+ def __call__(self, context, request):
+ return '123'
+ def __permitted__(self, context, request):
+ """ """
+ view = DummyMultiView()
+ sm.registerAdapter(view, (IFoo, IRequest), IMultiView, name='')
+ def view2(context, request):
+ """ """
+ self._callFUT(context, None, IFoo, view=view2)
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='')
+ perm = sm.adapters.lookup((IFoo, IRequest), IViewPermission, name='')
+ self.assertEqual(perm, wrapper.__permitted__)
+ self.failUnless(IMultiView.providedBy(wrapper))
+ self.assertEqual(wrapper(None, None), '123')
+ self.assertEqual(wrapper.views, [view2])
+
+ def test_for_as_class(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
+ context = DummyContext()
+ class Foo:
+ pass
+ sm = getSiteManager()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'repoze.view', Foo, view=view)
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ discrim = ('view', Foo, '', IRequest, IView, None, None, None, None)
+ self.assertEqual(action['discriminator'], discrim)
+ register = action['callable']
+ register()
+ foo = implementedBy(Foo)
+ wrapper = sm.adapters.lookup((foo, IRequest), IView, name='')
+ self.assertEqual(wrapper, view)
class TestNotFoundDirective(unittest.TestCase):
def _callFUT(self, context, view):
@@ -530,27 +755,24 @@ class TestNotFoundDirective(unittest.TestCase):
return notfound(context, view)
def test_it(self):
+ from zope.component import getSiteManager
+ from repoze.bfg.interfaces import INotFoundView
+
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(regadapt['discriminator'], INotFoundView)
+ register = regadapt['callable']
+ register()
+ sm = getSiteManager()
+ derived_view = sm.getUtility(INotFoundView)
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):
@@ -558,155 +780,143 @@ class TestForbiddenDirective(unittest.TestCase):
return forbidden(context, view)
def test_it(self):
+ from zope.component import getSiteManager
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(regadapt['discriminator'], IForbiddenView)
+ register = regadapt['callable']
+ register()
+ sm = getSiteManager()
+ derived_view = sm.getUtility(IForbiddenView)
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 TestRepozeWho1AuthenticationPolicyDirective(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
def _callFUT(self, context, **kw):
from repoze.bfg.zcml import repozewho1authenticationpolicy
return repozewho1authenticationpolicy(context, **kw)
def test_it_defaults(self):
+ from zope.component import getUtility
+ from repoze.bfg.interfaces import IAuthenticationPolicy
context = DummyContext()
self._callFUT(context)
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.callback, None)
self.assertEqual(policy.identifier_name, 'auth_tkt')
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
def test_it(self):
+ from zope.component import getUtility
+ from repoze.bfg.interfaces import IAuthenticationPolicy
context = DummyContext()
def callback(identity, request):
""" """
self._callFUT(context, identifier_name='something', callback=callback)
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.callback, callback)
self.assertEqual(policy.identifier_name, 'something')
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
class TestRemoteUserAuthenticationPolicyDirective(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
def _callFUT(self, context, **kw):
from repoze.bfg.zcml import remoteuserauthenticationpolicy
return remoteuserauthenticationpolicy(context, **kw)
def test_defaults(self):
+ from repoze.bfg.interfaces import IAuthenticationPolicy
+ from zope.component import getUtility
context = DummyContext()
def callback(identity, request):
""" """
self._callFUT(context)
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.environ_key, 'REMOTE_USER')
self.assertEqual(policy.callback, None)
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
def test_it(self):
+ from zope.component import getUtility
+ from repoze.bfg.interfaces import IAuthenticationPolicy
context = DummyContext()
def callback(identity, request):
""" """
self._callFUT(context, environ_key='BLAH', callback=callback)
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.environ_key, 'BLAH')
self.assertEqual(policy.callback, callback)
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
class TestAuthTktAuthenticationPolicyDirective(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
def _callFUT(self, context, secret, **kw):
from repoze.bfg.zcml import authtktauthenticationpolicy
return authtktauthenticationpolicy(context, secret, **kw)
def test_it_defaults(self):
+ from zope.component import getUtility
+ from repoze.bfg.interfaces import IAuthenticationPolicy
context = DummyContext()
self._callFUT(context, 'sosecret')
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.cookie.secret, 'sosecret')
self.assertEqual(policy.callback, None)
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
def test_it_noconfigerror(self):
+ from zope.component import getUtility
+ from repoze.bfg.interfaces import IAuthenticationPolicy
context = DummyContext()
def callback(identity, request):
""" """
@@ -715,22 +925,14 @@ class TestAuthTktAuthenticationPolicyDirective(unittest.TestCase):
secure=True, include_ip=True, timeout=100,
reissue_time=60)
actions = context.actions
- from repoze.bfg.interfaces import IAuthenticationPolicy
- from repoze.bfg.zcml import handler
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authentication_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthenticationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthenticationPolicy)
self.assertEqual(policy.cookie.secret, 'sosecret')
self.assertEqual(policy.callback, callback)
- self.assertEqual(regadapt['args'][2], IAuthenticationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
def test_it_configerror(self):
from zope.configuration.exceptions import ConfigurationError
@@ -745,43 +947,74 @@ class TestAuthTktAuthenticationPolicyDirective(unittest.TestCase):
reissue_time=500)
class TestACLAuthorizationPolicyDirective(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
def _callFUT(self, context, **kw):
from repoze.bfg.zcml import aclauthorizationpolicy
return aclauthorizationpolicy(context, **kw)
def test_it(self):
+ from zope.component import getUtility
from repoze.bfg.authorization import ACLAuthorizationPolicy
from repoze.bfg.interfaces import IAuthorizationPolicy
- from repoze.bfg.zcml import handler
context = DummyContext()
def callback(identity, request):
""" """
self._callFUT(context)
actions = context.actions
-
self.assertEqual(len(actions), 1)
-
regadapt = actions[0]
- regadapt_discriminator = 'authorization_policy'
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerUtility')
- policy = regadapt['args'][1]
+ self.assertEqual(regadapt['discriminator'], IAuthorizationPolicy)
+ self.assertEqual(regadapt['callable'], None)
+ self.assertEqual(regadapt['args'], ())
+ policy = getUtility(IAuthorizationPolicy)
self.assertEqual(policy.__class__, ACLAuthorizationPolicy)
- self.assertEqual(regadapt['args'][2], IAuthorizationPolicy)
- self.assertEqual(regadapt['args'][3], '')
- self.assertEqual(regadapt['args'][4], None)
class TestDeriveView(unittest.TestCase):
- def _callFUT(self, view):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
+ def _callFUT(self, view, *arg, **kw):
from repoze.bfg.zcml import derive_view
- return derive_view(view)
+ return derive_view(view, *arg, **kw)
+
+ def _registerLogger(self):
+ from repoze.bfg.interfaces import ILogger
+ from zope.component import getSiteManager
+ logger = DummyLogger()
+ sm = getSiteManager()
+ sm.registerUtility(logger, ILogger, 'repoze.bfg.debug')
+ return logger
+
+ def _registerSettings(self, **d):
+ from repoze.bfg.interfaces import ISettings
+ from zope.component import getSiteManager
+ settings = DummySettings(d)
+ sm = getSiteManager()
+ sm.registerUtility(settings, ISettings)
+
+ def _registerSecurityPolicy(self, permissive):
+ from repoze.bfg.interfaces import IAuthenticationPolicy
+ from repoze.bfg.interfaces import IAuthorizationPolicy
+ from zope.component import getSiteManager
+ policy = DummySecurityPolicy(permissive)
+ sm = getSiteManager()
+ sm.registerUtility(policy, IAuthenticationPolicy)
+ sm.registerUtility(policy, IAuthorizationPolicy)
def test_view_as_function_context_and_request(self):
def view(context, request):
return 'OK'
result = self._callFUT(view)
self.failUnless(result is view)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(view(None, None), 'OK')
def test_view_as_function_requestonly(self):
@@ -792,6 +1025,7 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_newstyle_class_context_and_request(self):
@@ -805,6 +1039,7 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_newstyle_class_requestonly(self):
@@ -818,6 +1053,7 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_oldstyle_class_context_and_request(self):
@@ -831,6 +1067,7 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_oldstyle_class_requestonly(self):
@@ -844,6 +1081,7 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_instance_context_and_request(self):
@@ -853,6 +1091,7 @@ class TestDeriveView(unittest.TestCase):
view = View()
result = self._callFUT(view)
self.failUnless(result is view)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
def test_view_as_instance_requestonly(self):
@@ -865,8 +1104,158 @@ class TestDeriveView(unittest.TestCase):
self.assertEqual(view.__module__, result.__module__)
self.assertEqual(view.__doc__, result.__doc__)
self.failUnless('instance' in result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
self.assertEqual(result(None, None), 'OK')
+ def test_view_with_debug_authorization_no_authpol(self):
+ def view(context, request):
+ return 'OK'
+ self._registerSettings(debug_authorization=True)
+ logger = self._registerLogger()
+ result = self._callFUT(view, permission='view')
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
+ request = DummyRequest()
+ request.view_name = 'view_name'
+ request.url = 'url'
+ self.assertEqual(result(None, request), 'OK')
+ self.assertEqual(len(logger.messages), 1)
+ self.assertEqual(logger.messages[0],
+ "debug_authorization of url url (view name "
+ "'view_name' against context None): Allowed "
+ "(no authorization policy in use)")
+
+ def test_view_with_debug_authorization_no_permission(self):
+ def view(context, request):
+ return 'OK'
+ self._registerSettings(debug_authorization=True)
+ self._registerSecurityPolicy(True)
+ logger = self._registerLogger()
+ result = self._callFUT(view)
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.failIf(hasattr(result, '__call_permissive__'))
+ request = DummyRequest()
+ request.view_name = 'view_name'
+ request.url = 'url'
+ self.assertEqual(result(None, request), 'OK')
+ self.assertEqual(len(logger.messages), 1)
+ self.assertEqual(logger.messages[0],
+ "debug_authorization of url url (view name "
+ "'view_name' against context None): Allowed ("
+ "no permission registered)")
+
+ def test_view_with_debug_authorization_permission_authpol_permitted(self):
+ def view(context, request):
+ return 'OK'
+ self._registerSettings(debug_authorization=True)
+ logger = self._registerLogger()
+ self._registerSecurityPolicy(True)
+ result = self._callFUT(view, permission='view')
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result.__call_permissive__, view)
+ request = DummyRequest()
+ request.view_name = 'view_name'
+ request.url = 'url'
+ self.assertEqual(result(None, request), 'OK')
+ self.assertEqual(len(logger.messages), 1)
+ self.assertEqual(logger.messages[0],
+ "debug_authorization of url url (view name "
+ "'view_name' against context None): True")
+
+ def test_view_with_debug_authorization_permission_authpol_denied(self):
+ from repoze.bfg.security import Unauthorized
+ def view(context, request):
+ """ """
+ self._registerSettings(debug_authorization=True)
+ logger = self._registerLogger()
+ self._registerSecurityPolicy(False)
+ result = self._callFUT(view, permission='view')
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ self.assertEqual(result.__call_permissive__, view)
+ request = DummyRequest()
+ request.view_name = 'view_name'
+ request.url = 'url'
+ self.assertRaises(Unauthorized, result, None, request)
+ self.assertEqual(len(logger.messages), 1)
+ self.assertEqual(logger.messages[0],
+ "debug_authorization of url url (view name "
+ "'view_name' against context None): False")
+
+ def test_view_with_debug_authorization_permission_authpol_denied2(self):
+ def view(context, request):
+ """ """
+ self._registerSettings(debug_authorization=True)
+ logger = self._registerLogger()
+ self._registerSecurityPolicy(False)
+ result = self._callFUT(view, permission='view')
+ self.assertEqual(view.__module__, result.__module__)
+ self.assertEqual(view.__doc__, result.__doc__)
+ self.assertEqual(view.__name__, result.__name__)
+ request = DummyRequest()
+ request.view_name = 'view_name'
+ request.url = 'url'
+ permitted = result.__permitted__(None, None)
+ self.assertEqual(permitted, False)
+
+ def test_view_with_predicates_all(self):
+ def view(context, request):
+ return '123'
+ predicates = []
+ def predicate1(context, request):
+ predicates.append(True)
+ return True
+ def predicate2(context, request):
+ predicates.append(True)
+ return True
+ result = self._callFUT(view, predicates=[predicate1, predicate2])
+ request = DummyRequest()
+ request.method = 'POST'
+ next = result(None, None)
+ self.assertEqual(next, '123')
+ self.assertEqual(predicates, [True, True])
+
+ def test_view_with_predicates_notall(self):
+ from repoze.bfg.view import NotFound
+ def view(context, request):
+ """ """
+ predicates = []
+ def predicate1(context, request):
+ predicates.append(True)
+ return True
+ def predicate2(context, request):
+ predicates.append(True)
+ return False
+ result = self._callFUT(view, predicates=[predicate1, predicate2])
+ request = DummyRequest()
+ request.method = 'POST'
+ self.assertRaises(NotFound, result, None, None)
+ self.assertEqual(predicates, [True, True])
+
+ def test_view_with_predicates_checker(self):
+ def view(context, request):
+ """ """
+ predicates = []
+ def predicate1(context, request):
+ predicates.append(True)
+ return True
+ def predicate2(context, request):
+ predicates.append(True)
+ return True
+ result = self._callFUT(view, predicates=[predicate1, predicate2])
+ request = DummyRequest()
+ request.method = 'POST'
+ next = result.__predicated__(None, None)
+ self.assertEqual(next, True)
+ self.assertEqual(predicates, [True, True])
+
class TestConnectRouteFunction(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -903,103 +1292,119 @@ class TestRouteDirective(unittest.TestCase):
return route(*arg, **kw)
def test_defaults(self):
- from zope.component import getUtility
- from repoze.bfg.interfaces import IRequestFactories
+ from repoze.bfg.zcml import connect_route
context = DummyContext()
self._callFUT(context, 'name', 'path')
- self.failUnless(getUtility(IRequestFactories, name='name'))
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+
+ route_action = actions[0]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
def test_with_view(self):
- from zope.component import getUtility
- from repoze.bfg.interfaces import IRequestFactories
- from repoze.bfg.zcml import handler
+ from zope.interface import Interface
+ from zope.interface import implementedBy
+ from zope.component import getSiteManager
+ from repoze.bfg.interfaces import IRouteRequest
from repoze.bfg.zcml import connect_route
from repoze.bfg.interfaces import IView
context = DummyContext()
- view = Dummy()
+ def view(context, request):
+ return '123'
self._callFUT(context, 'name', 'path', view=view)
actions = context.actions
self.assertEqual(len(actions), 2)
- factories = getUtility(IRequestFactories, name='name')
- request_iface = factories[None]['interface']
-
view_action = actions[0]
- view_callable = view_action['callable']
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- view_args = view_action['args']
- self.assertEqual(view_callable, handler)
- self.assertEqual(len(view_discriminator), 5)
+ self.assertEqual(len(view_discriminator), 9)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], None)
self.assertEqual(view_discriminator[2],'')
- self.assertEqual(view_discriminator[3], request_iface)
+ self.assertEqual(view_discriminator[3], request_type)
self.assertEqual(view_discriminator[4], IView)
- self.assertEqual(view_args, ('registerAdapter', view,
- (None, request_iface), IView,
- '', None))
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], None)
+ self.assertEqual(view_discriminator[8], 'name')
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ wrapped = sm.adapters.lookup((Interface, request_type), IView, name='')
+ request = DummyRequest()
+ self.assertEqual(wrapped(None, request), '123')
route_action = actions[1]
route_callable = route_action['callable']
route_discriminator = route_action['discriminator']
route_args = route_action['args']
self.assertEqual(route_callable, connect_route)
- self.assertEqual(len(route_discriminator), 4)
+ self.assertEqual(len(route_discriminator), 2)
self.assertEqual(route_discriminator[0], 'route')
self.assertEqual(route_discriminator[1], 'name')
- self.assertEqual(route_discriminator[2], None)
- self.assertEqual(route_discriminator[3], None)
self.assertEqual(route_args, ('path', 'name', None))
def test_with_view_and_view_for(self):
- from zope.component import getUtility
- from repoze.bfg.interfaces import IRequestFactories
- from repoze.bfg.zcml import handler
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
from repoze.bfg.zcml import connect_route
from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
context = DummyContext()
- view = Dummy()
+ def view(context, request):
+ return '123'
self._callFUT(context, 'name', 'path', view=view, view_for=IDummy)
actions = context.actions
self.assertEqual(len(actions), 2)
- factories = getUtility(IRequestFactories, 'name')
- request_iface = factories[None]['interface']
-
view_action = actions[0]
- view_callable = view_action['callable']
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
view_discriminator = view_action['discriminator']
- view_args = view_action['args']
- self.assertEqual(view_callable, handler)
- self.assertEqual(len(view_discriminator), 5)
+ self.assertEqual(len(view_discriminator), 9)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], IDummy)
self.assertEqual(view_discriminator[2],'')
- self.assertEqual(view_discriminator[3], request_iface)
- self.assertEqual(view_discriminator[4], IView)
- self.assertEqual(view_args, ('registerAdapter', view,
- (IDummy, request_iface), IView,
- '', None))
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], None)
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ request = DummyRequest()
+ self.assertEqual(wrapped(None, request), '123')
route_action = actions[1]
route_callable = route_action['callable']
route_discriminator = route_action['discriminator']
route_args = route_action['args']
self.assertEqual(route_callable, connect_route)
- self.assertEqual(len(route_discriminator), 4)
+ self.assertEqual(len(route_discriminator), 2)
self.assertEqual(route_discriminator[0], 'route')
self.assertEqual(route_discriminator[1], 'name')
- self.assertEqual(route_discriminator[2], IDummy)
- self.assertEqual(route_discriminator[3], None)
self.assertEqual(route_args, ('path', 'name', None,))
def test_without_view(self):
from repoze.bfg.zcml import connect_route
-
context = DummyContext()
- view = Dummy()
self._callFUT(context, 'name', 'path')
actions = context.actions
self.assertEqual(len(actions), 1)
@@ -1009,32 +1414,275 @@ class TestRouteDirective(unittest.TestCase):
route_discriminator = route_action['discriminator']
route_args = route_action['args']
self.assertEqual(route_callable, connect_route)
- self.assertEqual(len(route_discriminator), 4)
+ self.assertEqual(len(route_discriminator), 2)
self.assertEqual(route_discriminator[0], 'route')
self.assertEqual(route_discriminator[1], 'name')
- self.assertEqual(route_discriminator[2], None)
- self.assertEqual(route_discriminator[3], None)
self.assertEqual(route_args, ('path', 'name', None))
- def test_with_request_type(self):
+ def test_with_view_request_type(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
context = DummyContext()
- view = Dummy()
- self._callFUT(context, 'name', 'path', request_type="GET")
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view,
+ view_request_type="GET")
actions = context.actions
- self.assertEqual(len(actions), 1)
+ self.assertEqual(len(actions), 2)
- route_action = actions[0]
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], 'GET')
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
+
+ def test_with_view_request_type_alias(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+
+ context = DummyContext()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view, request_type="GET")
+ actions = context.actions
+ self.assertEqual(len(actions), 2)
+
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], 'GET')
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
+
+ def test_with_view_request_method(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+
+ context = DummyContext()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view,
+ view_request_method="GET")
+ actions = context.actions
+ self.assertEqual(len(actions), 2)
+
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], 'GET')
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
+
+ def test_with_view_request_method_alias(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+
+ context = DummyContext()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view, request_method="GET")
+ actions = context.actions
+ self.assertEqual(len(actions), 2)
+
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], None)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], 'GET')
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
+
+ def test_with_view_containment(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+
+ context = DummyContext()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view, view_containment=True)
+ actions = context.actions
+ self.assertEqual(len(actions), 2)
+
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], True)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], None)
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
route_callable = route_action['callable']
route_discriminator = route_action['discriminator']
route_args = route_action['args']
self.assertEqual(route_callable, connect_route)
- self.assertEqual(len(route_discriminator), 4)
+ self.assertEqual(len(route_discriminator), 2)
+ self.assertEqual(route_discriminator[0], 'route')
+ self.assertEqual(route_discriminator[1], 'name')
+ self.assertEqual(route_args, ('path', 'name', None))
+
+ def test_with_view_containment_alias(self):
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
+
+ context = DummyContext()
+ def view(context, request):
+ """ """
+ self._callFUT(context, 'name', 'path', view=view, containment=True)
+ actions = context.actions
+ self.assertEqual(len(actions), 2)
+
+ view_action = actions[0]
+ register = view_action['callable']
+ register()
+ sm = getSiteManager()
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view_discriminator = view_action['discriminator']
+ self.assertEqual(len(view_discriminator), 9)
+ self.assertEqual(view_discriminator[0], 'view')
+ self.assertEqual(view_discriminator[1], None)
+ self.assertEqual(view_discriminator[2],'')
+ self.assertEqual(view_discriminator[3], request_type)
+ self.assertEqual(view_discriminator[4], IView)
+ self.assertEqual(view_discriminator[5], True)
+ self.assertEqual(view_discriminator[6], None)
+ self.assertEqual(view_discriminator[7], None)
+ self.assertEqual(view_discriminator[8], 'name')
+ wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='')
+ self.failUnless(wrapped)
+
+ route_action = actions[1]
+ route_callable = route_action['callable']
+ route_discriminator = route_action['discriminator']
+ route_args = route_action['args']
+ self.assertEqual(route_callable, connect_route)
+ self.assertEqual(len(route_discriminator), 2)
self.assertEqual(route_discriminator[0], 'route')
self.assertEqual(route_discriminator[1], 'name')
- self.assertEqual(route_discriminator[2], None)
- self.assertEqual(route_discriminator[3], 'GET')
self.assertEqual(route_args, ('path', 'name', None))
class TestStaticDirective(unittest.TestCase):
@@ -1049,65 +1697,87 @@ class TestStaticDirective(unittest.TestCase):
return static(*arg, **kw)
def test_absolute(self):
+ from paste.urlparser import StaticURLParser
+ from zope.interface import implementedBy
+ from zope.component import getSiteManager
+ from repoze.bfg.zcml import connect_route
+ from repoze.bfg.zcml import StaticRootFactory
+ from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
import os
here = os.path.dirname(__file__)
static_path = os.path.join(here, 'fixtures', 'static')
- from repoze.bfg.zcml import handler
- from repoze.bfg.zcml import connect_route
- from repoze.bfg.interfaces import IView
context = DummyContext()
self._callFUT(context, 'name', static_path)
actions = context.actions
self.assertEqual(len(actions), 2)
action = actions[0]
- callable = action['callable']
discriminator = action['discriminator']
- args = action['args']
- self.assertEqual(callable, handler)
- self.assertEqual(discriminator[:3], ('view', None, ''))
+ self.assertEqual(discriminator[:3], ('view', StaticRootFactory, ''))
self.assertEqual(discriminator[4], IView)
- self.assertEqual(args[1].app.directory, static_path)
+ sm = getSiteManager()
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ iface = implementedBy(StaticRootFactory)
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ wrapped = sm.adapters.lookup((iface, request_type), IView, name='')
+ request = DummyRequest()
+ self.assertEqual(wrapped(None, request).__class__, StaticURLParser)
action = actions[1]
callable = action['callable']
discriminator = action['discriminator']
args = action['args']
self.assertEqual(callable, connect_route)
- self.assertEqual(discriminator, ('route', 'name', None, None))
+ self.assertEqual(discriminator, ('route', 'name'))
self.assertEqual(args[0], 'name*subpath')
def test_package_relative(self):
- from repoze.bfg.zcml import handler
+ from repoze.bfg.static import PackageURLParser
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
from repoze.bfg.zcml import connect_route
+ from repoze.bfg.zcml import StaticRootFactory
from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
context = DummyContext()
self._callFUT(context, 'name', 'repoze.bfg.tests:fixtures/static')
actions = context.actions
self.assertEqual(len(actions), 2)
action = actions[0]
- callable = action['callable']
discriminator = action['discriminator']
- args = action['args']
- self.assertEqual(callable, handler)
- self.assertEqual(discriminator[:3], ('view', None, ''))
+ self.assertEqual(discriminator[:3], ('view', StaticRootFactory, ''))
self.assertEqual(discriminator[4], IView)
- self.assertEqual(args[1].app.package_name, 'repoze.bfg.tests')
- self.assertEqual(args[1].app.resource_name, 'fixtures/static')
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ iface = implementedBy(StaticRootFactory)
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ view = sm.adapters.lookup((iface, request_type), IView, name='')
+ request = DummyRequest()
+ self.assertEqual(view(None, request).__class__, PackageURLParser)
action = actions[1]
callable = action['callable']
discriminator = action['discriminator']
args = action['args']
self.assertEqual(callable, connect_route)
- self.assertEqual(discriminator, ('route', 'name', None, None))
+ self.assertEqual(discriminator, ('route', 'name'))
self.assertEqual(args[0], 'name*subpath')
def test_here_relative(self):
- from repoze.bfg.zcml import handler
+ from repoze.bfg.static import PackageURLParser
+ from zope.component import getSiteManager
+ from zope.interface import implementedBy
from repoze.bfg.zcml import connect_route
+ from repoze.bfg.zcml import StaticRootFactory
from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IRouteRequest
import repoze.bfg.tests
context = DummyContext(repoze.bfg.tests)
self._callFUT(context, 'name', 'fixtures/static')
@@ -1115,21 +1785,25 @@ class TestStaticDirective(unittest.TestCase):
self.assertEqual(len(actions), 2)
action = actions[0]
- callable = action['callable']
discriminator = action['discriminator']
- args = action['args']
- self.assertEqual(callable, handler)
- self.assertEqual(discriminator[:3], ('view', None, ''))
+ self.assertEqual(discriminator[:3], ('view', StaticRootFactory, ''))
self.assertEqual(discriminator[4], IView)
- self.assertEqual(args[1].app.package_name, 'repoze.bfg.tests')
- self.assertEqual(args[1].app.resource_name, 'fixtures/static')
+ register = action['callable']
+ register()
+ sm = getSiteManager()
+ iface = implementedBy(StaticRootFactory)
+ request_factory = sm.getUtility(IRouteRequest, 'name')
+ request_type = implementedBy(request_factory)
+ wrapped = sm.adapters.lookup((iface, request_type), IView, name='')
+ request = DummyRequest()
+ self.assertEqual(wrapped(None, request).__class__, PackageURLParser)
action = actions[1]
callable = action['callable']
discriminator = action['discriminator']
args = action['args']
self.assertEqual(callable, connect_route)
- self.assertEqual(discriminator, ('route', 'name', None, None))
+ self.assertEqual(discriminator, ('route', 'name'))
self.assertEqual(args[0], 'name*subpath')
class TestResourceDirective(unittest.TestCase):
@@ -1372,22 +2046,36 @@ class TestBFGViewFunctionGrokker(unittest.TestCase):
return self._getTargetClass()(*arg, **kw)
def test_grok_is_bfg_view(self):
+ from zope.component import getSiteManager
from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IView
from zope.interface import Interface
grokker = self._makeOne()
class obj:
- pass
+ def __init__(self, context, request):
+ pass
+ def __call__(self):
+ return 'OK'
obj.__is_bfg_view__ = True
obj.__permission__ = 'foo'
obj.__for__ = Interface
obj.__view_name__ = 'foo.html'
obj.__request_type__ = IRequest
obj.__route_name__ = None
+ obj.__request_method__ = None
+ obj.__request_param__ = None
+ obj.__containment__ = None
context = DummyContext()
result = grokker.grok('name', obj, context=context)
self.assertEqual(result, True)
actions = context.actions
- self.assertEqual(len(actions), 2)
+ self.assertEqual(len(actions), 1)
+ register = actions[0]['callable']
+ register()
+ sm = getSiteManager()
+ wrapped = sm.adapters.lookup((Interface, IRequest), IView,
+ name='foo.html')
+ self.assertEqual(wrapped(None, None), 'OK')
def test_grok_is_not_bfg_view(self):
grokker = self._makeOne()
@@ -1436,152 +2124,17 @@ class TestExcludeFunction(unittest.TestCase):
self.assertEqual(self._callFUT('.foo'), True)
self.assertEqual(self._callFUT('foo'), False)
-class TestRequestOnly(unittest.TestCase):
- def _callFUT(self, arg):
- from repoze.bfg.zcml import requestonly
- return requestonly(arg)
-
- def test_newstyle_class_no_init(self):
- class foo(object):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_newstyle_class_init_toomanyargs(self):
- class foo(object):
- def __init__(self, context, request):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_newstyle_class_init_onearg_named_request(self):
- class foo(object):
- def __init__(self, request):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_newstyle_class_init_onearg_named_somethingelse(self):
- class foo(object):
- def __init__(self, req):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_newstyle_class_init_defaultargs_firstname_not_request(self):
- class foo(object):
- def __init__(self, context, request=None):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_newstyle_class_init_defaultargs_firstname_request(self):
- class foo(object):
- def __init__(self, request, foo=1, bar=2):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_newstyle_class_init_noargs(self):
- class foo(object):
- def __init__():
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_oldstyle_class_no_init(self):
- class foo:
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_oldstyle_class_init_toomanyargs(self):
- class foo:
- def __init__(self, context, request):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_oldstyle_class_init_onearg_named_request(self):
- class foo:
- def __init__(self, request):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_oldstyle_class_init_onearg_named_somethingelse(self):
- class foo:
- def __init__(self, req):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_oldstyle_class_init_defaultargs_firstname_not_request(self):
- class foo:
- def __init__(self, context, request=None):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_oldstyle_class_init_defaultargs_firstname_request(self):
- class foo:
- def __init__(self, request, foo=1, bar=2):
- """ """
- self.assertTrue(self._callFUT(foo), True)
-
- def test_oldstyle_class_init_noargs(self):
- class foo:
- def __init__():
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_function_toomanyargs(self):
- def foo(context, request):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_function_onearg_named_request(self):
- def foo(request):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_function_onearg_named_somethingelse(self):
- def foo(req):
- """ """
- self.assertTrue(self._callFUT(foo))
-
- def test_function_defaultargs_firstname_not_request(self):
- def foo(context, request=None):
- """ """
- self.assertFalse(self._callFUT(foo))
-
- def test_function_defaultargs_firstname_request(self):
- def foo(request, foo=1, bar=2):
- """ """
- self.assertTrue(self._callFUT(foo), True)
-
- def test_instance_toomanyargs(self):
- class Foo:
- def __call__(self, context, request):
- """ """
- foo = Foo()
- self.assertFalse(self._callFUT(foo))
-
- def test_instance_defaultargs_onearg_named_request(self):
- class Foo:
- def __call__(self, request):
- """ """
- foo = Foo()
- self.assertTrue(self._callFUT(foo))
-
- def test_instance_defaultargs_onearg_named_somethingelse(self):
- class Foo:
- def __call__(self, req):
- """ """
- foo = Foo()
- self.assertTrue(self._callFUT(foo))
-
- def test_instance_defaultargs_firstname_not_request(self):
- class Foo:
- def __call__(self, context, request=None):
- """ """
- foo = Foo()
- self.assertFalse(self._callFUT(foo))
+class TestAll(unittest.TestCase):
+ def test_it(self):
+ from repoze.bfg.zcml import all
+ self.assertEqual(all([True, True]), True)
+ self.assertEqual(all([False, False]), False)
+ self.assertEqual(all([False, True]), False)
- def test_instance_defaultargs_firstname_request(self):
- class Foo:
- def __call__(self, request, foo=1, bar=2):
- """ """
- foo = Foo()
- self.assertTrue(self._callFUT(foo), True)
+class TestStaticRootFactory(unittest.TestCase):
+ def test_it(self):
+ from repoze.bfg.zcml import StaticRootFactory
+ StaticRootFactory({}) # it just needs construction
class DummyModule:
__path__ = "foo"
@@ -1612,7 +2165,7 @@ class DummyContext:
self.info = None
self.resolved = resolved
- def action(self, discriminator, callable, args):
+ def action(self, discriminator, callable=None, args=(), kw={}, order=0):
self.actions.append(
{'discriminator':discriminator,
'callable':callable,
@@ -1639,9 +2192,6 @@ from zope.interface import Interface
class IDummy(Interface):
pass
-class DummySecurityPolicy:
- pass
-
class DummyLogger:
def __init__(self):
self.messages = []
@@ -1651,9 +2201,18 @@ class DummyLogger:
debug = info
class DummyRequest:
+ subpath = ()
+ def __init__(self, environ=None):
+ if environ is None:
+ environ = {}
+ self.environ = environ
+
def get_response(self, app):
return app
-
+
+ def copy(self):
+ return self
+
class DummyOverrides:
def __init__(self, package):
self.package = package
@@ -1666,3 +2225,17 @@ class DummyPackage:
def __init__(self, name):
self.__name__ = name
+class DummySettings(dict):
+ def __getattr__(self, name):
+ return self[name]
+
+class DummySecurityPolicy:
+ def __init__(self, permitted=True):
+ self.permitted = permitted
+
+ def effective_principals(self, request):
+ return []
+
+ def permits(self, context, principals, permission):
+ return self.permitted
+