Imported Upstream version 2.5.1
[scm/test.git] / t / t-extra-header.sh
1 #!/usr/bin/env bash
2
3 . "$(dirname "$0")/testlib.sh"
4
5 begin_test "http.<url>.extraHeader"
6 (
7   set -e
8
9   reponame="copy-headers"
10   setup_remote_repo "$reponame"
11   clone_repo "$reponame" "$reponame"
12
13   url="$(git config remote.origin.url).git/info/lfs"
14   git config --add "http.$url.extraHeader" "X-Foo: bar"
15   git config --add "http.$url.extraHeader" "X-Foo: baz"
16
17   git lfs track "*.dat"
18   printf "contents" > a.dat
19   git add .gitattributes a.dat
20   git commit -m "initial commit"
21
22   GIT_CURL_VERBOSE=1 GIT_TRACE=1 git push origin master 2>&1 | tee curl.log
23
24   grep "> X-Foo: bar" curl.log
25   grep "> X-Foo: baz" curl.log
26 )
27 end_test
28
29 begin_test "http.<url>.extraHeader with authorization"
30 (
31   set -e
32
33   reponame="requirecreds-extraHeader"
34   setup_remote_repo "$reponame"
35   clone_repo "$reponame" "$reponame"
36
37   # See: test/cmd/lfstest-gitserver.go:missingRequiredCreds().
38   user="requirecreds"
39   pass="pass"
40   auth="Basic $(echo -n $user:$pass | base64)"
41
42   git config --add "http.extraHeader" "Authorization: $auth"
43
44   git lfs track "*.dat"
45   printf "contents" > a.dat
46   git add .gitattributes a.dat
47   git commit -m "initial commit"
48
49   git push origin master 2>&1 | tee curl.log
50   if [ "0" -ne "${PIPESTATUS[0]}" ]; then
51     echo >&2 "expected \`git push origin master\` to succeed, didn't"
52     exit 1
53   fi
54
55   [ "0" -eq "$(grep -c "creds: filling with GIT_ASKPASS" curl.log)" ]
56   [ "0" -eq "$(grep -c "creds: git credential approve" curl.log)" ]
57   [ "0" -eq "$(grep -c "creds: git credential cache" curl.log)" ]
58   [ "0" -eq "$(grep -c "creds: git credential fill" curl.log)" ]
59   [ "0" -eq "$(grep -c "creds: git credential reject" curl.log)" ]
60 )
61 end_test
62
63 begin_test "http.<url>.extraHeader with authorization (casing)"
64 (
65   set -e
66
67   reponame="requirecreds-extraHeaderCasing"
68   setup_remote_repo "$reponame"
69   clone_repo "$reponame" "$reponame"
70
71   # See: test/cmd/lfstest-gitserver.go:missingRequiredCreds().
72   user="requirecreds"
73   pass="pass"
74   auth="Basic $(echo -n $user:$pass | base64)"
75
76   git config --local --add lfs.access basic
77   # N.B.: "AUTHORIZATION" is not the correct casing, and is therefore the
78   # subject of this test. See lfsapi.Client.extraHeaders() for more.
79   git config --local --add "http.extraHeader" "AUTHORIZATION: $auth"
80
81   git lfs track "*.dat"
82   printf "contents" > a.dat
83   git add .gitattributes a.dat
84   git commit -m "initial commit"
85
86   git push origin master 2>&1 | tee curl.log
87   if [ "0" -ne "${PIPESTATUS[0]}" ]; then
88     echo >&2 "expected \`git push origin master\` to succeed, didn't"
89     exit 1
90   fi
91
92   [ "0" -eq "$(grep -c "creds: filling with GIT_ASKPASS" curl.log)" ]
93   [ "0" -eq "$(grep -c "creds: git credential approve" curl.log)" ]
94   [ "0" -eq "$(grep -c "creds: git credential cache" curl.log)" ]
95   [ "0" -eq "$(grep -c "creds: git credential fill" curl.log)" ]
96   [ "0" -eq "$(grep -c "creds: git credential reject" curl.log)" ]
97 )
98 end_test