@@ -23,6 +23,14 @@ const dnsaddrStub2 = [
23
23
[ 'dnsaddr=/ip6/2604:1380:2000:7a00::1/udp/4001/quic/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb' ]
24
24
]
25
25
26
+ const dnsaddrStub3 = [
27
+ [ 'dnsaddr=/dnsaddr/sv15.bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN' ] ,
28
+ [ 'dnsaddr=/dnsaddr/ny5.bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa' ] ,
29
+ [ 'dnsaddr_record_value' ] ,
30
+ [ 'dnsaddr=/dnsaddr/am6.bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb' ] ,
31
+ [ 'dnsaddr=/dnsaddr/sg1.bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt' ]
32
+ ]
33
+
26
34
describe ( 'multiaddr resolve' , ( ) => {
27
35
it ( 'should throw if no resolver is available' , async ( ) => {
28
36
const ma = multiaddr ( '/dnsaddr/bootstrap.libp2p.io' )
@@ -98,6 +106,20 @@ describe('multiaddr resolve', () => {
98
106
} )
99
107
} )
100
108
109
+ it ( 'can resolve dnsaddr with bad record' , async ( ) => {
110
+ const ma = multiaddr ( '/dnsaddr/am6.bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb' )
111
+
112
+ const stub = sinon . stub ( Resolver . prototype , 'resolveTxt' )
113
+ stub . onCall ( 0 ) . returns ( Promise . resolve ( dnsaddrStub3 ) )
114
+
115
+ // Resolve
116
+ const resolvedMas = await ma . resolve ( )
117
+
118
+ // Should only have one address with the same peer id and should ignore the bad record
119
+ expect ( resolvedMas ) . to . have . lengthOf ( 1 )
120
+ expect ( resolvedMas [ 0 ] . toString ( ) ) . to . equal ( ma . toString ( ) )
121
+ } )
122
+
101
123
it ( 'can cancel resolving' , async ( ) => {
102
124
const ma = multiaddr ( '/dnsaddr/bootstrap.libp2p.ii/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nc' )
103
125
const controller = new AbortController ( )
0 commit comments