Imported Upstream version 2.23.2
[platform/upstream/git.git] / t / lib-credential.sh
index 4a37cd7..bb88cc0 100755 (executable)
@@ -4,12 +4,22 @@
 # stdout and stderr should be provided on stdin,
 # separated by "--".
 check() {
+       credential_opts=
+       credential_cmd=$1
+       shift
+       for arg in "$@"; do
+               credential_opts="$credential_opts -c credential.helper='$arg'"
+       done
        read_chunk >stdin &&
        read_chunk >expect-stdout &&
        read_chunk >expect-stderr &&
-       test-credential "$@" <stdin >stdout 2>stderr &&
+       if ! eval "git $credential_opts credential $credential_cmd <stdin >stdout 2>stderr"; then
+               echo "git credential failed with code $?" &&
+               cat stderr &&
+               false
+       fi &&
        test_cmp expect-stdout stdout &&
-       test_cmp expect-stderr stderr
+       test_i18ncmp expect-stderr stderr
 }
 
 read_chunk() {
@@ -34,6 +44,7 @@ helper_test_clean() {
        reject $1 https example.com user2
        reject $1 http path.tld user
        reject $1 https timeout.tld user
+       reject $1 https sso.tld
 }
 
 reject() {
@@ -41,7 +52,7 @@ reject() {
                echo protocol=$2
                echo host=$3
                echo username=$4
-       ) | test-credential reject $1
+       ) | git -c credential.helper=$1 credential reject
 }
 
 helper_test() {
@@ -52,6 +63,8 @@ helper_test() {
                protocol=https
                host=example.com
                --
+               protocol=https
+               host=example.com
                username=askpass-username
                password=askpass-password
                --
@@ -74,6 +87,8 @@ helper_test() {
                protocol=https
                host=example.com
                --
+               protocol=https
+               host=example.com
                username=store-user
                password=store-pass
                --
@@ -85,6 +100,8 @@ helper_test() {
                protocol=http
                host=example.com
                --
+               protocol=http
+               host=example.com
                username=askpass-username
                password=askpass-password
                --
@@ -98,6 +115,8 @@ helper_test() {
                protocol=https
                host=other.tld
                --
+               protocol=https
+               host=other.tld
                username=askpass-username
                password=askpass-password
                --
@@ -112,6 +131,8 @@ helper_test() {
                host=example.com
                username=other
                --
+               protocol=https
+               host=example.com
                username=other
                password=askpass-password
                --
@@ -133,6 +154,9 @@ helper_test() {
                host=path.tld
                path=bar.git
                --
+               protocol=http
+               host=path.tld
+               path=bar.git
                username=askpass-username
                password=askpass-password
                --
@@ -150,6 +174,8 @@ helper_test() {
                protocol=https
                host=example.com
                --
+               protocol=https
+               host=example.com
                username=askpass-username
                password=askpass-password
                --
@@ -176,6 +202,8 @@ helper_test() {
                host=example.com
                username=user1
                --
+               protocol=https
+               host=example.com
                username=user1
                password=pass1
                EOF
@@ -184,6 +212,8 @@ helper_test() {
                host=example.com
                username=user2
                --
+               protocol=https
+               host=example.com
                username=user2
                password=pass2
                EOF
@@ -200,6 +230,8 @@ helper_test() {
                host=example.com
                username=user1
                --
+               protocol=https
+               host=example.com
                username=user1
                password=askpass-password
                --
@@ -213,10 +245,30 @@ helper_test() {
                host=example.com
                username=user2
                --
+               protocol=https
+               host=example.com
                username=user2
                password=pass2
                EOF
        '
+
+       test_expect_success "helper ($HELPER) can store empty username" '
+               check approve $HELPER <<-\EOF &&
+               protocol=https
+               host=sso.tld
+               username=
+               password=
+               EOF
+               check fill $HELPER <<-\EOF
+               protocol=https
+               host=sso.tld
+               --
+               protocol=https
+               host=sso.tld
+               username=
+               password=
+               EOF
+       '
 }
 
 helper_test_timeout() {
@@ -234,6 +286,8 @@ helper_test_timeout() {
                protocol=https
                host=timeout.tld
                --
+               protocol=https
+               host=timeout.tld
                username=askpass-username
                password=askpass-password
                --
@@ -243,12 +297,10 @@ helper_test_timeout() {
        '
 }
 
-cat >askpass <<\EOF
-#!/bin/sh
+write_script askpass <<\EOF
 echo >&2 askpass: $*
-what=`echo $1 | cut -d" " -f1 | tr A-Z a-z | tr -cd a-z`
+what=$(echo $1 | cut -d" " -f1 | tr A-Z a-z | tr -cd a-z)
 echo "askpass-$what"
 EOF
-chmod +x askpass
 GIT_ASKPASS="$PWD/askpass"
 export GIT_ASKPASS