mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
dfda82e492
Summary: Mostly empty lines removed and added. A few bugfixes on excessive line splitting. Reviewed By: quark-zju Differential Revision: D8199128 fbshipit-source-id: 90c1616061bfd7cfbba0b75f03f89683340374d5
128 lines
3.5 KiB
Python
128 lines
3.5 KiB
Python
from __future__ import absolute_import, print_function
|
|
|
|
from mercurial import demandimport, error, ui as uimod, url, util
|
|
|
|
|
|
demandimport.enable()
|
|
|
|
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.iteritems():
|
|
ui.setconfig("auth", name, value)
|
|
return ui
|
|
|
|
|
|
def dumpdict(dict):
|
|
return "{" + ", ".join(["%s: %s" % (k, dict[k]) for k in sorted(dict)]) + "}"
|
|
|
|
|
|
def test(auth, urls=None):
|
|
print("CFG:", dumpdict(auth))
|
|
prefixes = set()
|
|
for k in auth:
|
|
prefixes.add(k.split(".", 1)[0])
|
|
for p in prefixes:
|
|
for name in (".username", ".password"):
|
|
if (p + name) not in auth:
|
|
auth[p + name] = p
|
|
auth = dict((k, v) for k, v in auth.iteritems() if v is not None)
|
|
|
|
ui = writeauth(auth)
|
|
|
|
def _test(uri):
|
|
print("URI:", uri)
|
|
try:
|
|
pm = url.passwordmgr(ui, urlreq.httppasswordmgrwithdefaultrealm())
|
|
u, authinfo = util.url(uri).authinfo()
|
|
if authinfo is not None:
|
|
pm.add_password(*authinfo)
|
|
print(" ", pm.find_user_password("test", u))
|
|
except error.Abort:
|
|
print(" ", "abort")
|
|
|
|
if not urls:
|
|
urls = [
|
|
"http://example.org/foo",
|
|
"http://example.org/foo/bar",
|
|
"http://example.org/bar",
|
|
"https://example.org/foo",
|
|
"https://example.org/foo/bar",
|
|
"https://example.org/bar",
|
|
"https://x@example.org/bar",
|
|
"https://y@example.org/bar",
|
|
]
|
|
for u in urls:
|
|
_test(u)
|
|
|
|
|
|
print("\n*** Test in-uri schemes\n")
|
|
test({"x.prefix": "http://example.org"})
|
|
test({"x.prefix": "https://example.org"})
|
|
test({"x.prefix": "http://example.org", "x.schemes": "https"})
|
|
test({"x.prefix": "https://example.org", "x.schemes": "http"})
|
|
|
|
print("\n*** Test separately configured schemes\n")
|
|
test({"x.prefix": "example.org", "x.schemes": "http"})
|
|
test({"x.prefix": "example.org", "x.schemes": "https"})
|
|
test({"x.prefix": "example.org", "x.schemes": "http https"})
|
|
|
|
print("\n*** Test prefix matching\n")
|
|
test({"x.prefix": "http://example.org/foo", "y.prefix": "http://example.org/bar"})
|
|
test({"x.prefix": "http://example.org/foo", "y.prefix": "http://example.org/foo/bar"})
|
|
test({"x.prefix": "*", "y.prefix": "https://example.org/bar"})
|
|
|
|
print("\n*** Test user matching\n")
|
|
test(
|
|
{
|
|
"x.prefix": "http://example.org/foo",
|
|
"x.username": None,
|
|
"x.password": "xpassword",
|
|
},
|
|
urls=["http://y@example.org/foo"],
|
|
)
|
|
test(
|
|
{
|
|
"x.prefix": "http://example.org/foo",
|
|
"x.username": None,
|
|
"x.password": "xpassword",
|
|
"y.prefix": "http://example.org/foo",
|
|
"y.username": "y",
|
|
"y.password": "ypassword",
|
|
},
|
|
urls=["http://y@example.org/foo"],
|
|
)
|
|
test(
|
|
{
|
|
"x.prefix": "http://example.org/foo/bar",
|
|
"x.username": None,
|
|
"x.password": "xpassword",
|
|
"y.prefix": "http://example.org/foo",
|
|
"y.username": "y",
|
|
"y.password": "ypassword",
|
|
},
|
|
urls=["http://y@example.org/foo/bar"],
|
|
)
|
|
|
|
|
|
def testauthinfo(fullurl, authurl):
|
|
print("URIs:", fullurl, authurl)
|
|
pm = urlreq.httppasswordmgrwithdefaultrealm()
|
|
pm.add_password(*util.url(fullurl).authinfo()[1])
|
|
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")
|