# HG changeset patch # User Matt Harbison # Date 1549377443 18000 # Node ID 549af2fa089f9b58d1edd021c3cd42a4960473c1 # Parent a4cd77a425a36d406638d549f9e40d79e1132001 tests: extract the http server authentication extension to a single module We had 4 copy/pastes of this, and no coverage for http digests (which are currently broken on py3). diff -r a4cd77a425a3 -r 549af2fa089f tests/httpserverauth.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/httpserverauth.py Tue Feb 05 09:37:23 2019 -0500 @@ -0,0 +1,17 @@ +from __future__ import absolute_import + +import base64 + +from mercurial.hgweb import common + +def perform_authentication(hgweb, req, op): + auth = req.headers.get(b'Authorization') + if not auth: + raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who', + [(b'WWW-Authenticate', b'Basic Realm="mercurial"')]) + + if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']: + raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no') + +def extsetup(ui): + common.permhooks.insert(0, perform_authentication) diff -r a4cd77a425a3 -r 549af2fa089f tests/test-http-bundle1.t --- a/tests/test-http-bundle1.t Sat Feb 02 21:58:49 2019 -0800 +++ b/tests/test-http-bundle1.t Tue Feb 05 09:37:23 2019 -0500 @@ -175,22 +175,9 @@ + use the same server to test server side streaming preference $ cd test - $ cat << EOT > userpass.py - > import base64 - > from mercurial.hgweb import common - > def perform_authentication(hgweb, req, op): - > auth = req.headers.get(b'Authorization') - > if not auth: - > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who', - > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')]) - > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', - > b'pass']: - > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no') - > def extsetup(ui): - > common.permhooks.insert(0, perform_authentication) - > EOT - $ hg serve --config extensions.x=userpass.py -p $HGPORT2 -d --pid-file=pid \ - > --config server.preferuncompressed=True \ + + $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -p $HGPORT2 -d \ + > --pid-file=pid --config server.preferuncompressed=True \ > --config web.push_ssl=False --config web.allow_push=* -A ../access.log $ cat pid >> $DAEMON_PIDS diff -r a4cd77a425a3 -r 549af2fa089f tests/test-http.t --- a/tests/test-http.t Sat Feb 02 21:58:49 2019 -0800 +++ b/tests/test-http.t Tue Feb 05 09:37:23 2019 -0500 @@ -171,21 +171,9 @@ + use the same server to test server side streaming preference $ cd test - $ cat << EOT > userpass.py - > import base64 - > from mercurial.hgweb import common - > def perform_authentication(hgweb, req, op): - > auth = req.headers.get(b'Authorization') - > if not auth: - > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who', - > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')]) - > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']: - > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no') - > def extsetup(ui): - > common.permhooks.insert(0, perform_authentication) - > EOT - $ hg serve --config extensions.x=userpass.py -p $HGPORT2 -d --pid-file=pid \ - > --config server.preferuncompressed=True \ + + $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -p $HGPORT2 -d \ + > --pid-file=pid --config server.preferuncompressed=True \ > --config web.push_ssl=False --config web.allow_push=* -A ../access.log $ cat pid >> $DAEMON_PIDS diff -r a4cd77a425a3 -r 549af2fa089f tests/test-largefiles-wireproto.t --- a/tests/test-largefiles-wireproto.t Sat Feb 02 21:58:49 2019 -0800 +++ b/tests/test-largefiles-wireproto.t Tue Feb 05 09:37:23 2019 -0500 @@ -420,20 +420,8 @@ $ rm "${USERCACHE}"/* $ cd .. - $ cat << EOT > userpass.py - > import base64 - > from mercurial.hgweb import common - > def perform_authentication(hgweb, req, op): - > auth = req.headers.get(b'Authorization') - > if not auth: - > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who', - > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')]) - > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']: - > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no') - > def extsetup(ui): - > common.permhooks.insert(0, perform_authentication) - > EOT - $ hg serve --config extensions.x=userpass.py -R credentialmain \ + + $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -R credentialmain \ > -d -p $HGPORT --pid-file hg.pid -A access.log $ cat hg.pid >> $DAEMON_PIDS $ cat << EOF > get_pass.py diff -r a4cd77a425a3 -r 549af2fa089f tests/test-lfs-serve-access.t --- a/tests/test-lfs-serve-access.t Sat Feb 02 21:58:49 2019 -0800 +++ b/tests/test-lfs-serve-access.t Tue Feb 05 09:37:23 2019 -0500 @@ -393,22 +393,7 @@ > l.password=pass > EOF - $ cat << EOF > userpass.py - > import base64 - > from mercurial.hgweb import common - > def perform_authentication(hgweb, req, op): - > auth = req.headers.get(b'Authorization') - > if not auth: - > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who', - > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')]) - > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', - > b'pass']: - > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no') - > def extsetup(ui): - > common.permhooks.insert(0, perform_authentication) - > EOF - - $ hg --config extensions.x=$TESTTMP/userpass.py \ + $ hg --config extensions.x=$TESTDIR/httpserverauth.py \ > -R server serve -d -p $HGPORT1 --pid-file=hg.pid \ > -A $TESTTMP/access.log -E $TESTTMP/errors.log $ mv hg.pid $DAEMON_PIDS