master
sh 103 lines 2.79 KB
Raw
1 #!/usr/bin/env bash
2
3 test_description="Test multibase commands"
4
5 . lib/test-lib.sh
6
7 # note: all "ipfs multibase" commands should work without requiring a repo
8
9 cat <<EOF > bases_expect
10 0 identity
11 0 48 base2
12 b 98 base32
13 B 66 base32upper
14 c 99 base32pad
15 C 67 base32padupper
16 f 102 base16
17 F 70 base16upper
18 k 107 base36
19 K 75 base36upper
20 m 109 base64
21 M 77 base64pad
22 t 116 base32hexpad
23 T 84 base32hexpadupper
24 u 117 base64url
25 U 85 base64urlpad
26 v 118 base32hex
27 V 86 base32hexupper
28 z 122 base58btc
29 Z 90 base58flickr
30 128640 base256emoji
31 EOF
32
33 # TODO: expose same cmd under multibase?
34 test_expect_success "multibase list" '
35 cut -c 12- bases_expect > expect &&
36 ipfs multibase list > actual &&
37 test_cmp expect actual
38 '
39
40 test_expect_success "multibase encode works (stdin)" '
41 echo -n uaGVsbG8 > expected &&
42 echo -n hello | ipfs multibase encode > actual &&
43 test_cmp actual expected
44 '
45
46 test_expect_success "multibase encode works (file)" '
47 echo -n hello > file &&
48 echo -n uaGVsbG8 > expected &&
49 ipfs multibase encode ./file > actual &&
50 test_cmp actual expected
51 '
52
53 test_expect_success "multibase encode -b (custom base)" '
54 echo -n f68656c6c6f > expected &&
55 echo -n hello | ipfs multibase encode -b base16 > actual &&
56 test_cmp actual expected
57 '
58
59 test_expect_success "multibase decode works (stdin)" '
60 echo -n hello > expected &&
61 echo -n uaGVsbG8 | ipfs multibase decode > actual &&
62 test_cmp actual expected
63 '
64
65 test_expect_success "multibase decode works (file)" '
66 echo -n uaGVsbG8 > file &&
67 echo -n hello > expected &&
68 ipfs multibase decode ./file > actual &&
69 test_cmp actual expected
70 '
71
72 test_expect_success "multibase encode+decode roundtrip" '
73 echo -n hello > expected &&
74 cat expected | ipfs multibase encode -b base64 | ipfs multibase decode > actual &&
75 test_cmp actual expected
76 '
77
78 test_expect_success "mutlibase transcode works (stdin)" '
79 echo -n f68656c6c6f > expected &&
80 echo -n uaGVsbG8 | ipfs multibase transcode -b base16 > actual &&
81 test_cmp actual expected
82 '
83
84 test_expect_success "multibase transcode works (file)" '
85 echo -n uaGVsbG8 > file &&
86 echo -n f68656c6c6f > expected &&
87 ipfs multibase transcode ./file -b base16> actual &&
88 test_cmp actual expected
89 '
90
91 test_expect_success "multibase error on unknown multibase prefix" '
92 echo "Error: failed to decode multibase: selected encoding not supported" > expected &&
93 echo -n ę-that-should-do-the-trick | ipfs multibase decode 2> actual ;
94 test_cmp actual expected
95 '
96
97 test_expect_success "multibase error on a character outside of the base" "
98 echo \"Error: failed to decode multibase: encoding/hex: invalid byte: U+007A 'z'\" > expected &&
99 echo -n f6c6f6cz | ipfs multibase decode 2> actual ;
100 test_cmp actual expected
101 "
102
103 test_done