Mercurial > hg
view tests/test-hgweb-auth.py @ 13372:5bced0d28a39
url: return the matched authentication group name from readauthforuri()
Internally, the group name is only used in debug statements, but readauthforuri
can be also used externally to determine which group will be matched for a given
URL.
author | Steve Borho <steve@borho.org> |
---|---|
date | Sun, 13 Feb 2011 12:19:58 -0600 |
parents | 08a0f04b56bd |
children | 4a43e23b8c55 |
line wrap: on
line source
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'})