This repository has been archived by the owner on Apr 16, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
t0110-gateway.sh
executable file
·198 lines (159 loc) · 5.5 KB
/
t0110-gateway.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#!/bin/sh
#
# Copyright (c) 2015 Matt Bell
# MIT Licensed; see the LICENSE file in this repository.
#
test_description="Test HTTP Gateway"
. lib/test-lib.sh
test_init_ipfs
test_launch_ipfs_daemon
port=$GWAY_PORT
apiport=$API_PORT
# TODO check both 5001 and 5002.
# 5001 should have a readable gateway (part of the API)
# 5002 should have a readable gateway (using ipfs config Addresses.Gateway)
# but ideally we should only write the tests once. so maybe we need to
# define a function to test a gateway, and do so for each port.
# for now we check 5001 here as 5002 will be checked in gateway-writable.
test_expect_success "Make a file to test with" '
echo "Hello Worlds!" >expected &&
HASH=$(ipfs add -q expected) ||
test_fsh cat daemon_err
'
test_expect_success "GET IPFS path succeeds" '
curl -sfo actual "http://127.0.0.1:$port/ipfs/$HASH"
'
test_expect_success "GET IPFS path output looks good" '
test_cmp expected actual &&
rm actual
'
test_expect_success "GET IPFS directory path succeeds" '
mkdir dir &&
echo "12345" >dir/test &&
ipfs add -r -q dir >actual &&
HASH2=$(tail -n 1 actual) &&
curl -sf "http://127.0.0.1:$port/ipfs/$HASH2"
'
test_expect_success "GET IPFS directory file succeeds" '
curl -sfo actual "http://127.0.0.1:$port/ipfs/$HASH2/test"
'
test_expect_success "GET IPFS directory file output looks good" '
test_cmp dir/test actual
'
test_expect_success "GET IPFS non existent file returns code expected (404)" '
test_curl_resp_http_code "http://127.0.0.1:$port/ipfs/$HASH2/pleaseDontAddMe" "HTTP/1.1 404 Not Found"
'
test_expect_failure "GET IPNS path succeeds" '
ipfs name publish "$HASH" &&
PEERID=$(ipfs config Identity.PeerID) &&
test_check_peerid "$PEERID" &&
curl -sfo actual "http://127.0.0.1:$port/ipns/$PEERID"
'
test_expect_failure "GET IPNS path output looks good" '
test_cmp expected actual
'
test_expect_success "GET invalid IPFS path errors" '
test_must_fail curl -sf "http://127.0.0.1:$port/ipfs/12345"
'
test_expect_success "GET invalid path errors" '
test_must_fail curl -sf "http://127.0.0.1:$port/12345"
'
test_expect_success "GET /webui returns code expected" '
test_curl_resp_http_code "http://127.0.0.1:$apiport/webui" "HTTP/1.1 302 Found" "HTTP/1.1 301 Moved Permanently"
'
test_expect_success "GET /webui/ returns code expected" '
test_curl_resp_http_code "http://127.0.0.1:$apiport/webui/" "HTTP/1.1 302 Found" "HTTP/1.1 301 Moved Permanently"
'
test_expect_success "GET /logs returns logs" '
test_expect_code 28 curl http://127.0.0.1:$apiport/logs -m1 > log_out
'
test_expect_success "log output looks good" '
grep "log API client connected" log_out
'
test_expect_success "GET /api/v0/version succeeds" '
curl -v "http://127.0.0.1:$apiport/api/v0/version" 2> version_out
'
test_expect_success "output only has one transfer encoding header" '
grep "Transfer-Encoding: chunked" version_out | wc -l | xargs echo > tecount_out &&
echo "1" > tecount_exp &&
test_cmp tecount_out tecount_exp
'
test_expect_success "setup index hash" '
mkdir index &&
echo "<p></p>" > index/index.html &&
INDEXHASH=$(ipfs add -q -r index | tail -n1)
echo index: $INDEXHASH
'
test_expect_success "GET 'index.html' has correct content type" '
curl -I "http://127.0.0.1:$port/ipfs/$INDEXHASH/" > indexout
'
test_expect_success "output looks good" '
grep "Content-Type: text/html" indexout
'
test_expect_success "HEAD 'index.html' has no content" '
curl -X HEAD --max-time 1 http://127.0.0.1:$port/ipfs/$INDEXHASH/ > output;
[ ! -s output ]
'
# test ipfs readonly api
test_curl_gateway_api() {
curl -sfo actual "http://127.0.0.1:$port/api/v0/$1"
}
test_expect_success "get IPFS directory file through readonly API succeeds" '
test_curl_gateway_api "cat?arg=$HASH2/test"
'
test_expect_success "get IPFS directory file through readonly API output looks good" '
test_cmp dir/test actual
'
test_expect_success "refs IPFS directory file through readonly API succeeds" '
test_curl_gateway_api "refs?arg=$HASH2/test"
'
for cmd in add \
block/put \
bootstrap \
config \
dht \
diag \
id \
mount \
name/publish \
object/put \
object/new \
object/patch \
pin \
ping \
repo \
stats \
swarm \
file \
update \
bitswap
do
test_expect_success "test gateway api is sanitized: $cmd" '
test_curl_resp_http_code "http://127.0.0.1:$port/api/v0/$cmd" "HTTP/1.1 404 Not Found"
'
done
# This one is different. `local` will be interpreted as a path if the command isn't defined.
test_expect_success "test gateway api is sanitized: refs/local" '
echo "Error: invalid '"'ipfs ref'"' path" > refs_local_expected &&
! ipfs --api /ip4/127.0.0.1/tcp/$port refs local > refs_local_actual 2>&1 &&
test_cmp refs_local_expected refs_local_actual
'
test_expect_success "create raw-leaves node" '
echo "This is RAW!" > rfile &&
echo "This is RAW!" | ipfs add --raw-leaves -q > rhash
'
test_expect_success "try fetching it from gateway" '
curl http://127.0.0.1:$port/ipfs/$(cat rhash) > ffile &&
test_cmp rfile ffile
'
test_expect_success "Add compact blocks" '
ipfs block put ../t0110-gateway-data/foo.block &&
FOO2_HASH=$(ipfs block put ../t0110-gateway-data/foofoo.block) &&
printf "foofoo" > expected
'
test_expect_success "GET compact blocks succeeds" '
curl -o actual "http://127.0.0.1:$port/ipfs/$FOO2_HASH" &&
test_cmp expected actual
'
test_kill_ipfs_daemon
test_done