comparison tests/test-wsgirequest.py @ 37939:e0598133ac68

tests: migrate test-wsgirequest.py to Python 3 # skip-blame adding and removing b prefixes Differential Revision: https://phab.mercurial-scm.org/D3495
author Augie Fackler <augie@google.com>
date Fri, 27 Apr 2018 10:40:04 -0400
parents 1859b9a7ddef
children 2372284d9457
comparison
equal deleted inserted replaced
37938:2f00c6e8f6a1 37939:e0598133ac68
204 204
205 def testreponame(self): 205 def testreponame(self):
206 """repository path components get stripped from URL.""" 206 """repository path components get stripped from URL."""
207 207
208 with self.assertRaisesRegex(error.ProgrammingError, 208 with self.assertRaisesRegex(error.ProgrammingError,
209 b'reponame requires PATH_INFO'): 209 'reponame requires PATH_INFO'):
210 parse(DEFAULT_ENV, reponame=b'repo') 210 parse(DEFAULT_ENV, reponame=b'repo')
211 211
212 with self.assertRaisesRegex(error.ProgrammingError, 212 with self.assertRaisesRegex(error.ProgrammingError,
213 b'PATH_INFO does not begin with repo ' 213 'PATH_INFO does not begin with repo '
214 b'name'): 214 'name'):
215 parse(DEFAULT_ENV, reponame=b'repo', extra={ 215 parse(DEFAULT_ENV, reponame=b'repo', extra={
216 r'PATH_INFO': r'/pathinfo', 216 r'PATH_INFO': r'/pathinfo',
217 }) 217 })
218 218
219 with self.assertRaisesRegex(error.ProgrammingError, 219 with self.assertRaisesRegex(error.ProgrammingError,
220 b'reponame prefix of PATH_INFO'): 220 'reponame prefix of PATH_INFO'):
221 parse(DEFAULT_ENV, reponame=b'repo', extra={ 221 parse(DEFAULT_ENV, reponame=b'repo', extra={
222 r'PATH_INFO': r'/repoextra/path', 222 r'PATH_INFO': r'/repoextra/path',
223 }) 223 })
224 224
225 r = parse(DEFAULT_ENV, reponame=b'repo', extra={ 225 r = parse(DEFAULT_ENV, reponame=b'repo', extra={
249 self.assertEqual(r.dispatchpath, b'path1/path2') 249 self.assertEqual(r.dispatchpath, b'path1/path2')
250 self.assertEqual(r.reponame, b'prefix/repo') 250 self.assertEqual(r.reponame, b'prefix/repo')
251 251
252 def testaltbaseurl(self): 252 def testaltbaseurl(self):
253 # Simple hostname remap. 253 # Simple hostname remap.
254 r = parse(DEFAULT_ENV, altbaseurl='http://altserver') 254 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver')
255 255
256 self.assertEqual(r.url, b'http://testserver') 256 self.assertEqual(r.url, b'http://testserver')
257 self.assertEqual(r.baseurl, b'http://testserver') 257 self.assertEqual(r.baseurl, b'http://testserver')
258 self.assertEqual(r.advertisedurl, b'http://altserver') 258 self.assertEqual(r.advertisedurl, b'http://altserver')
259 self.assertEqual(r.advertisedbaseurl, b'http://altserver') 259 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
262 self.assertEqual(r.dispatchparts, []) 262 self.assertEqual(r.dispatchparts, [])
263 self.assertIsNone(r.dispatchpath) 263 self.assertIsNone(r.dispatchpath)
264 self.assertIsNone(r.reponame) 264 self.assertIsNone(r.reponame)
265 265
266 # With a custom port. 266 # With a custom port.
267 r = parse(DEFAULT_ENV, altbaseurl='http://altserver:8000') 267 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver:8000')
268 self.assertEqual(r.url, b'http://testserver') 268 self.assertEqual(r.url, b'http://testserver')
269 self.assertEqual(r.baseurl, b'http://testserver') 269 self.assertEqual(r.baseurl, b'http://testserver')
270 self.assertEqual(r.advertisedurl, b'http://altserver:8000') 270 self.assertEqual(r.advertisedurl, b'http://altserver:8000')
271 self.assertEqual(r.advertisedbaseurl, b'http://altserver:8000') 271 self.assertEqual(r.advertisedbaseurl, b'http://altserver:8000')
272 self.assertEqual(r.urlscheme, b'http') 272 self.assertEqual(r.urlscheme, b'http')
274 self.assertEqual(r.dispatchparts, []) 274 self.assertEqual(r.dispatchparts, [])
275 self.assertIsNone(r.dispatchpath) 275 self.assertIsNone(r.dispatchpath)
276 self.assertIsNone(r.reponame) 276 self.assertIsNone(r.reponame)
277 277
278 # With a changed protocol. 278 # With a changed protocol.
279 r = parse(DEFAULT_ENV, altbaseurl='https://altserver') 279 r = parse(DEFAULT_ENV, altbaseurl=b'https://altserver')
280 self.assertEqual(r.url, b'http://testserver') 280 self.assertEqual(r.url, b'http://testserver')
281 self.assertEqual(r.baseurl, b'http://testserver') 281 self.assertEqual(r.baseurl, b'http://testserver')
282 self.assertEqual(r.advertisedurl, b'https://altserver') 282 self.assertEqual(r.advertisedurl, b'https://altserver')
283 self.assertEqual(r.advertisedbaseurl, b'https://altserver') 283 self.assertEqual(r.advertisedbaseurl, b'https://altserver')
284 # URL scheme is defined as the actual scheme, not advertised. 284 # URL scheme is defined as the actual scheme, not advertised.
287 self.assertEqual(r.dispatchparts, []) 287 self.assertEqual(r.dispatchparts, [])
288 self.assertIsNone(r.dispatchpath) 288 self.assertIsNone(r.dispatchpath)
289 self.assertIsNone(r.reponame) 289 self.assertIsNone(r.reponame)
290 290
291 # Need to specify explicit port number for proper https:// alt URLs. 291 # Need to specify explicit port number for proper https:// alt URLs.
292 r = parse(DEFAULT_ENV, altbaseurl='https://altserver:443') 292 r = parse(DEFAULT_ENV, altbaseurl=b'https://altserver:443')
293 self.assertEqual(r.url, b'http://testserver') 293 self.assertEqual(r.url, b'http://testserver')
294 self.assertEqual(r.baseurl, b'http://testserver') 294 self.assertEqual(r.baseurl, b'http://testserver')
295 self.assertEqual(r.advertisedurl, b'https://altserver') 295 self.assertEqual(r.advertisedurl, b'https://altserver')
296 self.assertEqual(r.advertisedbaseurl, b'https://altserver') 296 self.assertEqual(r.advertisedbaseurl, b'https://altserver')
297 self.assertEqual(r.urlscheme, b'http') 297 self.assertEqual(r.urlscheme, b'http')
299 self.assertEqual(r.dispatchparts, []) 299 self.assertEqual(r.dispatchparts, [])
300 self.assertIsNone(r.dispatchpath) 300 self.assertIsNone(r.dispatchpath)
301 self.assertIsNone(r.reponame) 301 self.assertIsNone(r.reponame)
302 302
303 # With only PATH_INFO defined. 303 # With only PATH_INFO defined.
304 r = parse(DEFAULT_ENV, altbaseurl='http://altserver', extra={ 304 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver', extra={
305 r'PATH_INFO': r'/path1/path2', 305 r'PATH_INFO': r'/path1/path2',
306 }) 306 })
307 self.assertEqual(r.url, b'http://testserver/path1/path2') 307 self.assertEqual(r.url, b'http://testserver/path1/path2')
308 self.assertEqual(r.baseurl, b'http://testserver') 308 self.assertEqual(r.baseurl, b'http://testserver')
309 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2') 309 self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2')
313 self.assertEqual(r.dispatchparts, [b'path1', b'path2']) 313 self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
314 self.assertEqual(r.dispatchpath, b'path1/path2') 314 self.assertEqual(r.dispatchpath, b'path1/path2')
315 self.assertIsNone(r.reponame) 315 self.assertIsNone(r.reponame)
316 316
317 # Path on alt URL. 317 # Path on alt URL.
318 r = parse(DEFAULT_ENV, altbaseurl='http://altserver/altpath') 318 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath')
319 self.assertEqual(r.url, b'http://testserver') 319 self.assertEqual(r.url, b'http://testserver')
320 self.assertEqual(r.baseurl, b'http://testserver') 320 self.assertEqual(r.baseurl, b'http://testserver')
321 self.assertEqual(r.advertisedurl, b'http://altserver/altpath') 321 self.assertEqual(r.advertisedurl, b'http://altserver/altpath')
322 self.assertEqual(r.advertisedbaseurl, b'http://altserver') 322 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
323 self.assertEqual(r.urlscheme, b'http') 323 self.assertEqual(r.urlscheme, b'http')
325 self.assertEqual(r.dispatchparts, []) 325 self.assertEqual(r.dispatchparts, [])
326 self.assertIsNone(r.dispatchpath) 326 self.assertIsNone(r.dispatchpath)
327 self.assertIsNone(r.reponame) 327 self.assertIsNone(r.reponame)
328 328
329 # With a trailing slash. 329 # With a trailing slash.
330 r = parse(DEFAULT_ENV, altbaseurl='http://altserver/altpath/') 330 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath/')
331 self.assertEqual(r.url, b'http://testserver') 331 self.assertEqual(r.url, b'http://testserver')
332 self.assertEqual(r.baseurl, b'http://testserver') 332 self.assertEqual(r.baseurl, b'http://testserver')
333 self.assertEqual(r.advertisedurl, b'http://altserver/altpath/') 333 self.assertEqual(r.advertisedurl, b'http://altserver/altpath/')
334 self.assertEqual(r.advertisedbaseurl, b'http://altserver') 334 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
335 self.assertEqual(r.urlscheme, b'http') 335 self.assertEqual(r.urlscheme, b'http')
337 self.assertEqual(r.dispatchparts, []) 337 self.assertEqual(r.dispatchparts, [])
338 self.assertIsNone(r.dispatchpath) 338 self.assertIsNone(r.dispatchpath)
339 self.assertIsNone(r.reponame) 339 self.assertIsNone(r.reponame)
340 340
341 # PATH_INFO + path on alt URL. 341 # PATH_INFO + path on alt URL.
342 r = parse(DEFAULT_ENV, altbaseurl='http://altserver/altpath', extra={ 342 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath', extra={
343 r'PATH_INFO': r'/path1/path2', 343 r'PATH_INFO': r'/path1/path2',
344 }) 344 })
345 self.assertEqual(r.url, b'http://testserver/path1/path2') 345 self.assertEqual(r.url, b'http://testserver/path1/path2')
346 self.assertEqual(r.baseurl, b'http://testserver') 346 self.assertEqual(r.baseurl, b'http://testserver')
347 self.assertEqual(r.advertisedurl, 347 self.assertEqual(r.advertisedurl,
352 self.assertEqual(r.dispatchparts, [b'path1', b'path2']) 352 self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
353 self.assertEqual(r.dispatchpath, b'path1/path2') 353 self.assertEqual(r.dispatchpath, b'path1/path2')
354 self.assertIsNone(r.reponame) 354 self.assertIsNone(r.reponame)
355 355
356 # PATH_INFO + path on alt URL with trailing slash. 356 # PATH_INFO + path on alt URL with trailing slash.
357 r = parse(DEFAULT_ENV, altbaseurl='http://altserver/altpath/', extra={ 357 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath/', extra={
358 r'PATH_INFO': r'/path1/path2', 358 r'PATH_INFO': r'/path1/path2',
359 }) 359 })
360 self.assertEqual(r.url, b'http://testserver/path1/path2') 360 self.assertEqual(r.url, b'http://testserver/path1/path2')
361 self.assertEqual(r.baseurl, b'http://testserver') 361 self.assertEqual(r.baseurl, b'http://testserver')
362 self.assertEqual(r.advertisedurl, 362 self.assertEqual(r.advertisedurl,
367 self.assertEqual(r.dispatchparts, [b'path1', b'path2']) 367 self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
368 self.assertEqual(r.dispatchpath, b'path1/path2') 368 self.assertEqual(r.dispatchpath, b'path1/path2')
369 self.assertIsNone(r.reponame) 369 self.assertIsNone(r.reponame)
370 370
371 # Local SCRIPT_NAME is ignored. 371 # Local SCRIPT_NAME is ignored.
372 r = parse(DEFAULT_ENV, altbaseurl='http://altserver', extra={ 372 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver', extra={
373 r'SCRIPT_NAME': r'/script', 373 r'SCRIPT_NAME': r'/script',
374 r'PATH_INFO': r'/path1/path2', 374 r'PATH_INFO': r'/path1/path2',
375 }) 375 })
376 self.assertEqual(r.url, b'http://testserver/script/path1/path2') 376 self.assertEqual(r.url, b'http://testserver/script/path1/path2')
377 self.assertEqual(r.baseurl, b'http://testserver') 377 self.assertEqual(r.baseurl, b'http://testserver')
382 self.assertEqual(r.dispatchparts, [b'path1', b'path2']) 382 self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
383 self.assertEqual(r.dispatchpath, b'path1/path2') 383 self.assertEqual(r.dispatchpath, b'path1/path2')
384 self.assertIsNone(r.reponame) 384 self.assertIsNone(r.reponame)
385 385
386 # Use remote's path for script name, app path 386 # Use remote's path for script name, app path
387 r = parse(DEFAULT_ENV, altbaseurl='http://altserver/altroot', extra={ 387 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altroot', extra={
388 r'SCRIPT_NAME': r'/script', 388 r'SCRIPT_NAME': r'/script',
389 r'PATH_INFO': r'/path1/path2', 389 r'PATH_INFO': r'/path1/path2',
390 }) 390 })
391 self.assertEqual(r.url, b'http://testserver/script/path1/path2') 391 self.assertEqual(r.url, b'http://testserver/script/path1/path2')
392 self.assertEqual(r.baseurl, b'http://testserver') 392 self.assertEqual(r.baseurl, b'http://testserver')
399 self.assertEqual(r.dispatchpath, b'path1/path2') 399 self.assertEqual(r.dispatchpath, b'path1/path2')
400 self.assertIsNone(r.reponame) 400 self.assertIsNone(r.reponame)
401 401
402 # reponame is factored in properly. 402 # reponame is factored in properly.
403 r = parse(DEFAULT_ENV, reponame=b'repo', 403 r = parse(DEFAULT_ENV, reponame=b'repo',
404 altbaseurl='http://altserver/altroot', 404 altbaseurl=b'http://altserver/altroot',
405 extra={ 405 extra={
406 r'SCRIPT_NAME': r'/script', 406 r'SCRIPT_NAME': r'/script',
407 r'PATH_INFO': r'/repo/path1/path2', 407 r'PATH_INFO': r'/repo/path1/path2',
408 }) 408 })
409 409