new file mode 100644
@@ -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)
@@ -175,22 +175,9 @@ test http authentication
+ 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
@@ -171,21 +171,9 @@ test http authentication
+ 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
@@ -420,20 +420,8 @@ a large file from the server rather than
$ 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
@@ -393,22 +393,7 @@ the GET/PUT request.
> 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