@matheusbsbs / matheus-bagliano / commits / 04481adffe
Fork 0

Smart-http tests: Break test t5560-http-backend into pieces

This should introduce no functional change in the tests or the amount of test coverage. Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Tarmigan Casebolt <tarmigan+git@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Tarmigan Casebolt committed Jan 2, 2010 at 13:38 UTC 04481adffe7d4d969d7067d7a6d6e5e46e44f1c8
3 files changed +173 -147
t/t5560-http-backend-noserver.sh new
+52
@@ -0,0 +1,52 @@
1 +#!/bin/sh
2 +
3 +test_description='test git-http-backend-noserver'
4 +. ./test-lib.sh
5 +
6 +HTTPD_DOCUMENT_ROOT_PATH="$TRASH_DIRECTORY"
7 +
8 +run_backend() {
9 + REQUEST_METHOD=GET \
10 + GIT_PROJECT_ROOT="$HTTPD_DOCUMENT_ROOT_PATH" \
11 + PATH_INFO="$1" \
12 + git http-backend >act.out 2>act.err
13 +}
14 +
15 +GET() {
16 + return 0
17 +}
18 +
19 +POST() {
20 + return 0
21 +}
22 +
23 +log_div() {
24 + return 0
25 +}
26 +
27 +. "$TEST_DIRECTORY"/t556x_common
28 +
29 +expect_aliased() {
30 + if test $1 = 0; then
31 + run_backend "$2"
32 + else
33 + run_backend "$2" &&
34 + echo "fatal: '$2': aliased" >exp.err &&
35 + test_cmp exp.err act.err
36 + fi
37 +}
38 +
39 +test_expect_success 'http-backend blocks bad PATH_INFO' '
40 + config http.getanyfile true &&
41 +
42 + expect_aliased 0 /repo.git/HEAD &&
43 +
44 + expect_aliased 1 /repo.git/../HEAD &&
45 + expect_aliased 1 /../etc/passwd &&
46 + expect_aliased 1 ../etc/passwd &&
47 + expect_aliased 1 /etc//passwd &&
48 + expect_aliased 1 /etc/./passwd &&
49 + expect_aliased 1 //domain/data.txt
50 +'
51 +
52 +test_done
t/t5561-http-backend.sh renamed
+2 -147
@@ -8,20 +8,10 @@ if test -n "$NO_CURL"; then
8 test_done
9 fi
10
11 -LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5560'}
11 +LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5561'}
12 . "$TEST_DIRECTORY"/lib-httpd.sh
13 start_httpd
14
15 -find_file() {
16 - cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
17 - find $1 -type f |
18 - sed -e 1q
19 -}
20 -
21 -config() {
22 - git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" config $1 $2
23 -}
24 -
15 GET() {
16 curl --include "$HTTPD_URL/$SMART/repo.git/$1" >out 2>/dev/null &&
17 tr '\015' Q <out |
@@ -52,142 +42,7 @@ log_div() {
42 echo "###" >>"$HTTPD_ROOT_PATH"/access.log
43 }
44
55 -test_expect_success 'setup repository' '
56 - echo content >file &&
57 - git add file &&
58 - git commit -m one &&
59 -
60 - mkdir "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
61 - (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
62 - git --bare init &&
63 - : >objects/info/alternates &&
64 - : >objects/info/http-alternates
65 - ) &&
66 - git remote add public "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
67 - git push public master:master &&
68 -
69 - (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
70 - git repack -a -d
71 - ) &&
72 -
73 - echo other >file &&
74 - git add file &&
75 - git commit -m two &&
76 - git push public master:master &&
77 -
78 - LOOSE_URL=$(find_file objects/??) &&
79 - PACK_URL=$(find_file objects/pack/*.pack) &&
80 - IDX_URL=$(find_file objects/pack/*.idx)
81 -'
82 -
83 -get_static_files() {
84 - GET HEAD "$1" &&
85 - GET info/refs "$1" &&
86 - GET objects/info/packs "$1" &&
87 - GET objects/info/alternates "$1" &&
88 - GET objects/info/http-alternates "$1" &&
89 - GET $LOOSE_URL "$1" &&
90 - GET $PACK_URL "$1" &&
91 - GET $IDX_URL "$1"
92 -}
93 -
94 -SMART=smart
95 -test_expect_success 'direct refs/heads/master not found' '
96 - log_div "refs/heads/master"
97 - GET refs/heads/master "404 Not Found"
98 -'
99 -test_expect_success 'static file is ok' '
100 - log_div "getanyfile default"
101 - get_static_files "200 OK"
102 -'
103 -SMART=smart_noexport
104 -test_expect_success 'no export by default' '
105 - log_div "no git-daemon-export-ok"
106 - get_static_files "404 Not Found"
107 -'
108 -test_expect_success 'export if git-daemon-export-ok' '
109 - log_div "git-daemon-export-ok"
110 - (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
111 - touch git-daemon-export-ok
112 - ) &&
113 - get_static_files "200 OK"
114 -'
115 -SMART=smart
116 -test_expect_success 'static file if http.getanyfile true is ok' '
117 - log_div "getanyfile true"
118 - config http.getanyfile true &&
119 - get_static_files "200 OK"
120 -'
121 -test_expect_success 'static file if http.getanyfile false fails' '
122 - log_div "getanyfile false"
123 - config http.getanyfile false &&
124 - get_static_files "403 Forbidden"
125 -'
126 -
127 -test_expect_success 'http.uploadpack default enabled' '
128 - log_div "uploadpack default"
129 - GET info/refs?service=git-upload-pack "200 OK" &&
130 - POST git-upload-pack 0000 "200 OK"
131 -'
132 -test_expect_success 'http.uploadpack true' '
133 - log_div "uploadpack true"
134 - config http.uploadpack true &&
135 - GET info/refs?service=git-upload-pack "200 OK" &&
136 - POST git-upload-pack 0000 "200 OK"
137 -'
138 -test_expect_success 'http.uploadpack false' '
139 - log_div "uploadpack false"
140 - config http.uploadpack false &&
141 - GET info/refs?service=git-upload-pack "403 Forbidden" &&
142 - POST git-upload-pack 0000 "403 Forbidden"
143 -'
144 -
145 -test_expect_success 'http.receivepack default disabled' '
146 - log_div "receivepack default"
147 - GET info/refs?service=git-receive-pack "403 Forbidden" &&
148 - POST git-receive-pack 0000 "403 Forbidden"
149 -'
150 -test_expect_success 'http.receivepack true' '
151 - log_div "receivepack true"
152 - config http.receivepack true &&
153 - GET info/refs?service=git-receive-pack "200 OK" &&
154 - POST git-receive-pack 0000 "200 OK"
155 -'
156 -test_expect_success 'http.receivepack false' '
157 - log_div "receivepack false"
158 - config http.receivepack false &&
159 - GET info/refs?service=git-receive-pack "403 Forbidden" &&
160 - POST git-receive-pack 0000 "403 Forbidden"
161 -'
162 -run_backend() {
163 - REQUEST_METHOD=GET \
164 - GIT_PROJECT_ROOT="$HTTPD_DOCUMENT_ROOT_PATH" \
165 - PATH_INFO="$1" \
166 - git http-backend >act.out 2>act.err
167 -}
168 -
169 -expect_aliased() {
170 - if test $1 = 0; then
171 - run_backend "$2"
172 - else
173 - run_backend "$2" &&
174 - echo "fatal: '$2': aliased" >exp.err &&
175 - test_cmp exp.err act.err
176 - fi
177 -}
178 -
179 -test_expect_success 'http-backend blocks bad PATH_INFO' '
180 - config http.getanyfile true &&
181 -
182 - expect_aliased 0 /repo.git/HEAD &&
183 -
184 - expect_aliased 1 /repo.git/../HEAD &&
185 - expect_aliased 1 /../etc/passwd &&
186 - expect_aliased 1 ../etc/passwd &&
187 - expect_aliased 1 /etc//passwd &&
188 - expect_aliased 1 /etc/./passwd &&
189 - expect_aliased 1 //domain/data.txt
190 -'
45 +. "$TEST_DIRECTORY"/t556x_common
46
47 cat >exp <<EOF
48
t/t556x_common new
+119
@@ -0,0 +1,119 @@
1 +#!/bin/sh
2 +
3 +find_file() {
4 + cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
5 + find $1 -type f |
6 + sed -e 1q
7 +}
8 +
9 +config() {
10 + git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" config $1 $2
11 +}
12 +
13 +test_expect_success 'setup repository' '
14 + echo content >file &&
15 + git add file &&
16 + git commit -m one &&
17 +
18 + mkdir "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
19 + (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
20 + git --bare init &&
21 + : >objects/info/alternates &&
22 + : >objects/info/http-alternates
23 + ) &&
24 + git remote add public "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
25 + git push public master:master &&
26 +
27 + (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
28 + git repack -a -d
29 + ) &&
30 +
31 + echo other >file &&
32 + git add file &&
33 + git commit -m two &&
34 + git push public master:master &&
35 +
36 + LOOSE_URL=$(find_file objects/??) &&
37 + PACK_URL=$(find_file objects/pack/*.pack) &&
38 + IDX_URL=$(find_file objects/pack/*.idx)
39 +'
40 +
41 +get_static_files() {
42 + GET HEAD "$1" &&
43 + GET info/refs "$1" &&
44 + GET objects/info/packs "$1" &&
45 + GET objects/info/alternates "$1" &&
46 + GET objects/info/http-alternates "$1" &&
47 + GET $LOOSE_URL "$1" &&
48 + GET $PACK_URL "$1" &&
49 + GET $IDX_URL "$1"
50 +}
51 +
52 +SMART=smart
53 +test_expect_success 'direct refs/heads/master not found' '
54 + log_div "refs/heads/master"
55 + GET refs/heads/master "404 Not Found"
56 +'
57 +test_expect_success 'static file is ok' '
58 + log_div "getanyfile default"
59 + get_static_files "200 OK"
60 +'
61 +SMART=smart_noexport
62 +test_expect_success 'no export by default' '
63 + log_div "no git-daemon-export-ok"
64 + get_static_files "404 Not Found"
65 +'
66 +test_expect_success 'export if git-daemon-export-ok' '
67 + log_div "git-daemon-export-ok"
68 + (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
69 + touch git-daemon-export-ok
70 + ) &&
71 + get_static_files "200 OK"
72 +'
73 +SMART=smart
74 +test_expect_success 'static file if http.getanyfile true is ok' '
75 + log_div "getanyfile true"
76 + config http.getanyfile true &&
77 + get_static_files "200 OK"
78 +'
79 +test_expect_success 'static file if http.getanyfile false fails' '
80 + log_div "getanyfile false"
81 + config http.getanyfile false &&
82 + get_static_files "403 Forbidden"
83 +'
84 +
85 +test_expect_success 'http.uploadpack default enabled' '
86 + log_div "uploadpack default"
87 + GET info/refs?service=git-upload-pack "200 OK" &&
88 + POST git-upload-pack 0000 "200 OK"
89 +'
90 +test_expect_success 'http.uploadpack true' '
91 + log_div "uploadpack true"
92 + config http.uploadpack true &&
93 + GET info/refs?service=git-upload-pack "200 OK" &&
94 + POST git-upload-pack 0000 "200 OK"
95 +'
96 +test_expect_success 'http.uploadpack false' '
97 + log_div "uploadpack false"
98 + config http.uploadpack false &&
99 + GET info/refs?service=git-upload-pack "403 Forbidden" &&
100 + POST git-upload-pack 0000 "403 Forbidden"
101 +'
102 +
103 +test_expect_success 'http.receivepack default disabled' '
104 + log_div "receivepack default"
105 + GET info/refs?service=git-receive-pack "403 Forbidden" &&
106 + POST git-receive-pack 0000 "403 Forbidden"
107 +'
108 +test_expect_success 'http.receivepack true' '
109 + log_div "receivepack true"
110 + config http.receivepack true &&
111 + GET info/refs?service=git-receive-pack "200 OK" &&
112 + POST git-receive-pack 0000 "200 OK"
113 +'
114 +test_expect_success 'http.receivepack false' '
115 + log_div "receivepack false"
116 + config http.receivepack false &&
117 + GET info/refs?service=git-receive-pack "403 Forbidden" &&
118 + POST git-receive-pack 0000 "403 Forbidden"
119 +'