7
7
"strings"
8
8
"testing"
9
9
"time"
10
+
11
+ "github.com/ipfs/go-cid"
12
+ mh "github.com/multiformats/go-multihash"
10
13
)
11
14
12
15
func newMultiaddr (t * testing.T , a string ) Multiaddr {
@@ -126,28 +129,42 @@ func TestConstructSucceeds(t *testing.T) {
126
129
"/udp/65535" ,
127
130
"/tcp/65535" ,
128
131
"/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
132
+ "/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7" ,
129
133
"/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
134
+ "/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7" ,
135
+ "/p2p/bafzbeigvf25ytwc3akrijfecaotc74udrhcxzh2cx3we5qqnw5vgrei4bm" ,
136
+ "/p2p/12D3KooWCryG7Mon9orvQxcS1rYZjotPgpwoJNHHKcLLfE4Hf5mV" ,
137
+ "/p2p/k51qzi5uqu5dhb6l8spkdx7yxafegfkee5by8h7lmjh2ehc2sgg34z7c15vzqs" ,
138
+ "/p2p/bafzaajaiaejcalj543iwv2d7pkjt7ykvefrkfu7qjfi6sduakhso4lay6abn2d5u" ,
130
139
"/udp/1234/sctp/1234" ,
131
140
"/udp/1234/udt" ,
132
141
"/udp/1234/utp" ,
133
142
"/tcp/1234/http" ,
134
143
"/tcp/1234/https" ,
135
144
"/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
145
+ "/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234" ,
136
146
"/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
147
+ "/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234" ,
137
148
"/ip4/127.0.0.1/udp/1234" ,
138
149
"/ip4/127.0.0.1/udp/0" ,
139
150
"/ip4/127.0.0.1/tcp/1234" ,
140
151
"/ip4/127.0.0.1/tcp/1234/" ,
141
152
"/ip4/127.0.0.1/udp/1234/quic" ,
142
153
"/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
143
154
"/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
155
+ "/ip4/127.0.0.1/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7" ,
156
+ "/ip4/127.0.0.1/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234" ,
144
157
"/ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
145
158
"/ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
159
+ "/ip4/127.0.0.1/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7" ,
160
+ "/ip4/127.0.0.1/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234" ,
146
161
"/unix/a/b/c/d/e" ,
147
162
"/unix/stdio" ,
148
163
"/ip4/1.2.3.4/tcp/80/unix/a/b/c/d/e/f" ,
149
164
"/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234/unix/stdio" ,
165
+ "/ip4/127.0.0.1/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234/unix/stdio" ,
150
166
"/ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234/unix/stdio" ,
167
+ "/ip4/127.0.0.1/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7/tcp/1234/unix/stdio" ,
151
168
"/ip4/127.0.0.1/tcp/9090/http/p2p-webrtc-direct" ,
152
169
"/ip4/127.0.0.1/tcp/127/ws" ,
153
170
"/ip4/127.0.0.1/tcp/127/ws" ,
@@ -544,7 +561,7 @@ func TestIPFSvP2P(t *testing.T) {
544
561
}
545
562
}
546
563
547
- func TestInvalidP2PAddr (t * testing.T ) {
564
+ func TestInvalidP2PAddrBytes (t * testing.T ) {
548
565
badAddr := "a503221221c05877cbae039d70a5e600ea02c6f9f2942439285c9e344e26f8d280c850fad6"
549
566
bts , err := hex .DecodeString (badAddr )
550
567
if err != nil {
@@ -558,6 +575,31 @@ func TestInvalidP2PAddr(t *testing.T) {
558
575
}
559
576
}
560
577
578
+ func TestInvalidP2PAddrString (t * testing.T ) {
579
+ hashedData , err := mh .Sum ([]byte ("test" ), mh .SHA2_256 , - 1 )
580
+ if err != nil {
581
+ t .Fatal (err )
582
+ }
583
+
584
+ // using MD5 since it's not a valid data codec
585
+ unknownCodecCID := cid .NewCidV1 (mh .MD5 , hashedData ).String ()
586
+
587
+ badStringAddrs := []string {
588
+ "/p2p/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl-" , // invalid multibase encoding
589
+ "/p2p/?unknownmultibase" , // invalid multibase encoding
590
+ "/p2p/k2jmtxwoe2phm1hbqp0e7nufqf6umvuu2e9qd7ana7h411a0haqj6i2z" , // non-libp2p-key codec
591
+ "/p2p/" + unknownCodecCID , // impossible codec
592
+ }
593
+ for _ , a := range badStringAddrs {
594
+ ma , err := NewMultiaddr (a )
595
+ if err == nil {
596
+ t .Error ("should have failed" )
597
+ // Check for panic
598
+ _ = ma .String ()
599
+ }
600
+ }
601
+ }
602
+
561
603
func TestZone (t * testing.T ) {
562
604
ip6String := "/ip6zone/eth0/ip6/::1"
563
605
ip6Bytes := []byte {
0 commit comments