Bowe Strickland
2018-10-27 323fa95deea50f49c119728fc2eeacb9e0c51241
commit | author | age
95b14b 1 import unittest
CM 2
0c29cf 3
95b14b 4 class WSGIAppTests(unittest.TestCase):
de4969 5     def _callFUT(self, app):
b60bdb 6         from pyramid.wsgi import wsgiapp
0c29cf 7
de4969 8         return wsgiapp(app)
CM 9
d292b9 10     def test_wsgiapp_none(self):
BJR 11         self.assertRaises(ValueError, self._callFUT, None)
12
de4969 13     def test_decorator(self):
95b14b 14         context = DummyContext()
5a7f9a 15         request = DummyRequest()
de4969 16         decorator = self._callFUT(dummyapp)
CM 17         response = decorator(context, request)
5a7f9a 18         self.assertEqual(response, dummyapp)
95b14b 19
dc474e 20     def test_decorator_object_instance(self):
MK 21         context = DummyContext()
22         request = DummyRequest()
23         app = DummyApp()
24         decorator = self._callFUT(app)
25         response = decorator(context, request)
26         self.assertEqual(response, app)
27
0c29cf 28
d1209e 29 class WSGIApp2Tests(unittest.TestCase):
CM 30     def _callFUT(self, app):
b60bdb 31         from pyramid.wsgi import wsgiapp2
0c29cf 32
d1209e 33         return wsgiapp2(app)
CM 34
d292b9 35     def test_wsgiapp2_none(self):
BJR 36         self.assertRaises(ValueError, self._callFUT, None)
37
6ecdbc 38     def test_decorator_with_subpath_and_view_name(self):
d1209e 39         context = DummyContext()
CM 40         request = DummyRequest()
b64268 41         request.subpath = ('subpath',)
0c29cf 42         request.environ = {
MM 43             'SCRIPT_NAME': '/foo',
44             'PATH_INFO': '/b/view_name/subpath',
45         }
d1209e 46         decorator = self._callFUT(dummyapp)
CM 47         response = decorator(context, request)
48         self.assertEqual(response, dummyapp)
49         self.assertEqual(request.environ['PATH_INFO'], '/subpath')
50         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b/view_name')
d92958 51
6ecdbc 52     def test_decorator_with_subpath_no_view_name(self):
d1209e 53         context = DummyContext()
CM 54         request = DummyRequest()
b64268 55         request.subpath = ('subpath',)
0c29cf 56         request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/b/subpath'}
d1209e 57         decorator = self._callFUT(dummyapp)
CM 58         response = decorator(context, request)
59         self.assertEqual(response, dummyapp)
60         self.assertEqual(request.environ['PATH_INFO'], '/subpath')
61         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b')
62
6ecdbc 63     def test_decorator_no_subpath_with_view_name(self):
d1209e 64         context = DummyContext()
CM 65         request = DummyRequest()
b64268 66         request.subpath = ()
0c29cf 67         request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/b/view_name'}
d1209e 68         decorator = self._callFUT(dummyapp)
CM 69         response = decorator(context, request)
70         self.assertEqual(response, dummyapp)
71         self.assertEqual(request.environ['PATH_INFO'], '/')
72         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/b/view_name')
73
74     def test_decorator_traversed_empty_with_view_name(self):
75         context = DummyContext()
76         request = DummyRequest()
b64268 77         request.subpath = ()
0c29cf 78         request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/view_name'}
d1209e 79         decorator = self._callFUT(dummyapp)
CM 80         response = decorator(context, request)
81         self.assertEqual(response, dummyapp)
82         self.assertEqual(request.environ['PATH_INFO'], '/')
83         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo/view_name')
84
85     def test_decorator_traversed_empty_no_view_name(self):
86         context = DummyContext()
87         request = DummyRequest()
b64268 88         request.subpath = ()
0c29cf 89         request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/'}
d1209e 90         decorator = self._callFUT(dummyapp)
CM 91         response = decorator(context, request)
92         self.assertEqual(response, dummyapp)
93         self.assertEqual(request.environ['PATH_INFO'], '/')
94         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo')
95
96     def test_decorator_traversed_empty_no_view_name_no_script_name(self):
97         context = DummyContext()
98         request = DummyRequest()
b64268 99         request.subpath = ()
0c29cf 100         request.environ = {'SCRIPT_NAME': '', 'PATH_INFO': '/'}
d1209e 101         decorator = self._callFUT(dummyapp)
CM 102         response = decorator(context, request)
103         self.assertEqual(response, dummyapp)
104         self.assertEqual(request.environ['PATH_INFO'], '/')
105         self.assertEqual(request.environ['SCRIPT_NAME'], '')
106
dc474e 107     def test_decorator_on_callable_object_instance(self):
MK 108         context = DummyContext()
109         request = DummyRequest()
110         request.subpath = ()
0c29cf 111         request.environ = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/'}
dc474e 112         app = DummyApp()
MK 113         decorator = self._callFUT(app)
114         response = decorator(context, request)
115         self.assertEqual(response, app)
116         self.assertEqual(request.environ['PATH_INFO'], '/')
117         self.assertEqual(request.environ['SCRIPT_NAME'], '/foo')
118
0c29cf 119
5a7f9a 120 def dummyapp(environ, start_response):
CM 121     """ """
0c29cf 122
b0a241 123
dc474e 124 class DummyApp(object):
MK 125     def __call__(self, environ, start_response):
126         """ """
127
0c29cf 128
95b14b 129 class DummyContext:
CM 130     pass
0c29cf 131
95b14b 132
CM 133 class DummyRequest:
5a7f9a 134     def get_response(self, application):
CM 135         return application
760717 136
CM 137     def copy(self):
138         self.copied = True
139         return self