| 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 |