diff -r 57875cf423c9 -r 2372284d9457 tests/test-hgweb-auth.py --- a/tests/test-hgweb-auth.py Sat Oct 05 10:29:34 2019 -0400 +++ b/tests/test-hgweb-auth.py Sun Oct 06 09:45:02 2019 -0400 @@ -1,6 +1,8 @@ from __future__ import absolute_import, print_function -from mercurial import demandimport; demandimport.enable() +from mercurial import demandimport + +demandimport.enable() from mercurial import ( error, pycompat, @@ -8,35 +10,39 @@ url, util, ) -from mercurial.utils import ( - stringutil, -) +from mercurial.utils import stringutil urlerr = util.urlerr urlreq = util.urlreq + class myui(uimod.ui): def interactive(self): return False + origui = myui.load() + def writeauth(items): ui = origui.copy() for name, value in items.items(): ui.setconfig(b'auth', name, value) return ui + def _stringifyauthinfo(ai): if ai is None: return ai realm, authuris, user, passwd = ai - return (pycompat.strurl(realm), - [pycompat.strurl(u) for u in authuris], - pycompat.strurl(user), - pycompat.strurl(passwd), + return ( + pycompat.strurl(realm), + [pycompat.strurl(u) for u in authuris], + pycompat.strurl(user), + pycompat.strurl(passwd), ) + def test(auth, urls=None): print('CFG:', pycompat.sysstr(stringutil.pprint(auth, bprefix=True))) prefixes = set() @@ -57,11 +63,15 @@ u, authinfo = util.url(uri).authinfo() if authinfo is not None: pm.add_password(*_stringifyauthinfo(authinfo)) - print(' ', tuple(pycompat.strurl(a) for a in - pm.find_user_password('test', - pycompat.strurl(u)))) + print( + ' ', + tuple( + pycompat.strurl(a) + for a in pm.find_user_password('test', pycompat.strurl(u)) + ), + ) except error.Abort: - print(' ','abort') + print(' ', 'abort') if not urls: urls = [ @@ -73,7 +83,7 @@ b'https://example.org/bar', b'https://x@example.org/bar', b'https://y@example.org/bar', - ] + ] for u in urls: _test(u) @@ -90,64 +100,100 @@ test({b'x.prefix': b'example.org', b'x.schemes': b'http https'}) print('\n*** Test prefix matching\n') -test({b'x.prefix': b'http://example.org/foo', - b'y.prefix': b'http://example.org/bar'}) -test({b'x.prefix': b'http://example.org/foo', - b'y.prefix': b'http://example.org/foo/bar'}) +test( + { + b'x.prefix': b'http://example.org/foo', + b'y.prefix': b'http://example.org/bar', + } +) +test( + { + b'x.prefix': b'http://example.org/foo', + b'y.prefix': b'http://example.org/foo/bar', + } +) test({b'x.prefix': b'*', b'y.prefix': b'https://example.org/bar'}) print('\n*** Test user matching\n') -test({b'x.prefix': b'http://example.org/foo', - b'x.username': None, - b'x.password': b'xpassword'}, - urls=[b'http://y@example.org/foo']) -test({b'x.prefix': b'http://example.org/foo', - b'x.username': None, - b'x.password': b'xpassword', - b'y.prefix': b'http://example.org/foo', - b'y.username': b'y', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) -test({b'x.prefix': b'http://example.org/foo/bar', - b'x.username': None, - b'x.password': b'xpassword', - b'y.prefix': b'http://example.org/foo', - b'y.username': b'y', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo/bar']) +test( + { + b'x.prefix': b'http://example.org/foo', + b'x.username': None, + b'x.password': b'xpassword', + }, + urls=[b'http://y@example.org/foo'], +) +test( + { + b'x.prefix': b'http://example.org/foo', + b'x.username': None, + b'x.password': b'xpassword', + b'y.prefix': b'http://example.org/foo', + b'y.username': b'y', + b'y.password': b'ypassword', + }, + urls=[b'http://y@example.org/foo'], +) +test( + { + b'x.prefix': b'http://example.org/foo/bar', + b'x.username': None, + b'x.password': b'xpassword', + b'y.prefix': b'http://example.org/foo', + b'y.username': b'y', + b'y.password': b'ypassword', + }, + urls=[b'http://y@example.org/foo/bar'], +) print('\n*** Test user matching with name in prefix\n') # prefix, username and URL have the same user -test({b'x.prefix': b'https://example.org/foo', - b'x.username': None, - b'x.password': b'xpassword', - b'y.prefix': b'http://y@example.org/foo', - b'y.username': b'y', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) +test( + { + b'x.prefix': b'https://example.org/foo', + b'x.username': None, + b'x.password': b'xpassword', + b'y.prefix': b'http://y@example.org/foo', + b'y.username': b'y', + b'y.password': b'ypassword', + }, + urls=[b'http://y@example.org/foo'], +) # Prefix has a different user from username and URL -test({b'y.prefix': b'http://z@example.org/foo', - b'y.username': b'y', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) +test( + { + b'y.prefix': b'http://z@example.org/foo', + b'y.username': b'y', + b'y.password': b'ypassword', + }, + urls=[b'http://y@example.org/foo'], +) # Prefix has a different user from URL; no username -test({b'y.prefix': b'http://z@example.org/foo', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) +test( + {b'y.prefix': b'http://z@example.org/foo', b'y.password': b'ypassword'}, + urls=[b'http://y@example.org/foo'], +) # Prefix and URL have same user, but doesn't match username -test({b'y.prefix': b'http://y@example.org/foo', - b'y.username': b'z', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) +test( + { + b'y.prefix': b'http://y@example.org/foo', + b'y.username': b'z', + b'y.password': b'ypassword', + }, + urls=[b'http://y@example.org/foo'], +) # Prefix and URL have the same user; no username -test({b'y.prefix': b'http://y@example.org/foo', - b'y.password': b'ypassword'}, - urls=[b'http://y@example.org/foo']) +test( + {b'y.prefix': b'http://y@example.org/foo', b'y.password': b'ypassword'}, + urls=[b'http://y@example.org/foo'], +) # Prefix user, but no URL user or username -test({b'y.prefix': b'http://y@example.org/foo', - b'y.password': b'ypassword'}, - urls=[b'http://example.org/foo']) +test( + {b'y.prefix': b'http://y@example.org/foo', b'y.password': b'ypassword'}, + urls=[b'http://example.org/foo'], +) + def testauthinfo(fullurl, authurl): print('URIs:', fullurl, authurl) @@ -156,5 +202,6 @@ pm.add_password(*ai) print(pm.find_user_password('test', authurl)) + print('\n*** Test urllib2 and util.url\n') testauthinfo('http://user@example.com:8080/foo', 'http://example.com:8080/foo')