summaryrefslogtreecommitdiff
path: root/tests/test_wsgi.py
diff options
context:
space:
mode:
authorMichael Merickel <github@m.merickel.org>2018-10-15 09:03:53 -0500
committerGitHub <noreply@github.com>2018-10-15 09:03:53 -0500
commit81576ee51564c49d5ff3c1c07f214f22a8438231 (patch)
tree5b3fe0b39a0fc33d545733d821738845909f638c /tests/test_wsgi.py
parent433efe06191a7007ca8c5bf8fafee5c7c1439ebb (diff)
parent17e3abf320f6d9cd90f7e5a0352280c2fef584af (diff)
downloadpyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.tar.gz
pyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.tar.bz2
pyramid-81576ee51564c49d5ff3c1c07f214f22a8438231.zip
Merge pull request #3387 from mmerickel/src-folder-refactor
refactor pyramid tests into a tests folder and package into a src folder
Diffstat (limited to 'tests/test_wsgi.py')
-rw-r--r--tests/test_wsgi.py130
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/test_wsgi.py b/tests/test_wsgi.py
new file mode 100644
index 000000000..4ddbc9201
--- /dev/null
+++ b/tests/test_wsgi.py
@@ -0,0 +1,130 @@
+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
+