improve httpd auth tests
These just checked that we could clone a repository when the username and password were given in the URL; we should also check that git will prompt when no or partial credentials are given. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
66c8448543
commit
5232586c79
@ -81,8 +81,7 @@ prepare_httpd() {
|
||||
|
||||
if test -n "$LIB_HTTPD_SSL"
|
||||
then
|
||||
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
|
||||
HTTPD_PROTO=https
|
||||
|
||||
RANDFILE_PATH="$HTTPD_ROOT_PATH"/.rnd openssl req \
|
||||
-config "$TEST_PATH/ssl.cnf" \
|
||||
@ -93,9 +92,12 @@ prepare_httpd() {
|
||||
export GIT_SSL_NO_VERIFY
|
||||
HTTPD_PARA="$HTTPD_PARA -DSSL"
|
||||
else
|
||||
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
|
||||
HTTPD_PROTO=http
|
||||
fi
|
||||
HTTPD_DEST=127.0.0.1:$LIB_HTTPD_PORT
|
||||
HTTPD_URL=$HTTPD_PROTO://$HTTPD_DEST
|
||||
HTTPD_URL_USER=$HTTPD_PROTO://user%40host@$HTTPD_DEST
|
||||
HTTPD_URL_USER_PASS=$HTTPD_PROTO://user%40host:user%40host@$HTTPD_DEST
|
||||
|
||||
if test -n "$LIB_HTTPD_DAV" -o -n "$LIB_HTTPD_SVN"
|
||||
then
|
||||
|
@ -35,11 +35,54 @@ test_expect_success 'clone http repository' '
|
||||
test_cmp file clone/file
|
||||
'
|
||||
|
||||
test_expect_success 'clone http repository with authentication' '
|
||||
test_expect_success 'create password-protected repository' '
|
||||
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
|
||||
cp -Rf "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
|
||||
"$HTTPD_DOCUMENT_ROOT_PATH/auth/repo.git"
|
||||
'
|
||||
|
||||
test_expect_success 'setup askpass helpers' '
|
||||
cat >askpass <<-EOF &&
|
||||
#!/bin/sh
|
||||
echo >>"$PWD/askpass-query" "askpass: \$*" &&
|
||||
cat "$PWD/askpass-response"
|
||||
EOF
|
||||
chmod +x askpass &&
|
||||
GIT_ASKPASS="$PWD/askpass" &&
|
||||
export GIT_ASKPASS &&
|
||||
>askpass-expect-none &&
|
||||
echo "askpass: Password: " >askpass-expect-pass &&
|
||||
{ echo "askpass: Username: " &&
|
||||
cat askpass-expect-pass
|
||||
} >askpass-expect-both
|
||||
'
|
||||
|
||||
test_expect_success 'cloning password-protected repository can fail' '
|
||||
>askpass-query &&
|
||||
echo wrong >askpass-response &&
|
||||
test_must_fail git clone "$HTTPD_URL/auth/repo.git" clone-auth-fail &&
|
||||
test_cmp askpass-expect-both askpass-query
|
||||
'
|
||||
|
||||
test_expect_success 'http auth can use user/pass in URL' '
|
||||
>askpass-query &&
|
||||
echo wrong >askpass-reponse &&
|
||||
git clone "$HTTPD_URL_USER_PASS/auth/repo.git" clone-auth-none &&
|
||||
test_cmp askpass-expect-none askpass-query
|
||||
'
|
||||
|
||||
test_expect_success 'http auth can use just user in URL' '
|
||||
>askpass-query &&
|
||||
echo user@host >askpass-response &&
|
||||
git clone "$HTTPD_URL_USER/auth/repo.git" clone-auth-pass &&
|
||||
test_cmp askpass-expect-pass askpass-query
|
||||
'
|
||||
|
||||
test_expect_success 'http auth can request both user and pass' '
|
||||
>askpass-query &&
|
||||
echo user@host >askpass-response &&
|
||||
git clone "$HTTPD_URL/auth/repo.git" clone-auth-both &&
|
||||
test_cmp askpass-expect-both askpass-query
|
||||
'
|
||||
|
||||
test_expect_success 'fetch changes via http' '
|
||||
|
Loading…
Reference in New Issue
Block a user