master
sh 381 lines 9.32 KB
Raw
1 #!/usr/bin/env bash
2
3 test_description="Test cid commands"
4
5 . lib/test-lib.sh
6
7 # NOTE: Primary tests for "ipfs cid" commands are in test/cli/cid_test.go
8 # These sharness tests are kept for backward compatibility but new tests
9 # should be added to test/cli/cid_test.go instead. If any of these tests
10 # break, consider removing them and updating only the test/cli version.
11
12 # note: all "ipfs cid" commands should work without requiring a repo
13
14 CIDv0="QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv"
15 CIDv1="zdj7WZAAFKPvYPPzyJLso2hhxo8a7ZACFQ4DvvfrNXTHidofr"
16 CIDb32="bafybeibxm2nsadl3fnxv2sxcxmxaco2jl53wpeorjdzidjwf5aqdg7wa6u"
17
18 CIDbase="QmYNmQKp6SuaVrpgWRsPTgCQCnpxUYGq76YEKBXuj2N4H6"
19 CIDb32pb="bafybeievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve"
20 CIDb32raw="bafkreievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve"
21 CIDb32dagcbor="bafyreievd6mwe6vcwnkwo3eizs3h7w3a34opszbyfxziqdxguhjw7imdve"
22
23 test_expect_success "cid base32 works" '
24 echo $CIDb32 > expected &&
25 ipfs cid base32 $CIDv0 > actual1 &&
26 test_cmp actual1 expected &&
27 ipfs cid base32 $CIDv1 > actual2 &&
28 test_cmp expected actual2
29 '
30
31 test_expect_success "cid format -v 1 -b base58btc" '
32 echo $CIDv1 > expected &&
33 ipfs cid format -v 1 -b base58btc $CIDv0 > actual1 &&
34 test_cmp actual1 expected &&
35 ipfs cid format -v 1 -b base58btc $CIDb32 > actual2 &&
36 test_cmp expected actual2
37 '
38
39 test_expect_success "cid format -v 0" '
40 echo $CIDv0 > expected &&
41 ipfs cid format -v 0 $CIDb32 > actual &&
42 test_cmp expected actual
43 '
44
45 cat <<EOF > various_cids
46 QmZZRTyhDpL5Jgift1cHbAhexeE1m2Hw8x8g7rTcPahDvo
47 QmPhk6cJkRcFfZCdYam4c9MKYjFG9V29LswUnbrFNhtk2S
48 bafybeihtwdtifv43rn5cyilnmkwofdcxi2suqimmo62vn3etf45gjoiuwy
49 bafybeiek4tfxkc4ov6jsmb63fzbirrsalnjw24zd5xawo2fgxisd4jmpyq
50 zdj7WgYfT2gfsgiUxzPYboaRbP9H9CxZE5jVMK9pDDwCcKDCR
51 zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi
52 uAXASIDsp4T3Wnd6kXFOQaljH3GFK_ixkjMtVhB9VOBrPK3bp
53 uAXASIDdmmyANeytvXUriuy4BO0lfd2eR0UjygabF6CAzfsD1
54 EOF
55
56 cat <<EOF > various_cids_base32
57 bafybeifgwyq5gs4l2mru5klgwjfmftjvkmbyyjurbupuz2bst7mhmg2hwa
58 bafybeiauil46g3lb32jemjbl7yspca3twdcg4wwkbsgdgvgdj5fpfv2f64
59 bafybeihtwdtifv43rn5cyilnmkwofdcxi2suqimmo62vn3etf45gjoiuwy
60 bafybeiek4tfxkc4ov6jsmb63fzbirrsalnjw24zd5xawo2fgxisd4jmpyq
61 bafybeifffq3aeaymxejo37sn5fyaf7nn7hkfmzwdxyjculx3lw4tyhk7uy
62 bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354
63 bafybeib3fhqt3vu532sfyu4qnjmmpxdbjl7cyzemznkyih2vhanm6k3w5e
64 bafybeibxm2nsadl3fnxv2sxcxmxaco2jl53wpeorjdzidjwf5aqdg7wa6u
65 EOF
66
67 cat <<EOF > various_cids_v1
68 zdj7WgefqQm5HogBQ2bckZuTYYDarRTUZi51GYCnerHD2G86j
69 zdj7WWnzU3Nbu5rYGWZHKigUXBtAwShs2SHDCM1TQEvC9TeCN
70 zdj7WmqAbpsfXgiRBtZP1oAP9QWuuY3mqbc5JhpxJkfT3vYCu
71 zdj7Wen5gtfr7AivXip3zYd1peuq2QfKrqAn4FGiciVWb96YB
72 zdj7WgYfT2gfsgiUxzPYboaRbP9H9CxZE5jVMK9pDDwCcKDCR
73 zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi
74 zdj7WZQrAvnY5ge3FNg5cmCsNwsvpYjdtu2yEmnWYQ4ES7Nzk
75 zdj7WZAAFKPvYPPzyJLso2hhxo8a7ZACFQ4DvvfrNXTHidofr
76 EOF
77
78 test_expect_success "cid base32 works from stdin" '
79 cat various_cids | ipfs cid base32 > actual &&
80 test_cmp various_cids_base32 actual
81 '
82
83 test_expect_success "cid format -v 1 -b base58btc works from stdin" '
84 cat various_cids | ipfs cid format -v 1 -b base58btc > actual &&
85 test_cmp various_cids_v1 actual
86 '
87
88 cat <<EOF > bases_expect
89 0 identity
90 0 48 base2
91 b 98 base32
92 B 66 base32upper
93 c 99 base32pad
94 C 67 base32padupper
95 f 102 base16
96 F 70 base16upper
97 k 107 base36
98 K 75 base36upper
99 m 109 base64
100 M 77 base64pad
101 t 116 base32hexpad
102 T 84 base32hexpadupper
103 u 117 base64url
104 U 85 base64urlpad
105 v 118 base32hex
106 V 86 base32hexupper
107 z 122 base58btc
108 Z 90 base58flickr
109 🚀 128640 base256emoji
110 EOF
111
112 cat <<EOF > codecs_expect
113 81 cbor
114 85 raw
115 112 dag-pb
116 113 dag-cbor
117 114 libp2p-key
118 120 git-raw
119 123 torrent-info
120 124 torrent-file
121 128 blake3-hashseq
122 129 leofcoin-block
123 130 leofcoin-tx
124 131 leofcoin-pr
125 133 dag-jose
126 134 dag-cose
127 144 eth-block
128 145 eth-block-list
129 146 eth-tx-trie
130 147 eth-tx
131 148 eth-tx-receipt-trie
132 149 eth-tx-receipt
133 150 eth-state-trie
134 151 eth-account-snapshot
135 152 eth-storage-trie
136 153 eth-receipt-log-trie
137 154 eth-receipt-log
138 176 bitcoin-block
139 177 bitcoin-tx
140 178 bitcoin-witness-commitment
141 192 zcash-block
142 193 zcash-tx
143 208 stellar-block
144 209 stellar-tx
145 224 decred-block
146 225 decred-tx
147 240 dash-block
148 241 dash-tx
149 250 swarm-manifest
150 251 swarm-feed
151 252 beeson
152 297 dag-json
153 496 swhid-1-snp
154 512 json
155 46083 rdfc-1
156 46593 json-jcs
157 EOF
158
159 cat <<EOF > supported_codecs_expect
160 81 cbor
161 85 raw
162 112 dag-pb
163 113 dag-cbor
164 114 libp2p-key
165 120 git-raw
166 133 dag-jose
167 297 dag-json
168 512 json
169 EOF
170
171 cat <<EOF > hashes_expect
172 0 identity
173 17 sha1
174 18 sha2-256
175 19 sha2-512
176 20 sha3-512
177 21 sha3-384
178 22 sha3-256
179 23 sha3-224
180 25 shake-256
181 26 keccak-224
182 27 keccak-256
183 28 keccak-384
184 29 keccak-512
185 30 blake3
186 86 dbl-sha2-256
187 45588 blake2b-160
188 45589 blake2b-168
189 45590 blake2b-176
190 45591 blake2b-184
191 45592 blake2b-192
192 45593 blake2b-200
193 45594 blake2b-208
194 45595 blake2b-216
195 45596 blake2b-224
196 45597 blake2b-232
197 45598 blake2b-240
198 45599 blake2b-248
199 45600 blake2b-256
200 45601 blake2b-264
201 45602 blake2b-272
202 45603 blake2b-280
203 45604 blake2b-288
204 45605 blake2b-296
205 45606 blake2b-304
206 45607 blake2b-312
207 45608 blake2b-320
208 45609 blake2b-328
209 45610 blake2b-336
210 45611 blake2b-344
211 45612 blake2b-352
212 45613 blake2b-360
213 45614 blake2b-368
214 45615 blake2b-376
215 45616 blake2b-384
216 45617 blake2b-392
217 45618 blake2b-400
218 45619 blake2b-408
219 45620 blake2b-416
220 45621 blake2b-424
221 45622 blake2b-432
222 45623 blake2b-440
223 45624 blake2b-448
224 45625 blake2b-456
225 45626 blake2b-464
226 45627 blake2b-472
227 45628 blake2b-480
228 45629 blake2b-488
229 45630 blake2b-496
230 45631 blake2b-504
231 45632 blake2b-512
232 45652 blake2s-160
233 45653 blake2s-168
234 45654 blake2s-176
235 45655 blake2s-184
236 45656 blake2s-192
237 45657 blake2s-200
238 45658 blake2s-208
239 45659 blake2s-216
240 45660 blake2s-224
241 45661 blake2s-232
242 45662 blake2s-240
243 45663 blake2s-248
244 45664 blake2s-256
245 EOF
246
247 test_expect_success "cid bases" '
248 cat <<-EOF > expect
249 identity
250 base2
251 base32
252 base32upper
253 base32pad
254 base32padupper
255 base16
256 base16upper
257 base36
258 base36upper
259 base64
260 base64pad
261 base32hexpad
262 base32hexpadupper
263 base64url
264 base64urlpad
265 base32hex
266 base32hexupper
267 base58btc
268 base58flickr
269 base256emoji
270 EOF
271 ipfs cid bases > actual &&
272 test_cmp expect actual
273 '
274
275 test_expect_success "cid bases --prefix" '
276 cat <<-EOF > expect
277 identity
278 0 base2
279 b base32
280 B base32upper
281 c base32pad
282 C base32padupper
283 f base16
284 F base16upper
285 k base36
286 K base36upper
287 m base64
288 M base64pad
289 t base32hexpad
290 T base32hexpadupper
291 u base64url
292 U base64urlpad
293 v base32hex
294 V base32hexupper
295 z base58btc
296 Z base58flickr
297 🚀 base256emoji
298 EOF
299 ipfs cid bases --prefix > actual &&
300 test_cmp expect actual
301 '
302
303 test_expect_success "cid bases --prefix --numeric" '
304 ipfs cid bases --prefix --numeric > actual &&
305 test_cmp bases_expect actual
306 '
307
308 test_expect_success "cid codecs" '
309 cut -c 8- codecs_expect > expect &&
310 ipfs cid codecs > actual
311 test_cmp expect actual
312 '
313
314 test_expect_success "cid codecs --numeric" '
315 ipfs cid codecs --numeric > actual &&
316 test_cmp codecs_expect actual
317 '
318
319 test_expect_success "cid codecs --supported" '
320 cut -c 8- supported_codecs_expect > expect &&
321 ipfs cid codecs --supported > actual
322 test_cmp expect actual
323 '
324
325 test_expect_success "cid codecs --supported --numeric" '
326 ipfs cid codecs --supported --numeric > actual &&
327 test_cmp supported_codecs_expect actual
328 '
329
330 test_expect_success "cid hashes" '
331 cut -c 8- hashes_expect > expect &&
332 ipfs cid hashes > actual
333 test_cmp expect actual
334 '
335
336 test_expect_success "cid hashes --numeric" '
337 ipfs cid hashes --numeric > actual &&
338 test_cmp hashes_expect actual
339 '
340
341 test_expect_success "cid format -c raw" '
342 echo $CIDb32raw > expected &&
343 ipfs cid format --mc raw -b base32 $CIDb32pb > actual &&
344 test_cmp actual expected
345 '
346
347 test_expect_success "cid format --mc dag-pb -v 0" '
348 echo $CIDbase > expected &&
349 ipfs cid format --mc dag-pb -v 0 $CIDb32raw > actual &&
350 test_cmp actual expected
351 '
352
353 test_expect_success "cid format --mc dag-cbor" '
354 echo $CIDb32dagcbor > expected &&
355 ipfs cid format --mc dag-cbor $CIDb32pb > actual &&
356 test_cmp actual expected
357 '
358
359 # this was an old flag that we removed, explicitly to force an error
360 # so the user would read about the new multicodec names introduced
361 # by https://github.com/ipfs/go-cid/commit/b2064d74a8b098193b316689a715cdf4e4934805
362 test_expect_success "cid format --codec fails" '
363 echo "Error: unknown option \"codec\"" > expected &&
364 test_expect_code 1 ipfs cid format --codec protobuf 2> actual &&
365 test_cmp actual expected
366 '
367
368 test_expect_success "cid format -b base256emoji <base32>" '
369 echo "🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊" > expected &&
370 ipfs cid format -b base256emoji bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi > actual &&
371 test_cmp actual expected
372 '
373
374 test_expect_success "cid format -b base32 <base256emoji>" '
375 echo "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi" > expected &&
376 ipfs cid format -b base32 🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊 > actual &&
377 test_cmp actual expected
378 '
379
380
381 test_done