--- 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')