diff options
Diffstat (limited to 'repoze/bfg/tests/test_zcml.py')
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 2093 |
1 files changed, 46 insertions, 2047 deletions
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index 7caf2a596..3dc55957e 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -17,445 +17,6 @@ class TestViewDirective(unittest.TestCase): from repoze.bfg.zcml import view return view(*arg, **kw) - def test_no_view(self): - from zope.configuration.exceptions import ConfigurationError - context = DummyContext() - self.assertRaises(ConfigurationError, self._callFUT, context, - '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(Interface): - pass - view = lambda *arg: None - 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, - None, False, 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(Interface): - pass - - 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, - None, False, 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.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(Interface): - pass - 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, - None, False, 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_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(Interface): - pass - 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, - None, False, 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.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(Interface): - pass - class view: - def __init__(self, context, request): - self.context = context - self.request = request - - def __call__(self): - return self - 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, - None, False, 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.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(Interface): - pass - class view: - def __init__(self, request): - self.request = request - - def __call__(self): - return self - 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, - None, False, 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.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(Interface): - pass - class view(object): - def __init__(self, context, request): - self.context = context - self.request = request - - def __call__(self): - return self - 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, - None, False, 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.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(Interface): - pass - class view(object): - def __init__(self, request): - self.request = request - - def __call__(self): - return self - 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, - None, False, 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.failIf(hasattr(wrapper, '__call_permissive__')) - - 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 IRendererFactory - 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'} - - class Renderer: - def __call__(self, path): - self.path = path - return lambda *arg: 'Hello!' - - renderer = Renderer() - sm = getSiteManager() - sm.registerUtility(renderer, IRendererFactory, name='.txt') - - fixture = 'fixtures/minimal.txt' - self._callFUT(context, 'repoze.view', IFoo, view=view, renderer=fixture) - actions = context.actions - self.assertEqual(len(actions), 1) - - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - 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__) - request = DummyRequest() - result = wrapper(None, request) - self.assertEqual(result.body, 'Hello!') - self.assertEqual(renderer.path, 'repoze.bfg.tests:fixtures/minimal.txt') - - def test_with_template_no_view_callable(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 IRendererFactory - - import repoze.bfg.tests - - context = DummyContext(repoze.bfg.tests) - class IFoo(Interface): - pass - sm = getSiteManager() - def renderer_factory(path): - return lambda *arg: 'Hello!' - sm.registerUtility(renderer_factory, IRendererFactory, name='.txt') - - self._callFUT(context, 'repoze.view', IFoo, renderer='foo.txt') - actions = context.actions - self.assertEqual(len(actions), 1) - - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.environ = {} - result = wrapper(None, request) - self.assertEqual(result.body, 'Hello!') - - def test_request_type_asinterface(self): - 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, - None, False, 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 - 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), 1) - - action = actions[0] - discrim = ('view', IFoo, '', Dummy, IView, None, None, None, None, - None, False, 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 @@ -472,7 +33,7 @@ class TestViewDirective(unittest.TestCase): self.assertEqual(len(actions), 1) action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, 'GET', None, + discrim = ('view', IFoo, '', None, IView, None, None, 'GET', None, None, False, None, None, None) self.assertEqual(action['discriminator'], discrim) register = action['callable'] @@ -485,7 +46,6 @@ class TestViewDirective(unittest.TestCase): request.method = 'POST' self.assertEqual(wrapper.__predicated__(None, request), False) - def test_request_type_asinterfacestring(self): from zope.component import getSiteManager from zope.interface import Interface @@ -515,726 +75,6 @@ class TestViewDirective(unittest.TestCase): 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.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() - request_type = sm.getUtility(IRouteRequest, 'foo') - discrim = ('view', IFoo, '', request_type, IView, None, None, None, - 'foo', None, False, None, None, None) - self.assertEqual(action['discriminator'], discrim) - the_view = sm.adapters.lookup((IFoo, request_type), IView, name='') - request = DummyRequest({}) - self.assertEqual(the_view(None, request), '123') - - def test_with_request_method_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_method='POST') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, 'POST', None, - None, False, None, None, 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.exceptions 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, - None, False, None, None, 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() - 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') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None, - None, False, None, 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.exceptions 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') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, 'abc', None, None, - None, False, None, 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_param_val_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=123', None, - None, None, False, None, 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.exceptions 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=123', None, - None, None, False, None, 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_xhr_true(self): - from zope.component import getSiteManager - from zope.interface import Interface - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - return '123' - self._callFUT(context, None, IFoo, view=view, xhr=True) - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, True, None, None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.is_xhr = True - self.assertEqual(wrapper(None, request), '123') - - def test_with_xhr_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.exceptions import NotFound - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, xhr=True) - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, True, None, None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.is_xhr = False - self.assertRaises(NotFound, wrapper, None, request) - - def test_with_header_badregex(self): - from zope.component import getSiteManager - from zope.interface import Interface - from zope.configuration.exceptions import ConfigurationError - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, header='Host:a\\') - self.assertRaises(ConfigurationError, context.actions[-1]['callable']) - - def test_with_header_noval_match(self): - from zope.component import getSiteManager - from zope.interface import Interface - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - return '123' - self._callFUT(context, None, IFoo, view=view, header='Host') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, 'Host', None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.headers = {'Host':'whatever'} - self.assertEqual(wrapper(None, request), '123') - - def test_with_header_noval_nomatch(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.exceptions import NotFound - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, header='Host') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, 'Host', None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.headers = {'NotHost':'whatever'} - self.assertRaises(NotFound, wrapper, None, request) - - def test_with_header_val_match(self): - from zope.component import getSiteManager - from zope.interface import Interface - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - return '123' - self._callFUT(context, None, IFoo, view=view, header=r'Host:\d') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, r'Host:\d', None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.headers = {'Host':'1'} - self.assertEqual(wrapper(None, request), '123') - - def test_with_header_val_nomatch(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.exceptions import NotFound - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, header=r'Host:\d') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, r'Host:\d', None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.headers = {'Host':'abc'} - self.assertRaises(NotFound, wrapper, None, request) - - def test_with_accept_match(self): - from zope.component import getSiteManager - from zope.interface import Interface - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - return '123' - self._callFUT(context, None, IFoo, view=view, accept='text/xml') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, 'text/xml', None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.accept = ['text/xml'] - self.assertEqual(wrapper(None, request), '123') - - def test_with_accept_nomatch(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.exceptions import NotFound - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, accept='text/xml') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, 'text/xml', None, None) - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest() - request.accept = ['text/html'] - 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, - None, False, 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.exceptions 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, - None, False, 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_with_path_info_badregex(self): - from zope.component import getSiteManager - from zope.interface import Interface - from zope.configuration.exceptions import ConfigurationError - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - """ """ - self._callFUT(context, None, IFoo, view=view, path_info='\\') - self.assertRaises(ConfigurationError, context.actions[-1]['callable']) - - def test_with_path_info_match(self): - from zope.component import getSiteManager - from zope.interface import Interface - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): - return '123' - self._callFUT(context, None, IFoo, view=view, path_info='/foo') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, None, '/foo') - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest({'PATH_INFO': '/foo'}) - self.assertEqual(wrapper(None, request), '123') - - def test_with_path_info_nomatch(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.exceptions import NotFound - class IFoo(Interface): - pass - context = DummyContext() - view = lambda *arg: None - sm = getSiteManager() - def view(context, request): pass - self._callFUT(context, None, IFoo, view=view, path_info='/boo') - actions = context.actions - self.assertEqual(len(actions), 1) - action = actions[0] - discrim = ('view', IFoo, '', IRequest, IView, None, None, None, None, - None, False, None, None, '/boo') - self.assertEqual(action['discriminator'], discrim) - register = action['callable'] - register() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - request = DummyRequest({'PATH_INFO': '/foo'}) - self.assertRaises(NotFound, wrapper, None, 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 - context = DummyContext() - class IFoo(Interface): - pass - 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, - None, False, 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_call_ordering(self): - from zope.component import getSiteManager - from zope.interface import Interface - from zope.interface import directlyProvides - from repoze.bfg.interfaces import IRequest - from repoze.bfg.interfaces import IView - context = DummyContext() - class IFoo(Interface): - pass - def view1(context, request): return 'view1' - def view2(context, request): return 'view2' - def view3(context, request): return 'view3' - def view4(context, request): return 'view4' - def view5(context, request): return 'view5' - def view6(context, request): return 'view6' - def view7(context, request): return 'view7' - def view8(context, request): return 'view8' - self._callFUT(context, 'repoze.view', IFoo, view=view1) - self._callFUT(context, 'repoze.view', IFoo, view=view2, - request_method='POST') - self._callFUT(context, 'repoze.view', IFoo, view=view3, - request_param='param') - self._callFUT(context, 'repoze.view', IFoo, view=view4, - containment=IFoo) - self._callFUT(context, 'repoze.view', IFoo, view=view5, - request_method='POST', request_param='param') - self._callFUT(context, 'repoze.view', IFoo, view=view6, - request_method='POST', containment=IFoo) - self._callFUT(context, 'repoze.view', IFoo, view=view7, - request_param='param', containment=IFoo) - self._callFUT(context, 'repoze.view', IFoo, view=view8, - request_type='POST', request_param='param', - containment=IFoo) - for action in context.actions: - register = action['callable'] - register() - - sm = getSiteManager() - wrapper = sm.adapters.lookup((IFoo, IRequest), IView, name='') - - ctx = Dummy() - request = DummyRequest() - request.method = 'GET' - request.params = {} - self.assertEqual(wrapper(ctx, request), 'view1') - - ctx = Dummy() - request = DummyRequest() - request.params = {} - request.method = 'POST' - self.assertEqual(wrapper(ctx, request), 'view2') - - ctx = Dummy() - request = DummyRequest() - request.params = {'param':'1'} - request.method = 'GET' - self.assertEqual(wrapper(ctx, request), 'view3') - - ctx = Dummy() - directlyProvides(ctx, IFoo) - request = DummyRequest() - request.method = 'GET' - request.params = {} - self.assertEqual(wrapper(ctx, request), 'view4') - - ctx = Dummy() - request = DummyRequest() - request.method = 'POST' - request.params = {'param':'1'} - self.assertEqual(wrapper(ctx, request), 'view5') - - ctx = Dummy() - directlyProvides(ctx, IFoo) - request = DummyRequest() - request.params = {} - request.method = 'POST' - self.assertEqual(wrapper(ctx, request), 'view6') - - ctx = Dummy() - directlyProvides(ctx, IFoo) - request = DummyRequest() - request.method = 'GET' - request.params = {'param':'1'} - self.assertEqual(wrapper(ctx, request), 'view7') - - ctx = Dummy() - directlyProvides(ctx, IFoo) - request = DummyRequest() - request.method = 'POST' - request.params = {'param':'1'} - self.assertEqual(wrapper(ctx, request), 'view8') - - 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, - None, False, 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, - None, False, 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 setUp(self): testing.setUp() @@ -1557,871 +397,36 @@ class TestRouteDirective(unittest.TestCase): self.assertEqual(len(routes[0].predicates), num_predicates) return route - def test_defaults(self): - context = DummyContext() - self._callFUT(context, 'name', 'path') - actions = context.actions - self.assertEqual(len(actions), 1) - route_action = actions[0] - route_callable = route_action['callable'] - route_discriminator = route_action['discriminator'] - self.assertEqual( - route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - def test_with_view(self): + from zope.component import getSiteManager from zope.interface import Interface from repoze.bfg.interfaces import IView from repoze.bfg.interfaces import IRouteRequest - from zope.component import getSiteManager - context = DummyContext() - def view(context, request): - return '123' + view = lambda *arg: 'OK' self._callFUT(context, 'name', 'path', view=view) actions = context.actions self.assertEqual(len(actions), 2) - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - register = view_action['callable'] - register() - 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'] - self.assertEqual( - route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_and_view_for(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - context = DummyContext() - def view(context, request): - return '123' - self._callFUT(context, 'name', 'path', view=view, view_for=IDummy) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', IDummy, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual( - route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_and_view_for_alias(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - context = DummyContext() - def view(context, request): - return '123' - self._callFUT(context, 'name', 'path', view=view, for_=IDummy) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', IDummy, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None,None)) - route_callable() - self._assertRoute('name', 'path') - - def test_without_view(self): - from repoze.bfg.interfaces import IRoutesMapper - from zope.component import getSiteManager - context = DummyContext() - self._callFUT(context, 'name', 'path') - actions = context.actions - self.assertEqual(len(actions), 1) - route_action = actions[0] - route_callable = route_action['callable'] - route_discriminator = route_action['discriminator'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - sm = getSiteManager() - mapper = sm.getUtility(IRoutesMapper) - routes = mapper.get_routes() - self.assertEqual(len(routes), 1) - self.assertEqual(routes[0].name, 'name') - self.assertEqual(routes[0].path, 'path') - self.failIf(routes[0].predicates) - - def test_with_view_request_type(self): - from zope.component import getSiteManager - 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_type="GET") - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, 'GET', - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None,None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_request_type_alias(self): - from zope.component import getSiteManager - 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_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, 'GET', - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') - self.failUnless(wrapped) - - route_action = actions[1] - route_callable = route_action['callable'] + route_action['callable']() route_discriminator = route_action['discriminator'] - route_args = route_action['args'] self.assertEqual(route_discriminator, ('route', 'name', False, None, None, None, None,None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_request_method(self): - from zope.component import getSiteManager - 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_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, 'GET', - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_containment(self): - from zope.component import getSiteManager - 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_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, True, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None,None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_header(self): - from zope.component import getSiteManager - 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_header='Host') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, 'Host', None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None,None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_path_info(self): - from zope.component import getSiteManager - 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_path_info='/foo') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, '/foo') - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_xhr(self): - from zope.component import getSiteManager - 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_xhr=True) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, True, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_accept(self): - from zope.component import getSiteManager - 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_accept='text/xml') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, 'text/xml', None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual( - route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_renderer(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - from repoze.bfg.interfaces import IRendererFactory - - sm = getSiteManager() - def renderer(name): - return lambda *x: 'foo' - sm.registerUtility(renderer, IRendererFactory, name='dummy') - - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - view_renderer="dummy") - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() self._assertRoute('name', 'path') - def test_with_view_renderer_alias(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - from repoze.bfg.interfaces import IRendererFactory - + view_action = actions[1] sm = getSiteManager() - def renderer(name): - return lambda *x: 'foo' - sm.registerUtility(renderer, IRendererFactory, name='dummy') - - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - renderer="dummy") - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() request_type = sm.getUtility(IRouteRequest, 'name') view_discriminator = view_action['discriminator'] discrim = ('view', None, '', request_type, IView, None, None, None, 'name', None, False, None, None, None) self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - - def test_with_view_permission(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - sm = getSiteManager() - - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - view_permission="edit") - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_permission_alias(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - sm = getSiteManager() - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - permission="edit") - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_for(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - sm = getSiteManager() - - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - view_for=IDummy) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', IDummy, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_view_for_alias(self): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IView - from repoze.bfg.interfaces import IRouteRequest - - sm = getSiteManager() - context = DummyContext() - def view(context, request): - """ """ - self._callFUT(context, 'name', 'path', view=view, - for_=IDummy) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', IDummy, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None, None)) - route_callable() - self._assertRoute('name', 'path') - - def test_with_request_type_GET(self): - from zope.component import getSiteManager - 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_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, 'GET', - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + wrapped = sm.adapters.lookup((Interface, request_type), IView, name='') self.failUnless(wrapped) - route_action = actions[1] - route_callable = route_action['callable'] - route_discriminator = route_action['discriminator'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None, None, None,None)) - route_callable() - self._assertRoute('name', 'path') - # route predicates - def test_with_xhr(self): - from zope.component import getSiteManager - 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, xhr=True) - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', True, None, None, None, None, None)) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.is_xhr = True - self.assertEqual(route.predicates[0](None, request), True) - - def test_with_request_method(self): - from zope.component import getSiteManager - 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_type = sm.getUtility(IRouteRequest, 'name') - - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, 'GET',None, None, None, None)) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.method = 'GET' - self.assertEqual(route.predicates[0](None, request), True) - - def test_with_path_info(self): - from zope.component import getSiteManager - 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, path_info='/foo') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, '/foo',None,None, None)) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.path_info = '/foo' - self.assertEqual(route.predicates[0](None, request), True) - - def test_with_request_param(self): - from zope.component import getSiteManager - 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_param='abc') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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_discriminator, - ('route', 'name', False, None, None,'abc', None, None)) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.params = {'abc':'123'} - self.assertEqual(route.predicates[0](None, request), True) - - def test_with_header(self): - from zope.component import getSiteManager - 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, header='Host') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual(route_discriminator, - ('route', 'name', False, None, None,None,'Host', None)) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.headers = {'Host':'example.com'} - self.assertEqual(route.predicates[0](None, request), True) - - def test_with_accept(self): - from zope.component import getSiteManager - 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, accept='text/xml') - actions = context.actions - self.assertEqual(len(actions), 2) - - view_action = actions[0] - register = view_action['callable'] - register() - sm = getSiteManager() - request_type = sm.getUtility(IRouteRequest, 'name') - - view_discriminator = view_action['discriminator'] - discrim = ('view', None, '', request_type, IView, None, None, None, - 'name', None, False, None, None, None) - self.assertEqual(view_discriminator, discrim) - 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'] - self.assertEqual( - route_discriminator, - ('route', 'name', False, None, None, None, None, 'text/xml')) - route_callable() - route = self._assertRoute('name', 'path', 1) - request = DummyRequest() - request.accept = ['text/xml'] - self.assertEqual(route.predicates[0](None, request), True) - class TestStaticDirective(unittest.TestCase): def setUp(self): testing.setUp() @@ -2449,32 +454,30 @@ class TestStaticDirective(unittest.TestCase): actions = context.actions self.assertEqual(len(actions), 2) - action = actions[0] - discriminator = action['discriminator'] - self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) - self.assertEqual(discriminator[4], IView) sm = getSiteManager() - register = action['callable'] - register() - sm = getSiteManager() - iface = implementedBy(StaticRootFactory) - request_type = sm.getUtility(IRouteRequest, 'name') - 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'] + route_action = actions[0] + route_action['callable']() + discriminator = route_action['discriminator'] self.assertEqual(discriminator, ('route', 'name', False, None, None, None, None, None)) - action['callable']() mapper = sm.getUtility(IRoutesMapper) routes = mapper.get_routes() self.assertEqual(len(routes), 1) self.assertEqual(routes[0].path, 'name*subpath') self.assertEqual(routes[0].name, 'name') + + view_action = actions[1] + discriminator = view_action['discriminator'] + self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) + self.assertEqual(discriminator[4], IView) + iface = implementedBy(StaticRootFactory) + request_type = sm.getUtility(IRouteRequest, 'name') + wrapped = sm.adapters.lookup((iface, request_type), IView, name='') + request = DummyRequest() + self.assertEqual(wrapped(None, request).__class__, StaticURLParser) + def test_package_relative(self): from repoze.bfg.static import PackageURLParser from zope.component import getSiteManager @@ -2488,30 +491,29 @@ class TestStaticDirective(unittest.TestCase): actions = context.actions self.assertEqual(len(actions), 2) - action = actions[0] - discriminator = action['discriminator'] - self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) - self.assertEqual(discriminator[4], IView) - register = action['callable'] - register() sm = getSiteManager() - iface = implementedBy(StaticRootFactory) - request_type = sm.getUtility(IRouteRequest, 'name') - view = sm.adapters.lookup((iface, request_type), IView, name='') - request = DummyRequest() - self.assertEqual(view(None, request).__class__, PackageURLParser) - action = actions[1] - discriminator = action['discriminator'] + route_action = actions[0] + discriminator = route_action['discriminator'] self.assertEqual(discriminator, ('route', 'name', False, None, None, None, None, None)) - action['callable']() + route_action['callable']() mapper = sm.getUtility(IRoutesMapper) routes = mapper.get_routes() self.assertEqual(len(routes), 1) self.assertEqual(routes[0].path, 'name*subpath') self.assertEqual(routes[0].name, 'name') + view_action = actions[1] + discriminator = view_action['discriminator'] + self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) + self.assertEqual(discriminator[4], IView) + iface = implementedBy(StaticRootFactory) + request_type = sm.getUtility(IRouteRequest, 'name') + view = sm.adapters.lookup((iface, request_type), IView, name='') + request = DummyRequest() + self.assertEqual(view(None, request).__class__, PackageURLParser) + def test_here_relative(self): from repoze.bfg.static import PackageURLParser from zope.component import getSiteManager @@ -2526,31 +528,28 @@ class TestStaticDirective(unittest.TestCase): actions = context.actions self.assertEqual(len(actions), 2) - action = actions[0] - discriminator = action['discriminator'] - self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) - self.assertEqual(discriminator[4], IView) - register = action['callable'] - register() sm = getSiteManager() - iface = implementedBy(StaticRootFactory) - request_type = sm.getUtility(IRouteRequest, 'name') - 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'] + route_action = actions[0] + route_action['callable']() + discriminator = route_action['discriminator'] self.assertEqual(discriminator, ('route', 'name', False, None, None, None, None, None)) - action['callable']() mapper = sm.getUtility(IRoutesMapper) routes = mapper.get_routes() self.assertEqual(len(routes), 1) self.assertEqual(routes[0].path, 'name*subpath') self.assertEqual(routes[0].name, 'name') + view_action = actions[1] + discriminator = view_action['discriminator'] + self.assertEqual(discriminator[:3], ('view', StaticRootFactory, '')) + self.assertEqual(discriminator[4], IView) + iface = implementedBy(StaticRootFactory) + request_type = sm.getUtility(IRouteRequest, 'name') + wrapped = sm.adapters.lookup((iface, request_type), IView, name='') + request = DummyRequest() + self.assertEqual(wrapped(None, request).__class__, PackageURLParser) + class TestResourceDirective(unittest.TestCase): def setUp(self): testing.setUp() |
