Support passing callable object instances WSGI applications to the
`pyramid.wsgi.wsgiapp' and `pyramid.wsgi.wsgiapp2' decorators.
This allows us to configure pyramid like so:
config.add_view(pyramid.wsgi.wsgiapp2(MyWSGIApp(settings)))
| | |
| | | response = decorator(context, request) |
| | | self.assertEqual(response, dummyapp) |
| | | |
| | | def test_decorator_object_instance(self): |
| | | context = DummyContext() |
| | | request = DummyRequest() |
| | | app = DummyApp() |
| | | decorator = self._callFUT(app) |
| | | response = decorator(context, request) |
| | | self.assertEqual(response, app) |
| | | |
| | | class WSGIApp2Tests(unittest.TestCase): |
| | | def _callFUT(self, app): |
| | | from pyramid.wsgi import wsgiapp2 |
| | |
| | | self.assertEqual(request.environ['PATH_INFO'], '/') |
| | | self.assertEqual(request.environ['SCRIPT_NAME'], '') |
| | | |
| | | def test_decorator_on_callable_object_instance(self): |
| | | context = DummyContext() |
| | | request = DummyRequest() |
| | | request.subpath = () |
| | | request.environ = {'SCRIPT_NAME':'/foo', 'PATH_INFO':'/'} |
| | | app = DummyApp() |
| | | decorator = self._callFUT(app) |
| | | response = decorator(context, request) |
| | | self.assertEqual(response, app) |
| | | self.assertEqual(request.environ['PATH_INFO'], '/') |
| | | self.assertEqual(request.environ['SCRIPT_NAME'], '/foo') |
| | | |
| | | def dummyapp(environ, start_response): |
| | | """ """ |
| | | |
| | | class DummyApp(object): |
| | | def __call__(self, environ, start_response): |
| | | """ """ |
| | | |
| | | class DummyContext: |
| | | pass |
| | | |
| | |
| | | """ |
| | | def decorator(context, request): |
| | | return request.get_response(wrapped) |
| | | return wraps(wrapped)(decorator) |
| | | |
| | | # Support case where wrapped is a callable object instance |
| | | if getattr(wrapped, '__name__', None): |
| | | return wraps(wrapped)(decorator) |
| | | return wraps(wrapped, ('__module__', '__doc__'))(decorator) |
| | | |
| | | def wsgiapp2(wrapped): |
| | | """ Decorator to turn a WSGI application into a :app:`Pyramid` |
| | |
| | | |
| | | def decorator(context, request): |
| | | return call_app_with_subpath_as_path_info(request, wrapped) |
| | | return wraps(wrapped)(decorator) |
| | | |
| | | # Support case where wrapped is a callable object instance |
| | | if getattr(wrapped, '__name__', None): |
| | | return wraps(wrapped)(decorator) |
| | | return wraps(wrapped, ('__module__', '__doc__'))(decorator) |