@@ -53,7 +53,8 @@ describe('Identify', () => {
53
53
peerId : localPeer ,
54
54
connectionManager : new EventEmitter ( ) ,
55
55
peerStore : new PeerStore ( { peerId : localPeer } ) ,
56
- multiaddrs : listenMaddrs
56
+ multiaddrs : listenMaddrs ,
57
+ _options : { host : { } }
57
58
} ,
58
59
protocols
59
60
} )
@@ -63,7 +64,8 @@ describe('Identify', () => {
63
64
peerId : remotePeer ,
64
65
connectionManager : new EventEmitter ( ) ,
65
66
peerStore : new PeerStore ( { peerId : remotePeer } ) ,
66
- multiaddrs : listenMaddrs
67
+ multiaddrs : listenMaddrs ,
68
+ _options : { host : { } }
67
69
} ,
68
70
protocols
69
71
} )
@@ -106,7 +108,8 @@ describe('Identify', () => {
106
108
peerId : localPeer ,
107
109
connectionManager : new EventEmitter ( ) ,
108
110
peerStore : new PeerStore ( { peerId : localPeer } ) ,
109
- multiaddrs : listenMaddrs
111
+ multiaddrs : listenMaddrs ,
112
+ _options : { host : { } }
110
113
} ,
111
114
protocols
112
115
} )
@@ -116,7 +119,8 @@ describe('Identify', () => {
116
119
peerId : remotePeer ,
117
120
connectionManager : new EventEmitter ( ) ,
118
121
peerStore : new PeerStore ( { peerId : remotePeer } ) ,
119
- multiaddrs : listenMaddrs
122
+ multiaddrs : listenMaddrs ,
123
+ _options : { host : { } }
120
124
} ,
121
125
protocols
122
126
} )
@@ -165,7 +169,8 @@ describe('Identify', () => {
165
169
peerId : localPeer ,
166
170
connectionManager : new EventEmitter ( ) ,
167
171
peerStore : new PeerStore ( { peerId : localPeer } ) ,
168
- multiaddrs : [ ]
172
+ multiaddrs : [ ] ,
173
+ _options : { host : { } }
169
174
} ,
170
175
protocols
171
176
} )
@@ -174,7 +179,8 @@ describe('Identify', () => {
174
179
peerId : remotePeer ,
175
180
connectionManager : new EventEmitter ( ) ,
176
181
peerStore : new PeerStore ( { peerId : remotePeer } ) ,
177
- multiaddrs : [ ]
182
+ multiaddrs : [ ] ,
183
+ _options : { host : { } }
178
184
} ,
179
185
protocols
180
186
} )
@@ -201,6 +207,36 @@ describe('Identify', () => {
201
207
. and . to . have . property ( 'code' , Errors . ERR_INVALID_PEER )
202
208
} )
203
209
210
+ it ( 'should store host data and protocol version into metadataBook' , ( ) => {
211
+ const agentVersion = 'js-project/1.0.0'
212
+ const peerStore = new PeerStore ( { peerId : localPeer } )
213
+
214
+ sinon . spy ( peerStore . metadataBook , 'set' )
215
+
216
+ new IdentifyService ( { // eslint-disable-line no-new
217
+ libp2p : {
218
+ peerId : localPeer ,
219
+ connectionManager : new EventEmitter ( ) ,
220
+ peerStore,
221
+ multiaddrs : listenMaddrs ,
222
+ _options : {
223
+ host : {
224
+ agentVersion
225
+ }
226
+ }
227
+ } ,
228
+ protocols
229
+ } )
230
+
231
+ expect ( peerStore . metadataBook . set . callCount ) . to . eql ( 2 )
232
+
233
+ const storedAgentVersion = peerStore . metadataBook . getValue ( localPeer , 'AgentVersion' )
234
+ const storedProtocolVersion = peerStore . metadataBook . getValue ( localPeer , 'ProtocolVersion' )
235
+
236
+ expect ( agentVersion ) . to . eql ( unit8ArrayToString ( storedAgentVersion ) )
237
+ expect ( storedProtocolVersion ) . to . exist ( )
238
+ } )
239
+
204
240
describe ( 'push' , ( ) => {
205
241
it ( 'should be able to push identify updates to another peer' , async ( ) => {
206
242
const connectionManager = new EventEmitter ( )
@@ -211,7 +247,8 @@ describe('Identify', () => {
211
247
peerId : localPeer ,
212
248
connectionManager : new EventEmitter ( ) ,
213
249
peerStore : new PeerStore ( { peerId : localPeer } ) ,
214
- multiaddrs : listenMaddrs
250
+ multiaddrs : listenMaddrs ,
251
+ _options : { host : { } }
215
252
} ,
216
253
protocols : new Map ( [
217
254
[ multicodecs . IDENTIFY ] ,
@@ -224,7 +261,8 @@ describe('Identify', () => {
224
261
peerId : remotePeer ,
225
262
connectionManager,
226
263
peerStore : new PeerStore ( { peerId : remotePeer } ) ,
227
- multiaddrs : [ ]
264
+ multiaddrs : [ ] ,
265
+ _options : { host : { } }
228
266
}
229
267
} )
230
268
@@ -272,7 +310,8 @@ describe('Identify', () => {
272
310
peerId : localPeer ,
273
311
connectionManager : new EventEmitter ( ) ,
274
312
peerStore : new PeerStore ( { peerId : localPeer } ) ,
275
- multiaddrs : listenMaddrs
313
+ multiaddrs : listenMaddrs ,
314
+ _options : { host : { } }
276
315
} ,
277
316
protocols : new Map ( [
278
317
[ multicodecs . IDENTIFY ] ,
@@ -285,7 +324,8 @@ describe('Identify', () => {
285
324
peerId : remotePeer ,
286
325
connectionManager,
287
326
peerStore : new PeerStore ( { peerId : remotePeer } ) ,
288
- multiaddrs : [ ]
327
+ multiaddrs : [ ] ,
328
+ _options : { host : { } }
289
329
}
290
330
} )
291
331
@@ -404,5 +444,23 @@ describe('Identify', () => {
404
444
// Verify the streams close
405
445
await pWaitFor ( ( ) => connection . streams . length === 0 )
406
446
} )
447
+
448
+ it ( 'should store host data and protocol version into metadataBook' , ( ) => {
449
+ const agentVersion = 'js-project/1.0.0'
450
+
451
+ libp2p = new Libp2p ( {
452
+ ...baseOptions ,
453
+ peerId,
454
+ host : {
455
+ agentVersion
456
+ }
457
+ } )
458
+
459
+ const storedAgentVersion = libp2p . peerStore . metadataBook . getValue ( localPeer , 'AgentVersion' )
460
+ const storedProtocolVersion = libp2p . peerStore . metadataBook . getValue ( localPeer , 'ProtocolVersion' )
461
+
462
+ expect ( agentVersion ) . to . eql ( unit8ArrayToString ( storedAgentVersion ) )
463
+ expect ( storedProtocolVersion ) . to . exist ( )
464
+ } )
407
465
} )
408
466
} )
0 commit comments