changeset 45942 | 89a2afe31e82 |
parent 45004 | 2632c1ed8f34 |
child 48875 | 6000f5b25c9b |
45941:346af7687c6f | 45942:89a2afe31e82 |
---|---|
47 self.assertEqual(r.querystring, b'') |
47 self.assertEqual(r.querystring, b'') |
48 self.assertEqual(len(r.qsparams), 0) |
48 self.assertEqual(len(r.qsparams), 0) |
49 self.assertEqual(len(r.headers), 0) |
49 self.assertEqual(len(r.headers), 0) |
50 |
50 |
51 def testcustomport(self): |
51 def testcustomport(self): |
52 r = parse(DEFAULT_ENV, extra={'SERVER_PORT': '8000',}) |
52 r = parse( |
53 DEFAULT_ENV, |
|
54 extra={ |
|
55 'SERVER_PORT': '8000', |
|
56 }, |
|
57 ) |
|
53 |
58 |
54 self.assertEqual(r.url, b'http://testserver:8000') |
59 self.assertEqual(r.url, b'http://testserver:8000') |
55 self.assertEqual(r.baseurl, b'http://testserver:8000') |
60 self.assertEqual(r.baseurl, b'http://testserver:8000') |
56 self.assertEqual(r.advertisedurl, b'http://testserver:8000') |
61 self.assertEqual(r.advertisedurl, b'http://testserver:8000') |
57 self.assertEqual(r.advertisedbaseurl, b'http://testserver:8000') |
62 self.assertEqual(r.advertisedbaseurl, b'http://testserver:8000') |
58 |
63 |
59 r = parse( |
64 r = parse( |
60 DEFAULT_ENV, |
65 DEFAULT_ENV, |
61 extra={'SERVER_PORT': '4000', 'wsgi.url_scheme': 'https',}, |
66 extra={ |
67 'SERVER_PORT': '4000', |
|
68 'wsgi.url_scheme': 'https', |
|
69 }, |
|
62 ) |
70 ) |
63 |
71 |
64 self.assertEqual(r.url, b'https://testserver:4000') |
72 self.assertEqual(r.url, b'https://testserver:4000') |
65 self.assertEqual(r.baseurl, b'https://testserver:4000') |
73 self.assertEqual(r.baseurl, b'https://testserver:4000') |
66 self.assertEqual(r.advertisedurl, b'https://testserver:4000') |
74 self.assertEqual(r.advertisedurl, b'https://testserver:4000') |
67 self.assertEqual(r.advertisedbaseurl, b'https://testserver:4000') |
75 self.assertEqual(r.advertisedbaseurl, b'https://testserver:4000') |
68 |
76 |
69 def testhttphost(self): |
77 def testhttphost(self): |
70 r = parse(DEFAULT_ENV, extra={'HTTP_HOST': 'altserver',}) |
78 r = parse( |
79 DEFAULT_ENV, |
|
80 extra={ |
|
81 'HTTP_HOST': 'altserver', |
|
82 }, |
|
83 ) |
|
71 |
84 |
72 self.assertEqual(r.url, b'http://altserver') |
85 self.assertEqual(r.url, b'http://altserver') |
73 self.assertEqual(r.baseurl, b'http://altserver') |
86 self.assertEqual(r.baseurl, b'http://altserver') |
74 self.assertEqual(r.advertisedurl, b'http://testserver') |
87 self.assertEqual(r.advertisedurl, b'http://testserver') |
75 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
88 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
76 |
89 |
77 def testscriptname(self): |
90 def testscriptname(self): |
78 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '',}) |
91 r = parse( |
92 DEFAULT_ENV, |
|
93 extra={ |
|
94 'SCRIPT_NAME': '', |
|
95 }, |
|
96 ) |
|
79 |
97 |
80 self.assertEqual(r.url, b'http://testserver') |
98 self.assertEqual(r.url, b'http://testserver') |
81 self.assertEqual(r.baseurl, b'http://testserver') |
99 self.assertEqual(r.baseurl, b'http://testserver') |
82 self.assertEqual(r.advertisedurl, b'http://testserver') |
100 self.assertEqual(r.advertisedurl, b'http://testserver') |
83 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
101 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
84 self.assertEqual(r.apppath, b'') |
102 self.assertEqual(r.apppath, b'') |
85 self.assertEqual(r.dispatchparts, []) |
103 self.assertEqual(r.dispatchparts, []) |
86 self.assertIsNone(r.dispatchpath) |
104 self.assertIsNone(r.dispatchpath) |
87 |
105 |
88 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '/script',}) |
106 r = parse( |
107 DEFAULT_ENV, |
|
108 extra={ |
|
109 'SCRIPT_NAME': '/script', |
|
110 }, |
|
111 ) |
|
89 |
112 |
90 self.assertEqual(r.url, b'http://testserver/script') |
113 self.assertEqual(r.url, b'http://testserver/script') |
91 self.assertEqual(r.baseurl, b'http://testserver') |
114 self.assertEqual(r.baseurl, b'http://testserver') |
92 self.assertEqual(r.advertisedurl, b'http://testserver/script') |
115 self.assertEqual(r.advertisedurl, b'http://testserver/script') |
93 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
116 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
94 self.assertEqual(r.apppath, b'/script') |
117 self.assertEqual(r.apppath, b'/script') |
95 self.assertEqual(r.dispatchparts, []) |
118 self.assertEqual(r.dispatchparts, []) |
96 self.assertIsNone(r.dispatchpath) |
119 self.assertIsNone(r.dispatchpath) |
97 |
120 |
98 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '/multiple words',}) |
121 r = parse( |
122 DEFAULT_ENV, |
|
123 extra={ |
|
124 'SCRIPT_NAME': '/multiple words', |
|
125 }, |
|
126 ) |
|
99 |
127 |
100 self.assertEqual(r.url, b'http://testserver/multiple%20words') |
128 self.assertEqual(r.url, b'http://testserver/multiple%20words') |
101 self.assertEqual(r.baseurl, b'http://testserver') |
129 self.assertEqual(r.baseurl, b'http://testserver') |
102 self.assertEqual(r.advertisedurl, b'http://testserver/multiple%20words') |
130 self.assertEqual(r.advertisedurl, b'http://testserver/multiple%20words') |
103 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
131 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
104 self.assertEqual(r.apppath, b'/multiple words') |
132 self.assertEqual(r.apppath, b'/multiple words') |
105 self.assertEqual(r.dispatchparts, []) |
133 self.assertEqual(r.dispatchparts, []) |
106 self.assertIsNone(r.dispatchpath) |
134 self.assertIsNone(r.dispatchpath) |
107 |
135 |
108 def testpathinfo(self): |
136 def testpathinfo(self): |
109 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '',}) |
137 r = parse( |
138 DEFAULT_ENV, |
|
139 extra={ |
|
140 'PATH_INFO': '', |
|
141 }, |
|
142 ) |
|
110 |
143 |
111 self.assertEqual(r.url, b'http://testserver') |
144 self.assertEqual(r.url, b'http://testserver') |
112 self.assertEqual(r.baseurl, b'http://testserver') |
145 self.assertEqual(r.baseurl, b'http://testserver') |
113 self.assertEqual(r.advertisedurl, b'http://testserver') |
146 self.assertEqual(r.advertisedurl, b'http://testserver') |
114 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
147 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
115 self.assertEqual(r.apppath, b'') |
148 self.assertEqual(r.apppath, b'') |
116 self.assertEqual(r.dispatchparts, []) |
149 self.assertEqual(r.dispatchparts, []) |
117 self.assertEqual(r.dispatchpath, b'') |
150 self.assertEqual(r.dispatchpath, b'') |
118 |
151 |
119 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '/pathinfo',}) |
152 r = parse( |
153 DEFAULT_ENV, |
|
154 extra={ |
|
155 'PATH_INFO': '/pathinfo', |
|
156 }, |
|
157 ) |
|
120 |
158 |
121 self.assertEqual(r.url, b'http://testserver/pathinfo') |
159 self.assertEqual(r.url, b'http://testserver/pathinfo') |
122 self.assertEqual(r.baseurl, b'http://testserver') |
160 self.assertEqual(r.baseurl, b'http://testserver') |
123 self.assertEqual(r.advertisedurl, b'http://testserver/pathinfo') |
161 self.assertEqual(r.advertisedurl, b'http://testserver/pathinfo') |
124 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
162 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
125 self.assertEqual(r.apppath, b'') |
163 self.assertEqual(r.apppath, b'') |
126 self.assertEqual(r.dispatchparts, [b'pathinfo']) |
164 self.assertEqual(r.dispatchparts, [b'pathinfo']) |
127 self.assertEqual(r.dispatchpath, b'pathinfo') |
165 self.assertEqual(r.dispatchpath, b'pathinfo') |
128 |
166 |
129 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '/one/two/',}) |
167 r = parse( |
168 DEFAULT_ENV, |
|
169 extra={ |
|
170 'PATH_INFO': '/one/two/', |
|
171 }, |
|
172 ) |
|
130 |
173 |
131 self.assertEqual(r.url, b'http://testserver/one/two/') |
174 self.assertEqual(r.url, b'http://testserver/one/two/') |
132 self.assertEqual(r.baseurl, b'http://testserver') |
175 self.assertEqual(r.baseurl, b'http://testserver') |
133 self.assertEqual(r.advertisedurl, b'http://testserver/one/two/') |
176 self.assertEqual(r.advertisedurl, b'http://testserver/one/two/') |
134 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
177 self.assertEqual(r.advertisedbaseurl, b'http://testserver') |
137 self.assertEqual(r.dispatchpath, b'one/two') |
180 self.assertEqual(r.dispatchpath, b'one/two') |
138 |
181 |
139 def testscriptandpathinfo(self): |
182 def testscriptandpathinfo(self): |
140 r = parse( |
183 r = parse( |
141 DEFAULT_ENV, |
184 DEFAULT_ENV, |
142 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/pathinfo',}, |
185 extra={ |
186 'SCRIPT_NAME': '/script', |
|
187 'PATH_INFO': '/pathinfo', |
|
188 }, |
|
143 ) |
189 ) |
144 |
190 |
145 self.assertEqual(r.url, b'http://testserver/script/pathinfo') |
191 self.assertEqual(r.url, b'http://testserver/script/pathinfo') |
146 self.assertEqual(r.baseurl, b'http://testserver') |
192 self.assertEqual(r.baseurl, b'http://testserver') |
147 self.assertEqual(r.advertisedurl, b'http://testserver/script/pathinfo') |
193 self.assertEqual(r.advertisedurl, b'http://testserver/script/pathinfo') |
206 error.ProgrammingError, 'PATH_INFO does not begin with repo ' 'name' |
252 error.ProgrammingError, 'PATH_INFO does not begin with repo ' 'name' |
207 ): |
253 ): |
208 parse( |
254 parse( |
209 DEFAULT_ENV, |
255 DEFAULT_ENV, |
210 reponame=b'repo', |
256 reponame=b'repo', |
211 extra={'PATH_INFO': '/pathinfo',}, |
257 extra={ |
258 'PATH_INFO': '/pathinfo', |
|
259 }, |
|
212 ) |
260 ) |
213 |
261 |
214 with self.assertRaisesRegex( |
262 with self.assertRaisesRegex( |
215 error.ProgrammingError, 'reponame prefix of PATH_INFO' |
263 error.ProgrammingError, 'reponame prefix of PATH_INFO' |
216 ): |
264 ): |
217 parse( |
265 parse( |
218 DEFAULT_ENV, |
266 DEFAULT_ENV, |
219 reponame=b'repo', |
267 reponame=b'repo', |
220 extra={'PATH_INFO': '/repoextra/path',}, |
268 extra={ |
269 'PATH_INFO': '/repoextra/path', |
|
270 }, |
|
221 ) |
271 ) |
222 |
272 |
223 r = parse( |
273 r = parse( |
224 DEFAULT_ENV, |
274 DEFAULT_ENV, |
225 reponame=b'repo', |
275 reponame=b'repo', |
226 extra={'PATH_INFO': '/repo/path1/path2',}, |
276 extra={ |
277 'PATH_INFO': '/repo/path1/path2', |
|
278 }, |
|
227 ) |
279 ) |
228 |
280 |
229 self.assertEqual(r.url, b'http://testserver/repo/path1/path2') |
281 self.assertEqual(r.url, b'http://testserver/repo/path1/path2') |
230 self.assertEqual(r.baseurl, b'http://testserver') |
282 self.assertEqual(r.baseurl, b'http://testserver') |
231 self.assertEqual(r.advertisedurl, b'http://testserver/repo/path1/path2') |
283 self.assertEqual(r.advertisedurl, b'http://testserver/repo/path1/path2') |
236 self.assertEqual(r.reponame, b'repo') |
288 self.assertEqual(r.reponame, b'repo') |
237 |
289 |
238 r = parse( |
290 r = parse( |
239 DEFAULT_ENV, |
291 DEFAULT_ENV, |
240 reponame=b'prefix/repo', |
292 reponame=b'prefix/repo', |
241 extra={'PATH_INFO': '/prefix/repo/path1/path2',}, |
293 extra={ |
294 'PATH_INFO': '/prefix/repo/path1/path2', |
|
295 }, |
|
242 ) |
296 ) |
243 |
297 |
244 self.assertEqual(r.url, b'http://testserver/prefix/repo/path1/path2') |
298 self.assertEqual(r.url, b'http://testserver/prefix/repo/path1/path2') |
245 self.assertEqual(r.baseurl, b'http://testserver') |
299 self.assertEqual(r.baseurl, b'http://testserver') |
246 self.assertEqual( |
300 self.assertEqual( |
305 |
359 |
306 # With only PATH_INFO defined. |
360 # With only PATH_INFO defined. |
307 r = parse( |
361 r = parse( |
308 DEFAULT_ENV, |
362 DEFAULT_ENV, |
309 altbaseurl=b'http://altserver', |
363 altbaseurl=b'http://altserver', |
310 extra={'PATH_INFO': '/path1/path2',}, |
364 extra={ |
365 'PATH_INFO': '/path1/path2', |
|
366 }, |
|
311 ) |
367 ) |
312 self.assertEqual(r.url, b'http://testserver/path1/path2') |
368 self.assertEqual(r.url, b'http://testserver/path1/path2') |
313 self.assertEqual(r.baseurl, b'http://testserver') |
369 self.assertEqual(r.baseurl, b'http://testserver') |
314 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2') |
370 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2') |
315 self.assertEqual(r.advertisedbaseurl, b'http://altserver') |
371 self.assertEqual(r.advertisedbaseurl, b'http://altserver') |
345 |
401 |
346 # PATH_INFO + path on alt URL. |
402 # PATH_INFO + path on alt URL. |
347 r = parse( |
403 r = parse( |
348 DEFAULT_ENV, |
404 DEFAULT_ENV, |
349 altbaseurl=b'http://altserver/altpath', |
405 altbaseurl=b'http://altserver/altpath', |
350 extra={'PATH_INFO': '/path1/path2',}, |
406 extra={ |
407 'PATH_INFO': '/path1/path2', |
|
408 }, |
|
351 ) |
409 ) |
352 self.assertEqual(r.url, b'http://testserver/path1/path2') |
410 self.assertEqual(r.url, b'http://testserver/path1/path2') |
353 self.assertEqual(r.baseurl, b'http://testserver') |
411 self.assertEqual(r.baseurl, b'http://testserver') |
354 self.assertEqual( |
412 self.assertEqual( |
355 r.advertisedurl, b'http://altserver/altpath/path1/path2' |
413 r.advertisedurl, b'http://altserver/altpath/path1/path2' |
363 |
421 |
364 # PATH_INFO + path on alt URL with trailing slash. |
422 # PATH_INFO + path on alt URL with trailing slash. |
365 r = parse( |
423 r = parse( |
366 DEFAULT_ENV, |
424 DEFAULT_ENV, |
367 altbaseurl=b'http://altserver/altpath/', |
425 altbaseurl=b'http://altserver/altpath/', |
368 extra={'PATH_INFO': '/path1/path2',}, |
426 extra={ |
427 'PATH_INFO': '/path1/path2', |
|
428 }, |
|
369 ) |
429 ) |
370 self.assertEqual(r.url, b'http://testserver/path1/path2') |
430 self.assertEqual(r.url, b'http://testserver/path1/path2') |
371 self.assertEqual(r.baseurl, b'http://testserver') |
431 self.assertEqual(r.baseurl, b'http://testserver') |
372 self.assertEqual( |
432 self.assertEqual( |
373 r.advertisedurl, b'http://altserver/altpath//path1/path2' |
433 r.advertisedurl, b'http://altserver/altpath//path1/path2' |
381 |
441 |
382 # Local SCRIPT_NAME is ignored. |
442 # Local SCRIPT_NAME is ignored. |
383 r = parse( |
443 r = parse( |
384 DEFAULT_ENV, |
444 DEFAULT_ENV, |
385 altbaseurl=b'http://altserver', |
445 altbaseurl=b'http://altserver', |
386 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/path1/path2',}, |
446 extra={ |
447 'SCRIPT_NAME': '/script', |
|
448 'PATH_INFO': '/path1/path2', |
|
449 }, |
|
387 ) |
450 ) |
388 self.assertEqual(r.url, b'http://testserver/script/path1/path2') |
451 self.assertEqual(r.url, b'http://testserver/script/path1/path2') |
389 self.assertEqual(r.baseurl, b'http://testserver') |
452 self.assertEqual(r.baseurl, b'http://testserver') |
390 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2') |
453 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2') |
391 self.assertEqual(r.advertisedbaseurl, b'http://altserver') |
454 self.assertEqual(r.advertisedbaseurl, b'http://altserver') |
397 |
460 |
398 # Use remote's path for script name, app path |
461 # Use remote's path for script name, app path |
399 r = parse( |
462 r = parse( |
400 DEFAULT_ENV, |
463 DEFAULT_ENV, |
401 altbaseurl=b'http://altserver/altroot', |
464 altbaseurl=b'http://altserver/altroot', |
402 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/path1/path2',}, |
465 extra={ |
466 'SCRIPT_NAME': '/script', |
|
467 'PATH_INFO': '/path1/path2', |
|
468 }, |
|
403 ) |
469 ) |
404 self.assertEqual(r.url, b'http://testserver/script/path1/path2') |
470 self.assertEqual(r.url, b'http://testserver/script/path1/path2') |
405 self.assertEqual(r.baseurl, b'http://testserver') |
471 self.assertEqual(r.baseurl, b'http://testserver') |
406 self.assertEqual( |
472 self.assertEqual( |
407 r.advertisedurl, b'http://altserver/altroot/path1/path2' |
473 r.advertisedurl, b'http://altserver/altroot/path1/path2' |
416 # reponame is factored in properly. |
482 # reponame is factored in properly. |
417 r = parse( |
483 r = parse( |
418 DEFAULT_ENV, |
484 DEFAULT_ENV, |
419 reponame=b'repo', |
485 reponame=b'repo', |
420 altbaseurl=b'http://altserver/altroot', |
486 altbaseurl=b'http://altserver/altroot', |
421 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/repo/path1/path2',}, |
487 extra={ |
488 'SCRIPT_NAME': '/script', |
|
489 'PATH_INFO': '/repo/path1/path2', |
|
490 }, |
|
422 ) |
491 ) |
423 |
492 |
424 self.assertEqual(r.url, b'http://testserver/script/repo/path1/path2') |
493 self.assertEqual(r.url, b'http://testserver/script/repo/path1/path2') |
425 self.assertEqual(r.baseurl, b'http://testserver') |
494 self.assertEqual(r.baseurl, b'http://testserver') |
426 self.assertEqual( |
495 self.assertEqual( |