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 |