##// END OF EJS Templates
tests: extract the http server authentication extension to a single module...
Matt Harbison -
r41725:549af2fa default
parent child Browse files
Show More
@@ -0,0 +1,17 b''
1 from __future__ import absolute_import
2
3 import base64
4
5 from mercurial.hgweb import common
6
7 def perform_authentication(hgweb, req, op):
8 auth = req.headers.get(b'Authorization')
9 if not auth:
10 raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
11 [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
12
13 if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']:
14 raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
15
16 def extsetup(ui):
17 common.permhooks.insert(0, perform_authentication)
@@ -175,22 +175,9 b' test http authentication'
175 + use the same server to test server side streaming preference
175 + use the same server to test server side streaming preference
176
176
177 $ cd test
177 $ cd test
178 $ cat << EOT > userpass.py
178
179 > import base64
179 $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -p $HGPORT2 -d \
180 > from mercurial.hgweb import common
180 > --pid-file=pid --config server.preferuncompressed=True \
181 > def perform_authentication(hgweb, req, op):
182 > auth = req.headers.get(b'Authorization')
183 > if not auth:
184 > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
185 > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
186 > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user',
187 > b'pass']:
188 > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
189 > def extsetup(ui):
190 > common.permhooks.insert(0, perform_authentication)
191 > EOT
192 $ hg serve --config extensions.x=userpass.py -p $HGPORT2 -d --pid-file=pid \
193 > --config server.preferuncompressed=True \
194 > --config web.push_ssl=False --config web.allow_push=* -A ../access.log
181 > --config web.push_ssl=False --config web.allow_push=* -A ../access.log
195 $ cat pid >> $DAEMON_PIDS
182 $ cat pid >> $DAEMON_PIDS
196
183
@@ -171,21 +171,9 b' test http authentication'
171 + use the same server to test server side streaming preference
171 + use the same server to test server side streaming preference
172
172
173 $ cd test
173 $ cd test
174 $ cat << EOT > userpass.py
174
175 > import base64
175 $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -p $HGPORT2 -d \
176 > from mercurial.hgweb import common
176 > --pid-file=pid --config server.preferuncompressed=True \
177 > def perform_authentication(hgweb, req, op):
178 > auth = req.headers.get(b'Authorization')
179 > if not auth:
180 > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
181 > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
182 > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']:
183 > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
184 > def extsetup(ui):
185 > common.permhooks.insert(0, perform_authentication)
186 > EOT
187 $ hg serve --config extensions.x=userpass.py -p $HGPORT2 -d --pid-file=pid \
188 > --config server.preferuncompressed=True \
189 > --config web.push_ssl=False --config web.allow_push=* -A ../access.log
177 > --config web.push_ssl=False --config web.allow_push=* -A ../access.log
190 $ cat pid >> $DAEMON_PIDS
178 $ cat pid >> $DAEMON_PIDS
191
179
@@ -420,20 +420,8 b' a large file from the server rather than'
420 $ rm "${USERCACHE}"/*
420 $ rm "${USERCACHE}"/*
421
421
422 $ cd ..
422 $ cd ..
423 $ cat << EOT > userpass.py
423
424 > import base64
424 $ hg serve --config extensions.x=$TESTDIR/httpserverauth.py -R credentialmain \
425 > from mercurial.hgweb import common
426 > def perform_authentication(hgweb, req, op):
427 > auth = req.headers.get(b'Authorization')
428 > if not auth:
429 > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
430 > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
431 > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user', b'pass']:
432 > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
433 > def extsetup(ui):
434 > common.permhooks.insert(0, perform_authentication)
435 > EOT
436 $ hg serve --config extensions.x=userpass.py -R credentialmain \
437 > -d -p $HGPORT --pid-file hg.pid -A access.log
425 > -d -p $HGPORT --pid-file hg.pid -A access.log
438 $ cat hg.pid >> $DAEMON_PIDS
426 $ cat hg.pid >> $DAEMON_PIDS
439 $ cat << EOF > get_pass.py
427 $ cat << EOF > get_pass.py
@@ -393,22 +393,7 b' the GET/PUT request.'
393 > l.password=pass
393 > l.password=pass
394 > EOF
394 > EOF
395
395
396 $ cat << EOF > userpass.py
396 $ hg --config extensions.x=$TESTDIR/httpserverauth.py \
397 > import base64
398 > from mercurial.hgweb import common
399 > def perform_authentication(hgweb, req, op):
400 > auth = req.headers.get(b'Authorization')
401 > if not auth:
402 > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
403 > [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
404 > if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user',
405 > b'pass']:
406 > raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
407 > def extsetup(ui):
408 > common.permhooks.insert(0, perform_authentication)
409 > EOF
410
411 $ hg --config extensions.x=$TESTTMP/userpass.py \
412 > -R server serve -d -p $HGPORT1 --pid-file=hg.pid \
397 > -R server serve -d -p $HGPORT1 --pid-file=hg.pid \
413 > -A $TESTTMP/access.log -E $TESTTMP/errors.log
398 > -A $TESTTMP/access.log -E $TESTTMP/errors.log
414 $ mv hg.pid $DAEMON_PIDS
399 $ mv hg.pid $DAEMON_PIDS
General Comments 0
You need to be logged in to leave comments. Login now