| 1 | #!/usr/bin/env bash |
| 2 | # |
| 3 | # Copyright (c) 2016 Jeromy Johnson |
| 4 | # MIT Licensed; see the LICENSE file in this repository. |
| 5 | # |
| 6 | |
| 7 | test_description="Test dag command" |
| 8 | |
| 9 | . lib/test-lib.sh |
| 10 | |
| 11 | test_init_ipfs |
| 12 | |
| 13 | test_expect_success "make a few test files" ' |
| 14 | echo "foo" > file1 && |
| 15 | echo "bar" > file2 && |
| 16 | echo "baz" > file3 && |
| 17 | echo "qux" > file4 && |
| 18 | HASH1=$(ipfs add --pin=false -q file1) && |
| 19 | HASH2=$(ipfs add --pin=false -q file2) && |
| 20 | HASH3=$(ipfs add --pin=false -q file3) && |
| 21 | HASH4=$(ipfs add --pin=false -q file4) |
| 22 | ' |
| 23 | |
| 24 | test_expect_success "make an ipld object in dag-json" ' |
| 25 | printf "{\"hello\":\"world\",\"cats\":[{\"/\":\"%s\"},{\"water\":{\"/\":\"%s\"}}],\"magic\":{\"/\":\"%s\"},\"sub\":{\"dict\":\"ionary\",\"beep\":[0,\"bop\"]}}" $HASH1 $HASH2 $HASH3 > ipld_object |
| 26 | ' |
| 27 | |
| 28 | # This data is in https://github.com/ipld/codec-fixtures/tree/master/fixtures/dagpb_Data_some |
| 29 | test_expect_success "make the same ipld object in dag-cbor, dag-json and dag-pb" ' |
| 30 | echo "omREYXRhRQABAgMEZUxpbmtzgA==" | base64 -d > ipld_object_dagcbor |
| 31 | echo "CgUAAQIDBA==" | base64 -d > ipld_object_dagpb |
| 32 | echo "{\"Data\":{\"/\":{\"bytes\":\"AAECAwQ\"}},\"Links\":[]}" > ipld_object_dagjson |
| 33 | ' |
| 34 | |
| 35 | test_dag_cmd() { |
| 36 | # Working with a plain IPLD hello-world object that's dag-json and dag-cbor compatible |
| 37 | |
| 38 | test_expect_success "can add an ipld object using defaults (dag-json to dag-cbor)" ' |
| 39 | IPLDHASH=$(cat ipld_object | ipfs dag put) |
| 40 | ' |
| 41 | |
| 42 | test_expect_success "CID looks correct" ' |
| 43 | EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde" |
| 44 | test $EXPHASH = $IPLDHASH |
| 45 | ' |
| 46 | |
| 47 | test_expect_success "'ipfs dag put' check block size" ' |
| 48 | dd if=/dev/zero bs=2097153 count=1 > over-2MiB-file && |
| 49 | test_expect_code 1 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file >dag_put_out 2>&1 |
| 50 | ' |
| 51 | |
| 52 | test_expect_success "ipfs dag put output has the correct error" ' |
| 53 | grep "produced block is over 2MiB" dag_put_out |
| 54 | ' |
| 55 | |
| 56 | test_expect_success "ipfs dag put --allow-big-block=true works" ' |
| 57 | test_expect_code 0 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file --allow-big-block=true && |
| 58 | rm over-2MiB-file |
| 59 | ' |
| 60 | |
| 61 | test_expect_success "can add an ipld object using dag-json to dag-json" ' |
| 62 | IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-json) |
| 63 | ' |
| 64 | |
| 65 | test_expect_success "CID looks correct" ' |
| 66 | EXPHASH="baguqeera6gviseelmbzn2ugoddo5vulxlshqs3kw5ymgsb6w4cabnoh4ldpa" |
| 67 | test $EXPHASH = $IPLDHASH |
| 68 | ' |
| 69 | |
| 70 | test_expect_success "can add an ipld object using dag-json to dag-cbor" ' |
| 71 | IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-cbor) |
| 72 | ' |
| 73 | |
| 74 | test_expect_success "CID looks correct" ' |
| 75 | EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde" |
| 76 | test $EXPHASH = $IPLDHASH |
| 77 | ' |
| 78 | |
| 79 | test_expect_success "can add an ipld object using cid-base=base58btc" ' |
| 80 | IPLDb58HASH=$(cat ipld_object | ipfs dag put -cid-base=base58btc) |
| 81 | ' |
| 82 | |
| 83 | test_expect_success "CID looks correct" ' |
| 84 | EXPHASH="zdpuAoN1XJ3GsrxEzMuCbRKZzRUVJekJUCbPVgCgE4D9yYqVi" |
| 85 | test $EXPHASH = $IPLDb58HASH |
| 86 | ' |
| 87 | |
| 88 | # Same object, different forms |
| 89 | # (1) dag-cbor input |
| 90 | |
| 91 | test_expect_success "can add a dag-cbor input block stored as dag-cbor" ' |
| 92 | IPLDCBORHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-cbor) |
| 93 | ' |
| 94 | |
| 95 | test_expect_success "dag-cbor CID looks correct" ' |
| 96 | EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji" |
| 97 | test $EXPHASH = $IPLDCBORHASH |
| 98 | ' |
| 99 | |
| 100 | test_expect_success "can add a dag-cbor input block stored as dag-pb" ' |
| 101 | IPLDPBHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-pb) |
| 102 | ' |
| 103 | |
| 104 | test_expect_success "dag-pb CID looks correct" ' |
| 105 | EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom" |
| 106 | test $EXPHASH = $IPLDPBHASH |
| 107 | ' |
| 108 | |
| 109 | test_expect_success "can add a dag-cbor input block stored as dag-json" ' |
| 110 | IPLDJSONHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-json) |
| 111 | ' |
| 112 | |
| 113 | test_expect_success "dag-json CID looks correct" ' |
| 114 | EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq" |
| 115 | test $EXPHASH = $IPLDJSONHASH |
| 116 | ' |
| 117 | |
| 118 | # (2) dag-json input |
| 119 | |
| 120 | test_expect_success "can add a dag-json input block stored as dag-cbor" ' |
| 121 | IPLDCBORHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-cbor) |
| 122 | ' |
| 123 | |
| 124 | test_expect_success "dag-cbor CID looks correct" ' |
| 125 | EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji" |
| 126 | test $EXPHASH = $IPLDCBORHASH |
| 127 | ' |
| 128 | |
| 129 | test_expect_success "can add a dag-json input block stored as dag-pb" ' |
| 130 | IPLDPBHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-pb) |
| 131 | ' |
| 132 | |
| 133 | test_expect_success "dag-pb CID looks correct" ' |
| 134 | EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom" |
| 135 | test $EXPHASH = $IPLDPBHASH |
| 136 | ' |
| 137 | |
| 138 | test_expect_success "can add a dag-json input block stored as dag-json" ' |
| 139 | IPLDJSONHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-json) |
| 140 | ' |
| 141 | |
| 142 | test_expect_success "dag-json CID looks correct" ' |
| 143 | EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq" |
| 144 | test $EXPHASH = $IPLDJSONHASH |
| 145 | ' |
| 146 | |
| 147 | # (3) dag-pb input |
| 148 | |
| 149 | test_expect_success "can add a dag-pb input block stored as dag-cbor" ' |
| 150 | IPLDCBORHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-cbor) |
| 151 | ' |
| 152 | |
| 153 | test_expect_success "dag-cbor CID looks correct" ' |
| 154 | EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji" |
| 155 | test $EXPHASH = $IPLDCBORHASH |
| 156 | ' |
| 157 | |
| 158 | test_expect_success "can add a dag-pb input block stored as dag-pb" ' |
| 159 | IPLDPBHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-pb) |
| 160 | ' |
| 161 | |
| 162 | test_expect_success "dag-pb CID looks correct" ' |
| 163 | EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom" |
| 164 | test $EXPHASH = $IPLDPBHASH |
| 165 | ' |
| 166 | |
| 167 | test_expect_success "can add a dag-pb input block stored as dag-json" ' |
| 168 | IPLDJSONHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-json) |
| 169 | ' |
| 170 | |
| 171 | test_expect_success "dag-json CID looks correct" ' |
| 172 | EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq" |
| 173 | test $EXPHASH = $IPLDJSONHASH |
| 174 | ' |
| 175 | |
| 176 | test_expect_success "can get dag-cbor, dag-json, dag-pb blocks as dag-json" ' |
| 177 | ipfs dag get $IPLDCBORHASH >& dag-get-cbor && |
| 178 | ipfs dag get $IPLDJSONHASH >& dag-get-json && |
| 179 | ipfs dag get $IPLDPBHASH >& dag-get-pb |
| 180 | ' |
| 181 | |
| 182 | test_expect_success "can get dag-pb block transcoded as dag-cbor" ' |
| 183 | ipfs dag get --output-codec=dag-cbor $IPLDPBHASH >& dag-get-dagpb-transcoded-to-dagcbor && |
| 184 | echo "122082a2e4c892e7dcf1d491b30d68aa73ba76bec94f87d4e1a887596ce0730a534a" >sha2_dagpb_to_dagcbor_expected && |
| 185 | multihash -a=sha2-256 -e=hex dag-get-dagpb-transcoded-to-dagcbor >sha2_dagpb_to_dagcbor_actual && |
| 186 | test_cmp sha2_dagpb_to_dagcbor_expected sha2_dagpb_to_dagcbor_actual |
| 187 | ' |
| 188 | |
| 189 | test_expect_success "dag put and dag get transcodings match" ' |
| 190 | ROUNDTRIPDAGCBOR=$(ipfs dag put --input-codec=dag-cbor --store-codec=dag-cbor dag-get-dagpb-transcoded-to-dagcbor) && |
| 191 | test $ROUNDTRIPDAGCBOR = $IPLDCBORHASH |
| 192 | ' |
| 193 | |
| 194 | # this doesn't tell us if they are correct, we test that better below |
| 195 | test_expect_success "outputs are the same" ' |
| 196 | test_cmp dag-get-cbor dag-get-json && |
| 197 | test_cmp dag-get-cbor dag-get-pb |
| 198 | ' |
| 199 | |
| 200 | # Traversals using the original hello-world object |
| 201 | |
| 202 | test_expect_success "various path traversals work" ' |
| 203 | ipfs cat $IPLDHASH/cats/0 > out1 && |
| 204 | ipfs cat $IPLDHASH/cats/1/water > out2 && |
| 205 | ipfs cat $IPLDHASH/magic > out3 |
| 206 | ' |
| 207 | |
| 208 | test_expect_success "outputs look correct" ' |
| 209 | test_cmp file1 out1 && |
| 210 | test_cmp file2 out2 && |
| 211 | test_cmp file3 out3 |
| 212 | ' |
| 213 | |
| 214 | test_expect_success "resolving sub-objects works" ' |
| 215 | ipfs dag get $IPLDHASH/hello > sub1 && |
| 216 | ipfs dag get $IPLDHASH/sub > sub2 && |
| 217 | ipfs dag get $IPLDHASH/sub/beep > sub3 && |
| 218 | ipfs dag get $IPLDHASH/sub/beep/0 > sub4 && |
| 219 | ipfs dag get $IPLDHASH/sub/beep/1 > sub5 |
| 220 | ' |
| 221 | |
| 222 | test_expect_success "sub-objects look right" ' |
| 223 | echo -n "\"world\"" > sub1_exp && |
| 224 | test_cmp sub1_exp sub1 && |
| 225 | echo -n "{\"beep\":[0,\"bop\"],\"dict\":\"ionary\"}" > sub2_exp && |
| 226 | test_cmp sub2_exp sub2 && |
| 227 | echo -n "[0,\"bop\"]" > sub3_exp && |
| 228 | test_cmp sub3_exp sub3 && |
| 229 | echo -n "0" > sub4_exp && |
| 230 | test_cmp sub4_exp sub4 && |
| 231 | echo -n "\"bop\"" > sub5_exp && |
| 232 | test_cmp sub5_exp sub5 |
| 233 | ' |
| 234 | |
| 235 | test_expect_success "traversals using /ipld/ work" ' |
| 236 | ipfs dag get /ipld/$IPLDPBHASH/Data > ipld_path_Data_actual |
| 237 | ' |
| 238 | |
| 239 | test_expect_success "retrieved node looks right" ' |
| 240 | echo -n "{\"/\":{\"bytes\":\"AAECAwQ\"}}" > ipld_path_Data_expected |
| 241 | test_cmp ipld_path_Data_actual ipld_path_Data_expected |
| 242 | ' |
| 243 | |
| 244 | test_expect_success "can pin ipld object" ' |
| 245 | ipfs pin add $IPLDHASH |
| 246 | ' |
| 247 | |
| 248 | test_expect_success "can pin dag-pb object" ' |
| 249 | ipfs pin add $IPLDPBHASH |
| 250 | ' |
| 251 | |
| 252 | test_expect_success "can pin dag-cbor object" ' |
| 253 | ipfs pin add $IPLDCBORHASH |
| 254 | ' |
| 255 | |
| 256 | test_expect_success "can pin dag-json object" ' |
| 257 | ipfs pin add $IPLDJSONHASH |
| 258 | ' |
| 259 | |
| 260 | test_expect_success "after gc, objects still accessible" ' |
| 261 | ipfs repo gc > /dev/null && |
| 262 | ipfs refs -r --timeout=2s $IPLDJSONHASH > /dev/null |
| 263 | ' |
| 264 | |
| 265 | test_expect_success "can get object" ' |
| 266 | ipfs dag get $IPLDHASH > ipld_obj_out |
| 267 | ' |
| 268 | |
| 269 | test_expect_success "object links look right" ' |
| 270 | grep "{\"/\":\"" ipld_obj_out > /dev/null |
| 271 | ' |
| 272 | |
| 273 | test_expect_success "retrieved object hashes back correctly" ' |
| 274 | IPLDHASH2=$(cat ipld_obj_out | ipfs dag put --input-codec dag-json --store-codec dag-cbor) && |
| 275 | test "$IPLDHASH" = "$IPLDHASH2" |
| 276 | ' |
| 277 | |
| 278 | test_expect_success "add a normal file" ' |
| 279 | HASH=$(echo "foobar" | ipfs add -q) |
| 280 | ' |
| 281 | |
| 282 | test_expect_success "can view protobuf object with dag get" ' |
| 283 | ipfs dag get $HASH > dag_get_pb_out |
| 284 | ' |
| 285 | |
| 286 | test_expect_success "output looks correct" ' |
| 287 | echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISB2Zvb2JhcgoYBw\"}},\"Links\":[]}" > dag_get_pb_exp && |
| 288 | test_cmp dag_get_pb_exp dag_get_pb_out |
| 289 | ' |
| 290 | |
| 291 | test_expect_success "can call dag get with a path" ' |
| 292 | ipfs dag get $IPLDHASH/cats/0 > cat_out |
| 293 | ' |
| 294 | |
| 295 | test_expect_success "output looks correct" ' |
| 296 | echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISBGZvbwoYBA\"}},\"Links\":[]}" > cat_exp && |
| 297 | test_cmp cat_exp cat_out |
| 298 | ' |
| 299 | |
| 300 | test_expect_success "non-canonical dag-cbor input is normalized" ' |
| 301 | HASH=$(cat ../t0053-dag-data/non-canon.cbor | ipfs dag put --store-codec dag-cbor --input-codec dag-cbor) && |
| 302 | test $HASH = "bafyreiawx7ona7oa2ptcoh6vwq4q6bmd7x2ibtkykld327bgb7t73ayrqm" || |
| 303 | test_fsh echo $HASH |
| 304 | ' |
| 305 | |
| 306 | test_expect_success "cbor input can be fetched" ' |
| 307 | EXPARR=$(ipfs dag get $HASH/arr) |
| 308 | test $EXPARR = "[]" |
| 309 | ' |
| 310 | |
| 311 | test_expect_success "add an ipld with pin" ' |
| 312 | PINHASH=$(printf {\"foo\":\"bar\"} | ipfs dag put --input-codec dag-json --pin=true) |
| 313 | ' |
| 314 | |
| 315 | test_expect_success "after gc, objects still accessible" ' |
| 316 | ipfs repo gc > /dev/null && |
| 317 | ipfs refs -r --timeout=2s $PINHASH > /dev/null |
| 318 | ' |
| 319 | |
| 320 | test_expect_success "can add an ipld object with sha3-512 hash" ' |
| 321 | IPLDHASH=$(cat ipld_object | ipfs dag put --hash sha3-512) |
| 322 | ' |
| 323 | |
| 324 | test_expect_success "output looks correct" ' |
| 325 | EXPHASH="bafyriqforjma7y7akqz7nhuu73r6liggj5zhkbfiqgicywe3fgkna2ijlhod2af3ue7doj56tlzt5hh6iu5esafc4msr3sd53jol5m2o25ucy" |
| 326 | test $EXPHASH = $IPLDHASH |
| 327 | ' |
| 328 | |
| 329 | test_expect_success "prepare dag-pb object" ' |
| 330 | echo foo > test_file && |
| 331 | HASH=$(ipfs add -wQ test_file | ipfs cid base32) |
| 332 | ' |
| 333 | |
| 334 | test_expect_success "dag put with json dag-pb works" ' |
| 335 | ipfs dag get $HASH > pbjson && |
| 336 | cat pbjson | ipfs dag put --store-codec=dag-pb --input-codec=dag-json > dag_put_out |
| 337 | ' |
| 338 | |
| 339 | test_expect_success "dag put with dag-pb works output looks good" ' |
| 340 | echo $HASH > dag_put_exp && |
| 341 | test_cmp dag_put_exp dag_put_out |
| 342 | ' |
| 343 | |
| 344 | test_expect_success "dag put with raw dag-pb works" ' |
| 345 | ipfs block get $HASH > pbraw && |
| 346 | cat pbraw | ipfs dag put --store-codec=dag-pb --input-codec=dag-pb > dag_put_out |
| 347 | ' |
| 348 | |
| 349 | test_expect_success "dag put with dag-pb works output looks good" ' |
| 350 | echo $HASH > dag_put_exp && |
| 351 | test_cmp dag_put_exp dag_put_out |
| 352 | ' |
| 353 | |
| 354 | test_expect_success "dag put with raw node works" ' |
| 355 | echo "foo bar" > raw_node_in && |
| 356 | HASH=$(ipfs dag put --store-codec=raw --input-codec=raw -- raw_node_in) && |
| 357 | ipfs block get "$HASH" > raw_node_out && |
| 358 | test_cmp raw_node_in raw_node_out' |
| 359 | |
| 360 | test_expect_success "dag put multiple files" ' |
| 361 | printf {\"foo\":\"bar\"} > a.json && |
| 362 | printf {\"foo\":\"baz\"} > b.json && |
| 363 | ipfs dag put a.json b.json > dag_put_out |
| 364 | ' |
| 365 | |
| 366 | test_expect_success "dag put multiple files output looks good" ' |
| 367 | echo bafyreiblaotetvwobe7cu2uqvnddr6ew2q3cu75qsoweulzku2egca4dxq > dag_put_exp && |
| 368 | echo bafyreibqp7zvp6dvrqhtkbwuzzk7jhtmfmngtiqjajqpm6gtw55o7kqzfi >> dag_put_exp && |
| 369 | |
| 370 | test_cmp dag_put_exp dag_put_out |
| 371 | ' |
| 372 | |
| 373 | test_expect_success "prepare data for dag resolve" ' |
| 374 | NESTED_HASH=$(echo "{\"data\":123}" | ipfs dag put) && |
| 375 | HASH=$(echo "{\"obj\":{\"/\":\"${NESTED_HASH}\"}}" | ipfs dag put) |
| 376 | ' |
| 377 | |
| 378 | test_expect_success "dag resolve some things" ' |
| 379 | ipfs dag resolve $HASH > resolve_hash && |
| 380 | ipfs dag resolve ${HASH}/obj > resolve_obj && |
| 381 | ipfs dag resolve ${HASH}/obj/data > resolve_data |
| 382 | ' |
| 383 | |
| 384 | test_expect_success "dag resolve output looks good" ' |
| 385 | printf $HASH > resolve_hash_exp && |
| 386 | printf $NESTED_HASH > resolve_obj_exp && |
| 387 | printf $NESTED_HASH/data > resolve_data_exp && |
| 388 | |
| 389 | test_cmp resolve_hash_exp resolve_hash && |
| 390 | test_cmp resolve_obj_exp resolve_obj && |
| 391 | test_cmp resolve_data_exp resolve_data |
| 392 | ' |
| 393 | |
| 394 | test_expect_success "get base32 version of hashes for testing" ' |
| 395 | HASHb32=$(ipfs cid base32 $HASH) && |
| 396 | NESTED_HASHb32=$(ipfs cid base32 $NESTED_HASH) |
| 397 | ' |
| 398 | |
| 399 | test_expect_success "dag resolve some things with --cid-base=base32" ' |
| 400 | ipfs dag resolve $HASH --cid-base=base32 > resolve_hash && |
| 401 | ipfs dag resolve ${HASH}/obj --cid-base=base32 > resolve_obj && |
| 402 | ipfs dag resolve ${HASH}/obj/data --cid-base=base32 > resolve_data |
| 403 | ' |
| 404 | |
| 405 | test_expect_success "dag resolve output looks good with --cid-base=base32" ' |
| 406 | printf $HASHb32 > resolve_hash_exp && |
| 407 | printf $NESTED_HASHb32 > resolve_obj_exp && |
| 408 | printf $NESTED_HASHb32/data > resolve_data_exp && |
| 409 | |
| 410 | test_cmp resolve_hash_exp resolve_hash && |
| 411 | test_cmp resolve_obj_exp resolve_obj && |
| 412 | test_cmp resolve_data_exp resolve_data |
| 413 | ' |
| 414 | |
| 415 | test_expect_success "dag resolve some things with base32 hash" ' |
| 416 | ipfs dag resolve $HASHb32 > resolve_hash && |
| 417 | ipfs dag resolve ${HASHb32}/obj > resolve_obj && |
| 418 | ipfs dag resolve ${HASHb32}/obj/data > resolve_data |
| 419 | ' |
| 420 | |
| 421 | test_expect_success "dag resolve output looks good with base32 hash" ' |
| 422 | printf $HASHb32 > resolve_hash_exp && |
| 423 | printf $NESTED_HASHb32 > resolve_obj_exp && |
| 424 | printf $NESTED_HASHb32/data > resolve_data_exp && |
| 425 | |
| 426 | test_cmp resolve_hash_exp resolve_hash && |
| 427 | test_cmp resolve_obj_exp resolve_obj && |
| 428 | test_cmp resolve_data_exp resolve_data |
| 429 | ' |
| 430 | |
| 431 | |
| 432 | } |
| 433 | |
| 434 | # should work offline |
| 435 | test_dag_cmd |
| 436 | |
| 437 | # should work online |
| 438 | test_launch_ipfs_daemon |
| 439 | test_dag_cmd |
| 440 | test_kill_ipfs_daemon |
| 441 | |
| 442 | test_done |