test-hgweb-auth.py
61 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
/ tests / test-hgweb-auth.py
Sune Foldager
|
r8333 | from mercurial import demandimport; demandimport.enable() | ||
from mercurial import ui | ||||
from mercurial import url | ||||
from mercurial.error import Abort | ||||
class myui(ui.ui): | ||||
def interactive(self): | ||||
return False | ||||
origui = myui() | ||||
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.iterkeys())]) + '}' | ||||
def test(auth): | ||||
print 'CFG:', dumpdict(auth) | ||||
prefixes = set() | ||||
for k in auth: | ||||
prefixes.add(k.split('.', 1)[0]) | ||||
for p in prefixes: | ||||
auth.update({p + '.username': p, p + '.password': p}) | ||||
ui = writeauth(auth) | ||||
def _test(uri): | ||||
print 'URI:', uri | ||||
try: | ||||
pm = url.passwordmgr(ui) | ||||
print ' ', pm.find_user_password('test', uri) | ||||
except Abort, e: | ||||
print 'abort' | ||||
_test('http://example.org/foo') | ||||
_test('http://example.org/foo/bar') | ||||
_test('http://example.org/bar') | ||||
_test('https://example.org/foo') | ||||
_test('https://example.org/foo/bar') | ||||
_test('https://example.org/bar') | ||||
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'}) | ||||