commit | author | age
|
82fefc
|
1 |
import unittest |
CM |
2 |
|
0c29cf
|
3 |
|
c515d7
|
4 |
class Test_get_root(unittest.TestCase): |
98ea38
|
5 |
def _callFUT(self, app, request=None): |
a02407
|
6 |
from pyramid.scripting import get_root |
0c29cf
|
7 |
|
98ea38
|
8 |
return get_root(app, request) |
82fefc
|
9 |
|
735987
|
10 |
def _makeRegistry(self): |
CM |
11 |
return DummyRegistry([DummyFactory]) |
|
12 |
|
e49227
|
13 |
def setUp(self): |
MM |
14 |
from pyramid.threadlocal import manager |
0c29cf
|
15 |
|
e49227
|
16 |
self.manager = manager |
MM |
17 |
self.default = manager.get() |
|
18 |
|
98ea38
|
19 |
def test_it_norequest(self): |
735987
|
20 |
registry = self._makeRegistry() |
CM |
21 |
app = DummyApp(registry=registry) |
82fefc
|
22 |
root, closer = self._callFUT(app) |
e49227
|
23 |
self.assertEqual(dummy_root, root) |
MM |
24 |
pushed = self.manager.get() |
735987
|
25 |
self.assertEqual(pushed['registry'], registry) |
e49227
|
26 |
self.assertEqual(pushed['request'].registry, registry) |
MM |
27 |
self.assertEqual(pushed['request'].environ['path'], '/') |
82fefc
|
28 |
closer() |
e49227
|
29 |
self.assertEqual(self.default, self.manager.get()) |
82fefc
|
30 |
|
98ea38
|
31 |
def test_it_withrequest(self): |
735987
|
32 |
registry = self._makeRegistry() |
CM |
33 |
app = DummyApp(registry=registry) |
98ea38
|
34 |
request = DummyRequest({}) |
CM |
35 |
root, closer = self._callFUT(app, request) |
e49227
|
36 |
self.assertEqual(dummy_root, root) |
MM |
37 |
pushed = self.manager.get() |
735987
|
38 |
self.assertEqual(pushed['registry'], registry) |
98ea38
|
39 |
self.assertEqual(pushed['request'], request) |
e49227
|
40 |
self.assertEqual(pushed['request'].registry, registry) |
82fefc
|
41 |
closer() |
e49227
|
42 |
self.assertEqual(self.default, self.manager.get()) |
a02407
|
43 |
|
0c29cf
|
44 |
|
c515d7
|
45 |
class Test_prepare(unittest.TestCase): |
359906
|
46 |
def _callFUT(self, request=None, registry=None): |
c515d7
|
47 |
from pyramid.scripting import prepare |
0c29cf
|
48 |
|
c515d7
|
49 |
return prepare(request, registry) |
359906
|
50 |
|
735987
|
51 |
def _makeRegistry(self, L=None): |
CM |
52 |
if L is None: |
|
53 |
L = [None, DummyFactory] |
|
54 |
return DummyRegistry(L) |
359906
|
55 |
|
MM |
56 |
def setUp(self): |
|
57 |
from pyramid.threadlocal import manager |
0c29cf
|
58 |
|
359906
|
59 |
self.manager = manager |
MM |
60 |
self.default = manager.get() |
|
61 |
|
8ac4c9
|
62 |
def test_it_no_valid_apps(self): |
MM |
63 |
from pyramid.exceptions import ConfigurationError |
0c29cf
|
64 |
|
8ac4c9
|
65 |
self.assertRaises(ConfigurationError, self._callFUT) |
MM |
66 |
|
359906
|
67 |
def test_it_norequest(self): |
735987
|
68 |
registry = self._makeRegistry([DummyFactory, None, DummyFactory]) |
c515d7
|
69 |
info = self._callFUT(registry=registry) |
5d0859
|
70 |
root, closer, request = info['root'], info['closer'], info['request'] |
359906
|
71 |
pushed = self.manager.get() |
MM |
72 |
self.assertEqual(pushed['registry'], registry) |
|
73 |
self.assertEqual(pushed['request'].registry, registry) |
|
74 |
self.assertEqual(root.a, (pushed['request'],)) |
|
75 |
closer() |
c515d7
|
76 |
self.assertEqual(self.default, self.manager.get()) |
5d0859
|
77 |
self.assertEqual(request.context, root) |
359906
|
78 |
|
d6fb00
|
79 |
def test_it_withrequest_hasregistry(self): |
359906
|
80 |
request = DummyRequest({}) |
MM |
81 |
registry = request.registry = self._makeRegistry() |
c515d7
|
82 |
info = self._callFUT(request=request) |
5d0859
|
83 |
root, closer, request = info['root'], info['closer'], info['request'] |
359906
|
84 |
pushed = self.manager.get() |
MM |
85 |
self.assertEqual(pushed['request'], request) |
|
86 |
self.assertEqual(pushed['registry'], registry) |
|
87 |
self.assertEqual(pushed['request'].registry, registry) |
|
88 |
self.assertEqual(root.a, (request,)) |
|
89 |
closer() |
c515d7
|
90 |
self.assertEqual(self.default, self.manager.get()) |
5d0859
|
91 |
self.assertEqual(request.context, root) |
d6fb00
|
92 |
self.assertEqual(request.registry, registry) |
CM |
93 |
|
|
94 |
def test_it_withrequest_noregistry(self): |
|
95 |
request = DummyRequest({}) |
|
96 |
registry = self._makeRegistry() |
|
97 |
info = self._callFUT(request=request, registry=registry) |
|
98 |
root, closer, request = info['root'], info['closer'], info['request'] |
|
99 |
closer() |
|
100 |
self.assertEqual(request.context, root) |
|
101 |
# should be set by prepare |
|
102 |
self.assertEqual(request.registry, registry) |
359906
|
103 |
|
MM |
104 |
def test_it_with_request_and_registry(self): |
|
105 |
request = DummyRequest({}) |
|
106 |
registry = request.registry = self._makeRegistry() |
c515d7
|
107 |
info = self._callFUT(request=request, registry=registry) |
5d0859
|
108 |
root, closer, root = info['root'], info['closer'], info['root'] |
359906
|
109 |
pushed = self.manager.get() |
MM |
110 |
self.assertEqual(pushed['request'], request) |
|
111 |
self.assertEqual(pushed['registry'], registry) |
|
112 |
self.assertEqual(pushed['request'].registry, registry) |
|
113 |
self.assertEqual(root.a, (request,)) |
|
114 |
closer() |
c515d7
|
115 |
self.assertEqual(self.default, self.manager.get()) |
5d0859
|
116 |
self.assertEqual(request.context, root) |
CM |
117 |
|
|
118 |
def test_it_with_request_context_already_set(self): |
|
119 |
request = DummyRequest({}) |
|
120 |
context = Dummy() |
|
121 |
request.context = context |
|
122 |
registry = request.registry = self._makeRegistry() |
|
123 |
info = self._callFUT(request=request, registry=registry) |
10ddb6
|
124 |
closer = info['closer'] |
5d0859
|
125 |
closer() |
CM |
126 |
self.assertEqual(request.context, context) |
359906
|
127 |
|
735987
|
128 |
def test_it_with_extensions(self): |
04cc91
|
129 |
from pyramid.util import InstancePropertyHelper |
0c29cf
|
130 |
|
04cc91
|
131 |
exts = DummyExtensions() |
MM |
132 |
ext_method = lambda r: 'bar' |
|
133 |
name, fn = InstancePropertyHelper.make_property(ext_method, 'foo') |
|
134 |
exts.descriptors[name] = fn |
735987
|
135 |
request = DummyRequest({}) |
CM |
136 |
registry = request.registry = self._makeRegistry([exts, DummyFactory]) |
|
137 |
info = self._callFUT(request=request, registry=registry) |
04cc91
|
138 |
self.assertEqual(request.foo, 'bar') |
10ddb6
|
139 |
closer = info['closer'] |
735987
|
140 |
closer() |
CM |
141 |
|
b36dd8
|
142 |
def test_it_is_a_context_manager(self): |
MM |
143 |
request = DummyRequest({}) |
|
144 |
registry = request.registry = self._makeRegistry() |
|
145 |
closer_called = [False] |
|
146 |
with self._callFUT(request=request) as info: |
|
147 |
root, request = info['root'], info['request'] |
|
148 |
pushed = self.manager.get() |
|
149 |
self.assertEqual(pushed['request'], request) |
|
150 |
self.assertEqual(pushed['registry'], registry) |
|
151 |
self.assertEqual(pushed['request'].registry, registry) |
|
152 |
self.assertEqual(root.a, (request,)) |
|
153 |
orig_closer = info['closer'] |
0c29cf
|
154 |
|
b36dd8
|
155 |
def closer(): |
MM |
156 |
orig_closer() |
|
157 |
closer_called[0] = True |
0c29cf
|
158 |
|
b36dd8
|
159 |
info['closer'] = closer |
MM |
160 |
self.assertTrue(closer_called[0]) |
|
161 |
self.assertEqual(self.default, self.manager.get()) |
|
162 |
self.assertEqual(request.context, root) |
|
163 |
self.assertEqual(request.registry, registry) |
|
164 |
|
0c29cf
|
165 |
|
8ac4c9
|
166 |
class Test__make_request(unittest.TestCase): |
a02407
|
167 |
def _callFUT(self, path='/', registry=None): |
8ac4c9
|
168 |
from pyramid.scripting import _make_request |
0c29cf
|
169 |
|
8ac4c9
|
170 |
return _make_request(path, registry) |
a02407
|
171 |
|
735987
|
172 |
def _makeRegistry(self): |
CM |
173 |
return DummyRegistry([DummyFactory]) |
|
174 |
|
54376a
|
175 |
def test_it_with_registry(self): |
735987
|
176 |
registry = self._makeRegistry() |
CM |
177 |
request = self._callFUT('/', registry) |
a02407
|
178 |
self.assertEqual(request.environ['path'], '/') |
735987
|
179 |
self.assertEqual(request.registry, registry) |
a02407
|
180 |
|
MM |
181 |
def test_it_with_no_registry(self): |
|
182 |
from pyramid.config import global_registries |
0c29cf
|
183 |
|
735987
|
184 |
registry = self._makeRegistry() |
a02407
|
185 |
global_registries.add(registry) |
89e7ec
|
186 |
try: |
CM |
187 |
request = self._callFUT('/hello') |
|
188 |
self.assertEqual(request.environ['path'], '/hello') |
|
189 |
self.assertEqual(request.registry, registry) |
|
190 |
finally: |
|
191 |
global_registries.empty() |
82fefc
|
192 |
|
0c29cf
|
193 |
|
82fefc
|
194 |
class Dummy: |
CM |
195 |
pass |
|
196 |
|
0c29cf
|
197 |
|
82fefc
|
198 |
dummy_root = Dummy() |
0c29cf
|
199 |
|
a02407
|
200 |
|
MM |
201 |
class DummyFactory(object): |
|
202 |
@classmethod |
|
203 |
def blank(cls, path): |
|
204 |
req = DummyRequest({'path': path}) |
|
205 |
return req |
81a833
|
206 |
|
359906
|
207 |
def __init__(self, *a, **kw): |
MM |
208 |
self.a = a |
|
209 |
self.kw = kw |
|
210 |
|
0c29cf
|
211 |
|
81a833
|
212 |
class DummyRegistry(object): |
735987
|
213 |
def __init__(self, utilities): |
CM |
214 |
self.utilities = utilities |
81a833
|
215 |
|
0c29cf
|
216 |
def queryUtility(self, iface, default=None): # pragma: no cover |
735987
|
217 |
if self.utilities: |
CM |
218 |
return self.utilities.pop(0) |
|
219 |
return default |
0c29cf
|
220 |
|
82fefc
|
221 |
|
CM |
222 |
class DummyApp: |
a02407
|
223 |
def __init__(self, registry=None): |
MM |
224 |
if registry: |
|
225 |
self.registry = registry |
82fefc
|
226 |
|
CM |
227 |
def root_factory(self, environ): |
|
228 |
return dummy_root |
|
229 |
|
0c29cf
|
230 |
|
04cc91
|
231 |
class DummyRequest(object): |
735987
|
232 |
matchdict = None |
CM |
233 |
matched_route = None |
0c29cf
|
234 |
|
98ea38
|
235 |
def __init__(self, environ): |
CM |
236 |
self.environ = environ |
735987
|
237 |
|
0c29cf
|
238 |
|
04cc91
|
239 |
class DummyExtensions: |
MM |
240 |
def __init__(self): |
|
241 |
self.descriptors = {} |
|
242 |
self.methods = {} |