t5550: test HTTP authentication and userinfo decoding
Add a test for HTTP authentication and proper percent-decoding of the userinfo (username and password) part of the URL. Signed-off-by: Gabriel Corona <gabriel.corona@enst-bretagne.fr> Acked-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f772c34ce0
commit
3cf8fe1d26
@ -75,12 +75,14 @@ fi
|
|||||||
|
|
||||||
prepare_httpd() {
|
prepare_httpd() {
|
||||||
mkdir -p "$HTTPD_DOCUMENT_ROOT_PATH"
|
mkdir -p "$HTTPD_DOCUMENT_ROOT_PATH"
|
||||||
|
cp "$TEST_PATH"/passwd "$HTTPD_ROOT_PATH"
|
||||||
|
|
||||||
ln -s "$LIB_HTTPD_MODULE_PATH" "$HTTPD_ROOT_PATH/modules"
|
ln -s "$LIB_HTTPD_MODULE_PATH" "$HTTPD_ROOT_PATH/modules"
|
||||||
|
|
||||||
if test -n "$LIB_HTTPD_SSL"
|
if test -n "$LIB_HTTPD_SSL"
|
||||||
then
|
then
|
||||||
HTTPD_URL=https://127.0.0.1:$LIB_HTTPD_PORT
|
HTTPD_URL=https://127.0.0.1:$LIB_HTTPD_PORT
|
||||||
|
AUTH_HTTPD_URL=https://user%40host:user%40host@127.0.0.1:$LIB_HTTPD_PORT
|
||||||
|
|
||||||
RANDFILE_PATH="$HTTPD_ROOT_PATH"/.rnd openssl req \
|
RANDFILE_PATH="$HTTPD_ROOT_PATH"/.rnd openssl req \
|
||||||
-config "$TEST_PATH/ssl.cnf" \
|
-config "$TEST_PATH/ssl.cnf" \
|
||||||
@ -92,6 +94,7 @@ prepare_httpd() {
|
|||||||
HTTPD_PARA="$HTTPD_PARA -DSSL"
|
HTTPD_PARA="$HTTPD_PARA -DSSL"
|
||||||
else
|
else
|
||||||
HTTPD_URL=http://127.0.0.1:$LIB_HTTPD_PORT
|
HTTPD_URL=http://127.0.0.1:$LIB_HTTPD_PORT
|
||||||
|
AUTH_HTTPD_URL=http://user%40host:user%40host@127.0.0.1:$LIB_HTTPD_PORT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$LIB_HTTPD_DAV" -o -n "$LIB_HTTPD_SVN"
|
if test -n "$LIB_HTTPD_DAV" -o -n "$LIB_HTTPD_SVN"
|
||||||
|
@ -17,8 +17,30 @@ ErrorLog error.log
|
|||||||
<IfModule !mod_env.c>
|
<IfModule !mod_env.c>
|
||||||
LoadModule env_module modules/mod_env.so
|
LoadModule env_module modules/mod_env.so
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
<IfModule !mod_version.c>
|
||||||
|
LoadModule version_module modules/mod_version.so
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfVersion < 2.1>
|
||||||
|
<IfModule !mod_auth.c>
|
||||||
|
LoadModule auth_module modules/mod_auth.so
|
||||||
|
</IfModule>
|
||||||
|
</IfVersion>
|
||||||
|
|
||||||
|
<IfVersion >= 2.1>
|
||||||
|
<IfModule !mod_auth_basic.c>
|
||||||
|
LoadModule auth_basic_module modules/mod_auth_basic.so
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_authn_file.c>
|
||||||
|
LoadModule authn_file_module modules/mod_authn_file.so
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_authz_user.c>
|
||||||
|
LoadModule authz_user_module modules/mod_authz_user.so
|
||||||
|
</IfModule>
|
||||||
|
</IfVersion>
|
||||||
|
|
||||||
Alias /dumb/ www/
|
Alias /dumb/ www/
|
||||||
|
Alias /auth/ www/auth/
|
||||||
|
|
||||||
<Location /smart/>
|
<Location /smart/>
|
||||||
SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH}
|
SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH}
|
||||||
@ -48,6 +70,13 @@ SSLMutex file:ssl_mutex
|
|||||||
SSLEngine On
|
SSLEngine On
|
||||||
</IfDefine>
|
</IfDefine>
|
||||||
|
|
||||||
|
<Location /auth/>
|
||||||
|
AuthType Basic
|
||||||
|
AuthName "git-auth"
|
||||||
|
AuthUserFile passwd
|
||||||
|
Require valid-user
|
||||||
|
</Location>
|
||||||
|
|
||||||
<IfDefine DAV>
|
<IfDefine DAV>
|
||||||
LoadModule dav_module modules/mod_dav.so
|
LoadModule dav_module modules/mod_dav.so
|
||||||
LoadModule dav_fs_module modules/mod_dav_fs.so
|
LoadModule dav_fs_module modules/mod_dav_fs.so
|
||||||
|
1
t/lib-httpd/passwd
Normal file
1
t/lib-httpd/passwd
Normal file
@ -0,0 +1 @@
|
|||||||
|
user@host:nKpa8pZUHx/ic
|
@ -34,6 +34,13 @@ test_expect_success 'clone http repository' '
|
|||||||
test_cmp file clone/file
|
test_cmp file clone/file
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_failure 'clone http repository with authentication' '
|
||||||
|
mkdir "$HTTPD_DOCUMENT_ROOT_PATH/auth/" &&
|
||||||
|
cp -Rf "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" "$HTTPD_DOCUMENT_ROOT_PATH/auth/repo.git" &&
|
||||||
|
git clone $AUTH_HTTPD_URL/auth/repo.git clone-auth &&
|
||||||
|
test_cmp file clone-auth/file
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'fetch changes via http' '
|
test_expect_success 'fetch changes via http' '
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git commit -a -m two &&
|
git commit -a -m two &&
|
||||||
|
Loading…
Reference in New Issue
Block a user