Mercurial > hg
diff tests/test-hgweb-auth.py @ 8333:89c80c3dc584
allow http authentication information to be specified in the configuration
author | Sune Foldager <cryo@cyanite.org> |
---|---|
date | Mon, 04 May 2009 20:26:27 +0200 |
parents | |
children | 08a0f04b56bd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-hgweb-auth.py Mon May 04 20:26:27 2009 +0200 @@ -0,0 +1,61 @@ +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'})