diff options
Diffstat (limited to 'tests/test_wsgi.py')
| -rw-r--r-- | tests/test_wsgi.py | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/tests/test_wsgi.py b/tests/test_wsgi.py new file mode 100644 index 000000000..a5a955621 --- /dev/null +++ b/tests/test_wsgi.py @@ -0,0 +1,139 @@ +import unittest + + +class WSGIAppTests(unittest.TestCase): + def _callFUT(self, app): + from pyramid.wsgi import wsgiapp + + return wsgiapp(app) + + def test_wsgiapp_none(self): + self.assertRaises(ValueError, self._callFUT, None) + + def test_decorator(self): + context = DummyContext() + request = DummyRequest() + decorator = self._callFUT(dummyapp) + 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 + + return wsgiapp2(app) + + def test_wsgiapp2_none(self): + self.assertRaises(ValueError, self._callFUT, None) + + def test_decorator_with_subpath_and_view_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = ('subpath',) + request.environ = { + 'SCRIPT_NAME': '/foo', + 'PATH_INFO': '/b/view_name/subpath', + } + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + self.assertEqual(request.environ['PATH_INFO'], '/subpath') + self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b/view_name') + + def test_decorator_with_subpath_no_view_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = ('subpath',) + request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/b/subpath'} + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + self.assertEqual(request.environ['PATH_INFO'], '/subpath') + self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b') + + def test_decorator_no_subpath_with_view_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = () + request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/b/view_name'} + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + self.assertEqual(request.environ['PATH_INFO'], '/') + self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b/view_name') + + def test_decorator_traversed_empty_with_view_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = () + request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/view_name'} + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + self.assertEqual(request.environ['PATH_INFO'], '/') + self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/view_name') + + def test_decorator_traversed_empty_no_view_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = () + request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/'} + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + self.assertEqual(request.environ['PATH_INFO'], '/') + self.assertEqual(request.environ['SCRIPT_NAME'], '/foo') + + def test_decorator_traversed_empty_no_view_name_no_script_name(self): + context = DummyContext() + request = DummyRequest() + request.subpath = () + request.environ = {'SCRIPT_NAME': '', 'PATH_INFO': '/'} + decorator = self._callFUT(dummyapp) + response = decorator(context, request) + self.assertEqual(response, dummyapp) + 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 + + +class DummyRequest: + def get_response(self, application): + return application + + def copy(self): + self.copied = True + return self |
