]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5560-http-backend-noserver.sh
The third batch
[thirdparty/git.git] / t / t5560-http-backend-noserver.sh
CommitLineData
04481adf
TC
1#!/bin/sh
2
3test_description='test git-http-backend-noserver'
028cb644 4GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
5export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
6
1fdd31cf 7TEST_PASSES_SANITIZE_LEAK=true
04481adf
TC
8. ./test-lib.sh
9
10HTTPD_DOCUMENT_ROOT_PATH="$TRASH_DIRECTORY"
11
c1cebcf4
JH
12if test_have_prereq GREP_STRIPS_CR
13then
14 GREP_OPTIONS=-U
15 export GREP_OPTIONS
16fi
a94114ad 17
04481adf 18run_backend() {
fd0a8c2e 19 echo "$2" |
ff7a1c67
KM
20 QUERY_STRING="${1#*[?]}" \
21 PATH_TRANSLATED="$HTTPD_DOCUMENT_ROOT_PATH/${1%%[?]*}" \
04481adf
TC
22 git http-backend >act.out 2>act.err
23}
24
25GET() {
69ae92bd 26 REQUEST_METHOD="GET" && export REQUEST_METHOD &&
fd0a8c2e 27 run_backend "/repo.git/$1" &&
1f5ad6b1 28 sane_unset REQUEST_METHOD &&
fd0a8c2e
TC
29 if ! grep "Status" act.out >act
30 then
31 printf "Status: 200 OK\r\n" >act
32 fi
33 printf "Status: $2\r\n" >exp &&
34 test_cmp exp act
04481adf
TC
35}
36
37POST() {
69ae92bd
JH
38 REQUEST_METHOD="POST" && export REQUEST_METHOD &&
39 CONTENT_TYPE="application/x-$1-request" && export CONTENT_TYPE &&
fd0a8c2e 40 run_backend "/repo.git/$1" "$2" &&
1f5ad6b1
ÆAB
41 sane_unset REQUEST_METHOD &&
42 sane_unset CONTENT_TYPE &&
fd0a8c2e
TC
43 if ! grep "Status" act.out >act
44 then
45 printf "Status: 200 OK\r\n" >act
46 fi
47 printf "Status: $3\r\n" >exp &&
48 test_cmp exp act
04481adf
TC
49}
50
04481adf
TC
51. "$TEST_DIRECTORY"/t556x_common
52
53expect_aliased() {
69ae92bd 54 REQUEST_METHOD="GET" && export REQUEST_METHOD &&
04481adf 55 if test $1 = 0; then
e8189ee9 56 run_backend "$2"
04481adf 57 else
e8189ee9 58 run_backend "$2" &&
04481adf
TC
59 echo "fatal: '$2': aliased" >exp.err &&
60 test_cmp exp.err act.err
61 fi
e8189ee9 62 unset REQUEST_METHOD
04481adf
TC
63}
64
65test_expect_success 'http-backend blocks bad PATH_INFO' '
66 config http.getanyfile true &&
67
68 expect_aliased 0 /repo.git/HEAD &&
69
70 expect_aliased 1 /repo.git/../HEAD &&
71 expect_aliased 1 /../etc/passwd &&
72 expect_aliased 1 ../etc/passwd &&
73 expect_aliased 1 /etc//passwd &&
74 expect_aliased 1 /etc/./passwd &&
75 expect_aliased 1 //domain/data.txt
76'
77
78test_done