| | |
| | | def _makeOne(self, *arg, **kw): |
| | | from pyramid.config import Configurator |
| | | config = Configurator(*arg, **kw) |
| | | config.registry._dont_resolve_responses = True |
| | | return config |
| | | |
| | | def _registerRenderer(self, config, name='.txt'): |
| | |
| | | config.registry.queryAdapter(response, IResponse) is response) |
| | | |
| | | def test_setup_registry_explicit_notfound_trumps_iexceptionresponse(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.httpexceptions import HTTPNotFound |
| | |
| | | config.setup_registry() # registers IExceptionResponse default view |
| | | def myview(context, request): |
| | | return 'OK' |
| | | config.add_view(myview, context=HTTPNotFound) |
| | | config.add_view(myview, context=HTTPNotFound, renderer=null_renderer) |
| | | request = self._makeRequest(config) |
| | | view = self._getViewCallable(config, |
| | | ctx_iface=implementedBy(HTTPNotFound), |
| | |
| | | None, True, True) |
| | | |
| | | def test_add_view_with_request_type(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import directlyProvides |
| | | from pyramid.interfaces import IRequest |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, |
| | | request_type='pyramid.interfaces.IRequest') |
| | | request_type='pyramid.interfaces.IRequest', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = DummyRequest() |
| | | self._assertNotFound(wrapper, None, request) |
| | |
| | | self.assertEqual(wrapper.__doc__, view.__doc__) |
| | | |
| | | def test_add_view_view_callable_dottedname(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view='pyramid.tests.test_config.dummy_view') |
| | | config.add_view(view='pyramid.tests.test_config.dummy_view', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | |
| | | def test_add_view_with_function_callable(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | result = wrapper(None, None) |
| | | self.assertEqual(result, 'OK') |
| | | |
| | | def test_add_view_with_function_callable_requestonly(self): |
| | | from pyramid.renderers import null_renderer |
| | | def view(request): |
| | | return 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | result = wrapper(None, None) |
| | | self.assertEqual(result, 'OK') |
| | | |
| | | def test_add_view_with_decorator(self): |
| | | from pyramid.renderers import null_renderer |
| | | def view(request): |
| | | """ ABC """ |
| | | return 'OK' |
| | |
| | | return fn(context, request) |
| | | return inner |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, decorator=view_wrapper) |
| | | config.add_view(view=view, decorator=view_wrapper, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertFalse(wrapper is view) |
| | | self.assertEqual(wrapper.__doc__, view.__doc__) |
| | |
| | | assert_similar_datetime(expires, when) |
| | | |
| | | def test_add_view_as_instance(self): |
| | | from pyramid.renderers import null_renderer |
| | | class AView: |
| | | def __call__(self, context, request): |
| | | """ """ |
| | | return 'OK' |
| | | view = AView() |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | result = wrapper(None, None) |
| | | self.assertEqual(result, 'OK') |
| | | |
| | | def test_add_view_as_instance_requestonly(self): |
| | | from pyramid.renderers import null_renderer |
| | | class AView: |
| | | def __call__(self, request): |
| | | """ """ |
| | | return 'OK' |
| | | view = AView() |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | result = wrapper(None, None) |
| | | self.assertEqual(result, 'OK') |
| | | |
| | | def test_add_view_as_oldstyle_class(self): |
| | | from pyramid.renderers import null_renderer |
| | | class view: |
| | | def __init__(self, context, request): |
| | | self.context = context |
| | |
| | | def __call__(self): |
| | | return 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | result = wrapper(None, request) |
| | |
| | | self.assertEqual(request.__view__.__class__, view) |
| | | |
| | | def test_add_view_as_oldstyle_class_requestonly(self): |
| | | from pyramid.renderers import null_renderer |
| | | class view: |
| | | def __init__(self, request): |
| | | self.request = request |
| | |
| | | def __call__(self): |
| | | return 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | |
| | | request = self._makeRequest(config) |
| | |
| | | self.assertEqual(request.__view__.__class__, view) |
| | | |
| | | def test_add_view_context_as_class(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | view = lambda *arg: 'OK' |
| | | class Foo: |
| | | pass |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(context=Foo, view=view) |
| | | config.add_view(context=Foo, view=view, renderer=null_renderer) |
| | | foo = implementedBy(Foo) |
| | | wrapper = self._getViewCallable(config, foo) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_context_as_iface(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(context=IDummy, view=view) |
| | | config.add_view(context=IDummy, view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, IDummy) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_context_as_dottedname(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(context='pyramid.tests.test_config.IDummy', |
| | | view=view) |
| | | view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, IDummy) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_for__as_dottedname(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(for_='pyramid.tests.test_config.IDummy', |
| | | view=view) |
| | | view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, IDummy) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_for_as_class(self): |
| | | # ``for_`` is older spelling for ``context`` |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | view = lambda *arg: 'OK' |
| | | class Foo: |
| | | pass |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(for_=Foo, view=view) |
| | | config.add_view(for_=Foo, view=view, renderer=null_renderer) |
| | | foo = implementedBy(Foo) |
| | | wrapper = self._getViewCallable(config, foo) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_for_as_iface(self): |
| | | # ``for_`` is older spelling for ``context`` |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(for_=IDummy, view=view) |
| | | config.add_view(for_=IDummy, view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, IDummy) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_context_trumps_for(self): |
| | | # ``for_`` is older spelling for ``context`` |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | class Foo: |
| | | pass |
| | | config.add_view(context=IDummy, for_=Foo, view=view) |
| | | config.add_view(context=IDummy, for_=Foo, view=view, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, IDummy) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_register_secured_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import ISecuredView |
| | |
| | | view = lambda *arg: 'OK' |
| | | view.__call_permissive__ = view |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = config.registry.adapters.lookup( |
| | | (IViewClassifier, IRequest, Interface), |
| | | ISecuredView, name='', default=None) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_exception_register_secured_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view = lambda *arg: 'OK' |
| | | view.__call_permissive__ = view |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, context=RuntimeError) |
| | | config.add_view(view=view, context=RuntimeError, renderer=null_renderer) |
| | | wrapper = config.registry.adapters.lookup( |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | IView, name='', default=None) |
| | | self.assertEqual(wrapper, view) |
| | | |
| | | def test_add_view_same_phash_overrides_existing_single_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from hashlib import md5 |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview, xhr=True) |
| | | config.add_view(view=newview, xhr=True, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | | request = DummyRequest() |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_exc_same_phash_overrides_existing_single_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from hashlib import md5 |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | |
| | | IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview, xhr=True, context=RuntimeError) |
| | | config.add_view(view=newview, xhr=True, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_default_phash_overrides_no_phash(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview) |
| | | config.add_view(view=newview, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | | request = DummyRequest() |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_exc_default_phash_overrides_no_phash(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview, context=RuntimeError) |
| | | config.add_view(view=newview, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_default_phash_overrides_default_phash(self): |
| | | from pyramid.renderers import null_renderer |
| | | from pyramid.config import DEFAULT_PHASH |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview) |
| | | config.add_view(view=newview, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | | request = DummyRequest() |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_exc_default_phash_overrides_default_phash(self): |
| | | from pyramid.renderers import null_renderer |
| | | from pyramid.config import DEFAULT_PHASH |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | |
| | | IView, name='') |
| | | def newview(context, request): |
| | | return 'OK' |
| | | config.add_view(view=newview, context=RuntimeError) |
| | | config.add_view(view=newview, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_multiview_replaces_existing_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | config = self._makeOne(autocommit=True) |
| | | config.registry.registerAdapter( |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | |
| | | def test_add_view_exc_multiview_replaces_existing_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view, |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | IView, name='') |
| | | config.add_view(view=view, context=RuntimeError) |
| | | config.add_view(view=view, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | |
| | | def test_add_view_multiview_replaces_existing_securedview(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import ISecuredView |
| | |
| | | config.registry.registerAdapter( |
| | | view, (IViewClassifier, IRequest, Interface), |
| | | ISecuredView, name='') |
| | | config.add_view(view=view) |
| | | config.add_view(view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | |
| | | def test_add_view_exc_multiview_replaces_existing_securedview(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import ISecuredView |
| | |
| | | view, |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | ISecuredView, name='') |
| | | config.add_view(view=view, context=RuntimeError) |
| | | config.add_view(view=view, context=RuntimeError, renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | |
| | | def test_add_view_with_accept_multiview_replaces_existing_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | config = self._makeOne(autocommit=True) |
| | | config.registry.registerAdapter( |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | config.add_view(view=view2, accept='text/html') |
| | | config.add_view(view=view2, accept='text/html', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(len(wrapper.views), 1) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK2') |
| | | |
| | | def test_add_view_exc_with_accept_multiview_replaces_existing_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view, |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | IView, name='') |
| | | config.add_view(view=view2, accept='text/html', context=RuntimeError) |
| | | config.add_view(view=view2, accept='text/html', context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK2') |
| | | |
| | | def test_add_view_multiview_replaces_existing_view_with___accept__(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | config = self._makeOne(autocommit=True) |
| | | config.registry.registerAdapter( |
| | | view, (IViewClassifier, IRequest, Interface), IView, name='') |
| | | config.add_view(view=view2) |
| | | config.add_view(view=view2, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(len(wrapper.views), 1) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_exc_mulview_replaces_existing_view_with___accept__(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view, |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | IView, name='') |
| | | config.add_view(view=view2, context=RuntimeError) |
| | | config.add_view(view=view2, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_multiview_replaces_multiview(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IMultiView |
| | |
| | | view, (IViewClassifier, IRequest, Interface), |
| | | IMultiView, name='') |
| | | view2 = lambda *arg: 'OK2' |
| | | config.add_view(view=view2) |
| | | config.add_view(view=view2, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual([x[:2] for x in wrapper.views], [(view2, None)]) |
| | | self.assertEqual(wrapper(None, None), 'OK1') |
| | | |
| | | def test_add_view_exc_multiview_replaces_multiview(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IMultiView |
| | |
| | | (IExceptionViewClassifier, IRequest, implementedBy(RuntimeError)), |
| | | IMultiView, name='') |
| | | view2 = lambda *arg: 'OK2' |
| | | config.add_view(view=view2, context=RuntimeError) |
| | | config.add_view(view=view2, context=RuntimeError, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), exception_view=True) |
| | | self.assertTrue(IMultiView.providedBy(wrapper)) |
| | |
| | | self.assertEqual(wrapper(None, None), 'OK1') |
| | | |
| | | def test_add_view_multiview_context_superclass_then_subclass(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | config = self._makeOne(autocommit=True) |
| | | config.registry.registerAdapter( |
| | | view, (IViewClassifier, IRequest, ISuper), IView, name='') |
| | | config.add_view(view=view2, for_=ISub) |
| | | config.add_view(view=view2, for_=ISub, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, ISuper, IRequest) |
| | | self.assertFalse(IMultiView.providedBy(wrapper)) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | |
| | | self.assertEqual(wrapper(None, None), 'OK2') |
| | | |
| | | def test_add_view_multiview_exception_superclass_then_subclass(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.interfaces import IView |
| | |
| | | view, (IViewClassifier, IRequest, Super), IView, name='') |
| | | config.registry.registerAdapter( |
| | | view, (IExceptionViewClassifier, IRequest, Super), IView, name='') |
| | | config.add_view(view=view2, for_=Sub) |
| | | config.add_view(view=view2, for_=Sub, renderer=null_renderer) |
| | | wrapper = self._getViewCallable( |
| | | config, implementedBy(Super), IRequest) |
| | | wrapper_exc_view = self._getViewCallable( |
| | |
| | | self.assertEqual(wrapper_exc_view(None, None), 'OK2') |
| | | |
| | | def test_add_view_multiview_call_ordering(self): |
| | | from pyramid.renderers import null_renderer as nr |
| | | from zope.interface import directlyProvides |
| | | def view1(context, request): return 'view1' |
| | | def view2(context, request): return 'view2' |
| | |
| | | def view7(context, request): return 'view7' |
| | | def view8(context, request): return 'view8' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view1) |
| | | config.add_view(view=view2, request_method='POST') |
| | | config.add_view(view=view3,request_param='param') |
| | | config.add_view(view=view4, containment=IDummy) |
| | | config.add_view(view=view5, request_method='POST',request_param='param') |
| | | config.add_view(view=view6, request_method='POST', containment=IDummy) |
| | | config.add_view(view=view7, request_param='param', containment=IDummy) |
| | | config.add_view(view=view1, renderer=nr) |
| | | config.add_view(view=view2, request_method='POST', renderer=nr) |
| | | config.add_view(view=view3,request_param='param', renderer=nr) |
| | | config.add_view(view=view4, containment=IDummy, renderer=nr) |
| | | config.add_view(view=view5, request_method='POST', |
| | | request_param='param', renderer=nr) |
| | | config.add_view(view=view6, request_method='POST', containment=IDummy, |
| | | renderer=nr) |
| | | config.add_view(view=view7, request_param='param', containment=IDummy, |
| | | renderer=nr) |
| | | config.add_view(view=view8, request_method='POST',request_param='param', |
| | | containment=IDummy) |
| | | containment=IDummy, renderer=nr) |
| | | |
| | | |
| | | wrapper = self._getViewCallable(config) |
| | |
| | | self.assertEqual(result.settings, settings) |
| | | |
| | | def test_add_view_with_request_type_as_iface(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import directlyProvides |
| | | def view(context, request): |
| | | return 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(request_type=IDummy, view=view) |
| | | config.add_view(request_type=IDummy, view=view, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config, None) |
| | | request = self._makeRequest(config) |
| | | directlyProvides(request, IDummy) |
| | |
| | | config.add_view, view, '', None, None, object) |
| | | |
| | | def test_add_view_with_route_name(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.component import ComponentLookupError |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, route_name='foo') |
| | | config.add_view(view=view, route_name='foo', renderer=null_renderer) |
| | | self.assertEqual(len(config.registry.deferred_route_views), 1) |
| | | infos = config.registry.deferred_route_views['foo'] |
| | | self.assertEqual(len(infos), 1) |
| | |
| | | self.assertEqual(info['custom_predicates'], ('123',)) |
| | | |
| | | def test_add_view_with_route_name_exception(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from zope.component import ComponentLookupError |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, route_name='foo', context=RuntimeError) |
| | | config.add_view(view=view, route_name='foo', context=RuntimeError, |
| | | renderer=null_renderer) |
| | | self.assertEqual(len(config.registry.deferred_route_views), 1) |
| | | infos = config.registry.deferred_route_views['foo'] |
| | | self.assertEqual(len(infos), 1) |
| | |
| | | self.assertEqual(wrapper_exc_view(None, None), 'OK') |
| | | |
| | | def test_add_view_with_request_method_true(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, request_method='POST') |
| | | config.add_view(view=view, request_method='POST', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.method = 'POST' |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_request_param_noval_true(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, request_param='abc') |
| | | config.add_view(view=view, request_param='abc', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.params = {'abc':''} |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_request_param_val_true(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, request_param='abc=123') |
| | | config.add_view(view=view, request_param='abc=123', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.params = {'abc':'123'} |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_xhr_true(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, xhr=True) |
| | | config.add_view(view=view, xhr=True, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.is_xhr = True |
| | |
| | | config.add_view, view=view, header='Host:a\\') |
| | | |
| | | def test_add_view_with_header_noval_match(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, header='Host') |
| | | config.add_view(view=view, header='Host', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.headers = {'Host':'whatever'} |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_header_val_match(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, header=r'Host:\d') |
| | | config.add_view(view=view, header=r'Host:\d', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.headers = {'Host':'1'} |
| | |
| | | self.assertRaises(HTTPNotFound, wrapper, None, request) |
| | | |
| | | def test_add_view_with_accept_match(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, accept='text/xml') |
| | | config.add_view(view=view, accept='text/xml', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.accept = ['text/xml'] |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_containment_true(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import directlyProvides |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, containment=IDummy) |
| | | config.add_view(view=view, containment=IDummy, renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | context = DummyContext() |
| | | directlyProvides(context, IDummy) |
| | |
| | | self._assertNotFound(wrapper, context, None) |
| | | |
| | | def test_add_view_with_containment_dottedname(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import directlyProvides |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view( |
| | | view=view, |
| | | containment='pyramid.tests.test_config.IDummy') |
| | | containment='pyramid.tests.test_config.IDummy', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | context = DummyContext() |
| | | directlyProvides(context, IDummy) |
| | |
| | | config.add_view, view=view, path_info='\\') |
| | | |
| | | def test_add_view_with_path_info_match(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, path_info='/foo') |
| | | config.add_view(view=view, path_info='/foo', renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.path_info = '/foo' |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_with_custom_predicates_match(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | config = self._makeOne(autocommit=True) |
| | | def pred1(context, request): |
| | |
| | | def pred2(context, request): |
| | | return True |
| | | predicates = (pred1, pred2) |
| | | config.add_view(view=view, custom_predicates=predicates) |
| | | config.add_view(view=view, custom_predicates=predicates, |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | |
| | | self._assertNotFound(wrapper, None, request) |
| | | |
| | | def test_add_view_custom_predicate_bests_standard_predicate(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | view2 = lambda *arg: 'NOT OK' |
| | | config = self._makeOne(autocommit=True) |
| | | def pred1(context, request): |
| | | return True |
| | | config.add_view(view=view, custom_predicates=(pred1,)) |
| | | config.add_view(view=view2, request_method='GET') |
| | | config.add_view(view=view, custom_predicates=(pred1,), |
| | | renderer=null_renderer) |
| | | config.add_view(view=view2, request_method='GET', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.method = 'GET' |
| | | self.assertEqual(wrapper(None, request), 'OK') |
| | | |
| | | def test_add_view_custom_more_preds_first_bests_fewer_preds_last(self): |
| | | from pyramid.renderers import null_renderer |
| | | view = lambda *arg: 'OK' |
| | | view2 = lambda *arg: 'NOT OK' |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_view(view=view, request_method='GET', xhr=True) |
| | | config.add_view(view=view2, request_method='GET') |
| | | config.add_view(view=view, request_method='GET', xhr=True, |
| | | renderer=null_renderer) |
| | | config.add_view(view=view2, request_method='GET', |
| | | renderer=null_renderer) |
| | | wrapper = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | request.method = 'GET' |
| | |
| | | self.assertRaises(ConfigurationConflictError, config.commit) |
| | | |
| | | def test_add_view_with_permission(self): |
| | | from pyramid.renderers import null_renderer |
| | | view1 = lambda *arg: 'OK' |
| | | outerself = self |
| | | class DummyPolicy(object): |
| | |
| | | config = self._makeOne(authorization_policy=policy, |
| | | authentication_policy=policy, |
| | | autocommit=True) |
| | | config.add_view(view=view1, permission='view') |
| | | config.add_view(view=view1, permission='view', renderer=null_renderer) |
| | | view = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | self.assertEqual(view(None, request), 'OK') |
| | | |
| | | def test_add_view_with_default_permission_no_explicit_permission(self): |
| | | from pyramid.renderers import null_renderer |
| | | view1 = lambda *arg: 'OK' |
| | | outerself = self |
| | | class DummyPolicy(object): |
| | |
| | | authentication_policy=policy, |
| | | default_permission='view', |
| | | autocommit=True) |
| | | config.add_view(view=view1) |
| | | config.add_view(view=view1, renderer=null_renderer) |
| | | view = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | self.assertEqual(view(None, request), 'OK') |
| | | |
| | | def test_add_view_with_no_default_permission_no_explicit_permission(self): |
| | | from pyramid.renderers import null_renderer |
| | | view1 = lambda *arg: 'OK' |
| | | class DummyPolicy(object): pass # wont be called |
| | | policy = DummyPolicy() |
| | | config = self._makeOne(authorization_policy=policy, |
| | | authentication_policy=policy, |
| | | autocommit=True) |
| | | config.add_view(view=view1) |
| | | config.add_view(view=view1, renderer=null_renderer) |
| | | view = self._getViewCallable(config) |
| | | request = self._makeRequest(config) |
| | | self.assertEqual(view(None, request), 'OK') |
| | |
| | | raise AssertionError |
| | | |
| | | def test_derive_view_function(self): |
| | | from pyramid.renderers import null_renderer |
| | | def view(request): |
| | | return 'OK' |
| | | config = self._makeOne() |
| | | result = config.derive_view(view) |
| | | result = config.derive_view(view, renderer=null_renderer) |
| | | self.assertFalse(result is view) |
| | | self.assertEqual(result(None, None), 'OK') |
| | | |
| | | def test_derive_view_dottedname(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne() |
| | | result = config.derive_view( |
| | | 'pyramid.tests.test_config.dummy_view') |
| | | 'pyramid.tests.test_config.dummy_view', renderer=null_renderer) |
| | | self.assertFalse(result is dummy_view) |
| | | self.assertEqual(result(None, None), 'OK') |
| | | |
| | |
| | | self.assertEqual(config._ctx.info, 'abc') |
| | | |
| | | def test_add_static_here_no_utility_registered(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import Interface |
| | | from pyramid.static import PackageURLParser |
| | | from pyramid.interfaces import IView |
| | | from pyramid.interfaces import IViewClassifier |
| | | config = self._makeOne(autocommit=True) |
| | | config.add_static_view('static', 'fixtures/static') |
| | | config.add_static_view('static', 'fixtures/static', |
| | | renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'static/') |
| | | self._assertRoute(config, 'static/', 'static/*subpath') |
| | | wrapped = config.registry.adapters.lookup( |
| | | (IViewClassifier, request_type, Interface), IView, name='') |
| | | request = self._makeRequest(config) |
| | | self.assertEqual(wrapped(None, request).__class__, PackageURLParser) |
| | | result = wrapped(None, request) |
| | | self.assertEqual(result.__class__, PackageURLParser) |
| | | |
| | | def test_add_static_view_package_relative(self): |
| | | from pyramid.interfaces import IStaticURLInfo |
| | |
| | | [('static', static_path, {})]) |
| | | |
| | | def test_set_notfound_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.httpexceptions import HTTPNotFound |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: arg |
| | | config.set_notfound_view(view) |
| | | config.set_notfound_view(view, renderer=null_renderer) |
| | | request = self._makeRequest(config) |
| | | view = self._getViewCallable(config, |
| | | ctx_iface=implementedBy(HTTPNotFound), |
| | |
| | | self.assertEqual(result, (None, request)) |
| | | |
| | | def test_set_notfound_view_request_has_context(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.httpexceptions import HTTPNotFound |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: arg |
| | | config.set_notfound_view(view) |
| | | config.set_notfound_view(view, renderer=null_renderer) |
| | | request = self._makeRequest(config) |
| | | request.context = 'abc' |
| | | view = self._getViewCallable(config, |
| | |
| | | self.assertTrue('div' in result.body) |
| | | |
| | | def test_set_forbidden_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.httpexceptions import HTTPForbidden |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.set_forbidden_view(view) |
| | | config.set_forbidden_view(view, renderer=null_renderer) |
| | | request = self._makeRequest(config) |
| | | view = self._getViewCallable(config, |
| | | ctx_iface=implementedBy(HTTPForbidden), |
| | |
| | | self.assertEqual(result, 'OK') |
| | | |
| | | def test_set_forbidden_view_request_has_context(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | from pyramid.interfaces import IRequest |
| | | from pyramid.httpexceptions import HTTPForbidden |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: arg |
| | | config.set_forbidden_view(view) |
| | | config.set_forbidden_view(view, renderer=null_renderer) |
| | | request = self._makeRequest(config) |
| | | request.context = 'abc' |
| | | view = self._getViewCallable(config, |
| | |
| | | self.assertEqual(registeredview.__name__, 'view3') |
| | | |
| | | def test_autocommit_no_conflicts(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | def view1(request): pass |
| | | def view2(request): pass |
| | | def view3(request): pass |
| | | config.add_view(view1) |
| | | config.add_view(view2) |
| | | config.add_view(view3) |
| | | config.add_view(view1, renderer=null_renderer) |
| | | config.add_view(view2, renderer=null_renderer) |
| | | config.add_view(view3, renderer=null_renderer) |
| | | config.commit() |
| | | registeredview = self._getViewCallable(config) |
| | | self.assertEqual(registeredview.__name__, 'view3') |
| | |
| | | yield confinst[2] |
| | | |
| | | def test_add_route_with_view(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.add_route('name', 'path', view=view) |
| | | config.add_route('name', 'path', view=view, view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable(config, None, request_type) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | | self._assertRoute(config, 'name', 'path') |
| | | |
| | | def test_add_route_with_view_context(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.add_route('name', 'path', view=view, view_context=IDummy) |
| | | config.add_route('name', 'path', view=view, view_context=IDummy, |
| | | view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable(config, IDummy, request_type) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | |
| | | self.assertEqual(wrapper, None) |
| | | |
| | | def test_add_route_with_view_exception(self): |
| | | from pyramid.renderers import null_renderer |
| | | from zope.interface import implementedBy |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.add_route('name', 'path', view=view, view_context=RuntimeError) |
| | | config.add_route('name', 'path', view=view, view_context=RuntimeError, |
| | | view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable( |
| | | config, ctx_iface=implementedBy(RuntimeError), |
| | |
| | | self.assertEqual(wrapper, None) |
| | | |
| | | def test_add_route_with_view_for(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.add_route('name', 'path', view=view, view_for=IDummy) |
| | | config.add_route('name', 'path', view=view, view_for=IDummy, |
| | | view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable(config, IDummy, request_type) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | |
| | | self.assertEqual(wrapper, None) |
| | | |
| | | def test_add_route_with_for_(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | view = lambda *arg: 'OK' |
| | | config.add_route('name', 'path', view=view, for_=IDummy) |
| | | config.add_route('name', 'path', view=view, for_=IDummy, |
| | | view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable(config, IDummy, request_type) |
| | | self.assertEqual(wrapper(None, None), 'OK') |
| | |
| | | self.assertEqual(wrapper(None, None).body, 'Hello!') |
| | | |
| | | def test_add_route_with_view_attr(self): |
| | | from pyramid.renderers import null_renderer |
| | | config = self._makeOne(autocommit=True) |
| | | self._registerRenderer(config) |
| | | class View(object): |
| | |
| | | pass |
| | | def alt(self): |
| | | return 'OK' |
| | | config.add_route('name', 'path', view=View, view_attr='alt') |
| | | config.add_route('name', 'path', view=View, view_attr='alt', |
| | | view_renderer=null_renderer) |
| | | request_type = self._getRouteRequestIface(config, 'name') |
| | | wrapper = self._getViewCallable(config, None, request_type) |
| | | self._assertRoute(config, 'name', 'path') |