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
|