11use data_encoding:: HEXUPPER ;
2+ use libp2p_identity:: PeerId ;
23use multiaddr:: * ;
3- use multihash:: MultihashGeneric ;
4+ use multihash:: Multihash ;
45use quickcheck:: { Arbitrary , Gen , QuickCheck } ;
56use std:: {
67 borrow:: Cow ,
@@ -122,7 +123,7 @@ impl Arbitrary for Proto {
122123 . unwrap ( ) ;
123124 Proto ( Onion3 ( ( a, std:: cmp:: max ( 1 , u16:: arbitrary ( g) ) ) . into ( ) ) )
124125 }
125- 17 => Proto ( P2p ( Mh :: arbitrary ( g) . 0 ) ) ,
126+ 17 => Proto ( P2p ( PId :: arbitrary ( g) . 0 ) ) ,
126127 18 => Proto ( P2pCircuit ) ,
127128 19 => Proto ( Quic ) ,
128129 20 => Proto ( QuicV1 ) ,
@@ -143,13 +144,24 @@ impl Arbitrary for Proto {
143144}
144145
145146#[ derive( Clone , Debug ) ]
146- struct Mh ( MultihashGeneric < 64 > ) ;
147+ struct Mh ( Multihash < 64 > ) ;
147148
148149impl Arbitrary for Mh {
149150 fn arbitrary ( g : & mut Gen ) -> Self {
150151 let mut hash: [ u8 ; 32 ] = [ 0 ; 32 ] ;
151152 hash. fill_with ( || u8:: arbitrary ( g) ) ;
152- Mh ( MultihashGeneric :: wrap ( 0x0 , & hash) . expect ( "The digest size is never too large" ) )
153+ Mh ( Multihash :: wrap ( 0x0 , & hash) . expect ( "The digest size is never too large" ) )
154+ }
155+ }
156+
157+ #[ derive( Clone , Debug ) ]
158+ struct PId ( PeerId ) ;
159+
160+ impl Arbitrary for PId {
161+ fn arbitrary ( g : & mut Gen ) -> Self {
162+ let mh = Mh :: arbitrary ( g) ;
163+
164+ PId ( PeerId :: from_multihash ( mh. 0 ) . expect ( "identity multihash works if digest size < 64" ) )
153165 }
154166}
155167
@@ -177,8 +189,8 @@ fn ma_valid(source: &str, target: &str, protocols: Vec<Protocol<'_>>) {
177189 ) ;
178190}
179191
180- fn multihash ( s : & str ) -> MultihashGeneric < 64 > {
181- MultihashGeneric :: from_bytes ( & multibase :: Base :: Base58Btc . decode ( s ) . unwrap ( ) ) . unwrap ( )
192+ fn peer_id ( s : & str ) -> PeerId {
193+ s . parse ( ) . unwrap ( )
182194}
183195
184196#[ test]
@@ -231,7 +243,7 @@ fn construct_success() {
231243 ma_valid (
232244 "/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
233245 "A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
234- vec ! [ P2p ( multihash (
246+ vec ! [ P2p ( peer_id (
235247 "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
236248 ) ) ] ,
237249 ) ;
@@ -253,7 +265,7 @@ fn construct_success() {
253265 "/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
254266 "A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B0604D2" ,
255267 vec ! [
256- P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ,
268+ P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ,
257269 Tcp ( 1234 ) ,
258270 ] ,
259271 ) ;
@@ -277,30 +289,30 @@ fn construct_success() {
277289 "047F000001A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
278290 vec ! [
279291 Ip4 ( local) ,
280- P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ,
292+ P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ,
281293 ] ,
282294 ) ;
283295 ma_valid ( "/ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234" ,
284296 "047F000001A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B0604D2" ,
285- vec ! [ Ip4 ( local) , P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) , Tcp ( 1234 ) ] ) ;
297+ vec ! [ Ip4 ( local) , P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) , Tcp ( 1234 ) ] ) ;
286298 // /unix/a/b/c/d/e,
287299 // /unix/stdio,
288300 // /ip4/1.2.3.4/tcp/80/unix/a/b/c/d/e/f,
289301 // /ip4/127.0.0.1/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234/unix/stdio
290302 ma_valid ( "/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/ws/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
291303 "29200108A07AC542013AC986FFFE317095061F40DD03A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
292- vec ! [ Ip6 ( addr6) , Tcp ( 8000 ) , Ws ( "/" . into( ) ) , P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) )
304+ vec ! [ Ip6 ( addr6) , Tcp ( 8000 ) , Ws ( "/" . into( ) ) , P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) )
293305 ] ) ;
294306 ma_valid ( "/p2p-webrtc-star/ip4/127.0.0.1/tcp/9090/ws/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
295307 "9302047F000001062382DD03A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
296- vec ! [ P2pWebRtcStar , Ip4 ( local) , Tcp ( 9090 ) , Ws ( "/" . into( ) ) , P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) )
308+ vec ! [ P2pWebRtcStar , Ip4 ( local) , Tcp ( 9090 ) , Ws ( "/" . into( ) ) , P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) )
297309 ] ) ;
298310 ma_valid ( "/ip6/2001:8a0:7ac5:4201:3ac9:86ff:fe31:7095/tcp/8000/wss/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
299311 "29200108A07AC542013AC986FFFE317095061F40DE03A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
300- vec ! [ Ip6 ( addr6) , Tcp ( 8000 ) , Wss ( "/" . into( ) ) , P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ] ) ;
312+ vec ! [ Ip6 ( addr6) , Tcp ( 8000 ) , Wss ( "/" . into( ) ) , P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ] ) ;
301313 ma_valid ( "/ip4/127.0.0.1/tcp/9090/p2p-circuit/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ,
302314 "047F000001062382A202A503221220D52EBB89D85B02A284948203A62FF28389C57C9F42BEEC4EC20DB76A68911C0B" ,
303- vec ! [ Ip4 ( local) , Tcp ( 9090 ) , P2pCircuit , P2p ( multihash ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ] ) ;
315+ vec ! [ Ip4 ( local) , Tcp ( 9090 ) , P2pCircuit , P2p ( peer_id ( "QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC" ) ) ] ) ;
304316
305317 ma_valid (
306318 "/onion/aaimaq4ygg2iegci:80" ,
@@ -332,7 +344,7 @@ fn construct_success() {
332344 ma_valid (
333345 "/dnsaddr/sjc-1.bootstrap.libp2p.io/tcp/1234/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN" ,
334346 "3819736A632D312E626F6F7473747261702E6C69627032702E696F0604D2A50322122006B3608AA000274049EB28AD8E793A26FF6FAB281A7D3BD77CD18EB745DFAABB" ,
335- vec ! [ Dnsaddr ( Cow :: Borrowed ( "sjc-1.bootstrap.libp2p.io" ) ) , Tcp ( 1234 ) , P2p ( multihash ( "QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN" ) ) ]
347+ vec ! [ Dnsaddr ( Cow :: Borrowed ( "sjc-1.bootstrap.libp2p.io" ) ) , Tcp ( 1234 ) , P2p ( peer_id ( "QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN" ) ) ]
336348 ) ;
337349 ma_valid (
338350 "/ip4/127.0.0.1/tcp/127/ws" ,
@@ -371,7 +383,7 @@ fn construct_success() {
371383 Ip4 ( local) ,
372384 Udp ( 1234 ) ,
373385 WebRTCDirect ,
374- Certhash ( MultihashGeneric :: from_bytes( & decoded) . unwrap( ) ) ,
386+ Certhash ( Multihash :: from_bytes( & decoded) . unwrap( ) ) ,
375387 ] ,
376388 ) ;
377389
@@ -390,7 +402,7 @@ fn construct_success() {
390402 Ip4 ( local) ,
391403 Udp ( 1234 ) ,
392404 WebTransport ,
393- Certhash ( MultihashGeneric :: from_bytes( & decoded) . unwrap( ) ) ,
405+ Certhash ( Multihash :: from_bytes( & decoded) . unwrap( ) ) ,
394406 ] ,
395407 ) ;
396408}
0 commit comments