t0272-urlstore.sh 4.81 KB
Newer Older
Kevin Atkinson's avatar
Kevin Atkinson committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/bin/env bash
#
# Copyright (c) 2017 Jeromy Johnson
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test out the urlstore functionality"

. lib/test-lib.sh

test_init_ipfs

test_expect_success "create some random files" '
  random 2222     7 > file1 &&
Kevin Atkinson's avatar
Kevin Atkinson committed
15 16
  random 500000   7 > file2 &&
  random 50000000 7 > file3
Kevin Atkinson's avatar
Kevin Atkinson committed
17 18 19 20
'

test_expect_success "add files using trickle dag format without raw leaves" '
  HASH1a=$(ipfs add -q --trickle --raw-leaves=false file1) &&
Kevin Atkinson's avatar
Kevin Atkinson committed
21 22
  HASH2a=$(ipfs add -q --trickle --raw-leaves=false file2) &&
  HASH3a=$(ipfs add -q --trickle --raw-leaves=false file3)
Kevin Atkinson's avatar
Kevin Atkinson committed
23 24 25 26 27 28 29
'
test_launch_ipfs_daemon --offline

test_expect_success "make sure files can be retrived via the gateway" '
  curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a -o file1.actual &&
  test_cmp file1 file1.actual &&
  curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a -o file2.actual &&
Kevin Atkinson's avatar
Kevin Atkinson committed
30 31 32
  test_cmp file2 file2.actual &&
  curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH3a -o file3.actual &&
  test_cmp file3 file3.actual 
Kevin Atkinson's avatar
Kevin Atkinson committed
33 34
'

35 36 37 38 39 40 41 42 43 44 45 46 47
test_expect_success "add files without enabling url store" '
  test_must_fail ipfs urlstore add http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a &&
  test_must_fail ipfs urlstore add http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a
'

test_kill_ipfs_daemon

test_expect_success "enable urlstore" '
  ipfs config --json Experimental.UrlstoreEnabled true
'

test_launch_ipfs_daemon --offline

Kevin Atkinson's avatar
Kevin Atkinson committed
48 49
test_expect_success "add files using gateway address via url store" '
  HASH1=$(ipfs urlstore add http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a) &&
Kevin Atkinson's avatar
Kevin Atkinson committed
50 51
  HASH2=$(ipfs urlstore add http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a) &&
  ipfs pin add $HASH1 $HASH2
Kevin Atkinson's avatar
Kevin Atkinson committed
52 53 54
'

test_expect_success "make sure hashes are different" '
Kevin Atkinson's avatar
Kevin Atkinson committed
55 56
  test $HASH1a != $HASH1 &&
  test $HASH2a != $HASH2
Kevin Atkinson's avatar
Kevin Atkinson committed
57 58 59 60 61 62 63 64 65
'

test_expect_success "get files via urlstore" '
  ipfs get $HASH1 -o file1.actual &&
  test_cmp file1 file1.actual &&
  ipfs get $HASH2 -o file2.actual &&
  test_cmp file2 file2.actual
'

Kevin Atkinson's avatar
Kevin Atkinson committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
cat <<EOF | sort > ls_expect
zb2rhX1q5oFFzEkPNsTe1Y8osUdFqSQGjUWRZsqC9fbY6WVSk  262144 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 0
zb2rhYbKFn1UWGHXaAitcdVTkDGTykX8RFpGWzRFuLpoe9VE4  237856 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 262144
zb2rhjddJ5DNzBrFu8G6CP1ApY25BukwCeskXHzN1H18CiVVZ    2222 http://127.0.0.1:$GWAY_PORT/ipfs/QmcHm3BL2cXuQ6rJdKQgPrmT9suqGkfy2KzH3MkXPEBXU6 0
EOF

test_expect_success "ipfs filestore ls works with urls" '
  ipfs filestore ls | sort > ls_actual &&
  test_cmp ls_expect ls_actual
'

cat <<EOF | sort > verify_expect
ok      zb2rhX1q5oFFzEkPNsTe1Y8osUdFqSQGjUWRZsqC9fbY6WVSk  262144 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 0
ok      zb2rhYbKFn1UWGHXaAitcdVTkDGTykX8RFpGWzRFuLpoe9VE4  237856 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 262144
ok      zb2rhjddJ5DNzBrFu8G6CP1ApY25BukwCeskXHzN1H18CiVVZ    2222 http://127.0.0.1:$GWAY_PORT/ipfs/QmcHm3BL2cXuQ6rJdKQgPrmT9suqGkfy2KzH3MkXPEBXU6 0
EOF

test_expect_success "ipfs filestore verify works with urls" '
  ipfs filestore verify | sort > verify_actual &&
  test_cmp verify_expect verify_actual
'

Kevin Atkinson's avatar
Kevin Atkinson committed
88 89
test_expect_success "remove original hashes from local gateway" '
  ipfs pin rm $HASH1a $HASH2a &&
Kevin Atkinson's avatar
Kevin Atkinson committed
90
  ipfs repo gc > /dev/null
Kevin Atkinson's avatar
Kevin Atkinson committed
91 92 93 94 95 96 97
'

test_expect_success "gatway no longer has files" '
  test_must_fail curl -f http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a -o file1.actual
  test_must_fail curl -f http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a -o file2.actual
'

Kevin Atkinson's avatar
Kevin Atkinson committed
98 99 100 101 102 103 104 105 106 107 108
cat <<EOF | sort > verify_expect_2
error   zb2rhX1q5oFFzEkPNsTe1Y8osUdFqSQGjUWRZsqC9fbY6WVSk  262144 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 0
error   zb2rhYbKFn1UWGHXaAitcdVTkDGTykX8RFpGWzRFuLpoe9VE4  237856 http://127.0.0.1:$GWAY_PORT/ipfs/QmUow2T4P69nEsqTQDZCt8yg9CPS8GFmpuDAr5YtsPhTdM 262144
error   zb2rhjddJ5DNzBrFu8G6CP1ApY25BukwCeskXHzN1H18CiVVZ    2222 http://127.0.0.1:$GWAY_PORT/ipfs/QmcHm3BL2cXuQ6rJdKQgPrmT9suqGkfy2KzH3MkXPEBXU6 0
EOF

test_expect_success "ipfs filestore verify is correct" '
  ipfs filestore verify | sort > verify_actual_2 &&
  test_cmp verify_expect_2 verify_actual_2
'

Kevin Atkinson's avatar
Kevin Atkinson committed
109 110 111
test_expect_success "files can not be retrieved via the urlstore" '
  test_must_fail ipfs cat $HASH1 > /dev/null &&
  test_must_fail ipfs cat $HASH2 > /dev/null
Kevin Atkinson's avatar
Kevin Atkinson committed
112 113
'

Kevin Atkinson's avatar
Kevin Atkinson committed
114 115 116 117
test_expect_success "add large file using gateway address via url store" '
  HASH3=$(ipfs urlstore add http://127.0.0.1:$GWAY_PORT/ipfs/$HASH3a)
'

Kevin Atkinson's avatar
Kevin Atkinson committed
118 119 120 121
test_expect_success "make sure hashes are different" '
  test $HASH3a != $HASH3
'

Kevin Atkinson's avatar
Kevin Atkinson committed
122 123 124 125 126
test_expect_success "get large file via urlstore" '
  ipfs get $HASH3 -o file3.actual &&
  test_cmp file3 file3.actual
'

Kevin Atkinson's avatar
Kevin Atkinson committed
127 128
test_kill_ipfs_daemon

Kevin Atkinson's avatar
Kevin Atkinson committed
129
test_expect_success "files can not be retrieved via the urlstore" '
Kevin Atkinson's avatar
Kevin Atkinson committed
130 131 132
  test_must_fail ipfs cat $HASH1 > /dev/null &&
  test_must_fail ipfs cat $HASH2 > /dev/null &&
  test_must_fail ipfs cat $HASH3 > /dev/null
Kevin Atkinson's avatar
Kevin Atkinson committed
133 134
'

Kevin Atkinson's avatar
Kevin Atkinson committed
135
test_done