@@ -6,10 +6,15 @@ const chai = require('chai')
6
6
const dirtyChai = require ( 'dirty-chai' )
7
7
const expect = chai . expect
8
8
chai . use ( dirtyChai )
9
- const series = require ( 'async/series ' )
9
+ const sinon = require ( 'sinon ' )
10
10
const ipfsExec = require ( '../utils/ipfs-exec' )
11
11
const path = require ( 'path' )
12
12
const parallel = require ( 'async/parallel' )
13
+ const addrsCommand = require ( '../../src/cli/commands/swarm/addrs' )
14
+
15
+ const multiaddr = require ( 'multiaddr' )
16
+ const PeerInfo = require ( 'peer-info' )
17
+ const PeerId = require ( 'peer-id' )
13
18
14
19
const DaemonFactory = require ( 'ipfsd-ctl' )
15
20
const df = DaemonFactory . create ( { type : 'js' } )
@@ -25,50 +30,54 @@ const config = {
25
30
}
26
31
27
32
describe ( 'swarm' , ( ) => {
28
- let bMultiaddr
29
- let ipfsA
30
-
31
- let nodes = [ ]
32
- before ( function ( done ) {
33
- // CI takes longer to instantiate the daemon, so we need to increase the
34
- // timeout for the before step
35
- this . timeout ( 80 * 1000 )
36
-
37
- series ( [
38
- ( cb ) => {
39
- df . spawn ( {
40
- exec : path . resolve ( `${ __dirname } /../../src/cli/bin.js` ) ,
41
- config,
42
- initOptions : { bits : 512 }
43
- } , ( err , node ) => {
44
- expect ( err ) . to . not . exist ( )
45
- ipfsA = ipfsExec ( node . repoPath )
46
- nodes . push ( node )
47
- cb ( )
48
- } )
49
- } ,
50
- ( cb ) => {
51
- df . spawn ( {
52
- exec : path . resolve ( `${ __dirname } /../../src/cli/bin.js` ) ,
53
- config,
54
- initOptions : { bits : 512 }
55
- } , ( err , node ) => {
56
- expect ( err ) . to . not . exist ( )
57
- node . api . id ( ( err , id ) => {
33
+ afterEach ( ( ) => {
34
+ sinon . restore ( )
35
+ } )
36
+
37
+ describe ( 'daemon on (through http-api)' , function ( ) {
38
+ this . timeout ( 60 * 1000 )
39
+
40
+ let bMultiaddr
41
+ let ipfsA
42
+
43
+ let nodes = [ ]
44
+ before ( function ( done ) {
45
+ // CI takes longer to instantiate the daemon, so we need to increase the
46
+ // timeout for the before step
47
+ this . timeout ( 80 * 1000 )
48
+
49
+ parallel ( [
50
+ ( cb ) => {
51
+ df . spawn ( {
52
+ exec : path . resolve ( `${ __dirname } /../../src/cli/bin.js` ) ,
53
+ config,
54
+ initOptions : { bits : 512 }
55
+ } , ( err , node ) => {
58
56
expect ( err ) . to . not . exist ( )
59
- bMultiaddr = id . addresses [ 0 ]
57
+ ipfsA = ipfsExec ( node . repoPath )
60
58
nodes . push ( node )
61
59
cb ( )
62
60
} )
63
- } )
64
- }
65
- ] , done )
66
- } )
67
-
68
- after ( ( done ) => parallel ( nodes . map ( ( node ) => ( cb ) => node . stop ( cb ) ) , done ) )
61
+ } ,
62
+ ( cb ) => {
63
+ df . spawn ( {
64
+ exec : path . resolve ( `${ __dirname } /../../src/cli/bin.js` ) ,
65
+ config,
66
+ initOptions : { bits : 512 }
67
+ } , ( err , node ) => {
68
+ expect ( err ) . to . not . exist ( )
69
+ node . api . id ( ( err , id ) => {
70
+ expect ( err ) . to . not . exist ( )
71
+ bMultiaddr = id . addresses [ 0 ]
72
+ nodes . push ( node )
73
+ cb ( )
74
+ } )
75
+ } )
76
+ }
77
+ ] , done )
78
+ } )
69
79
70
- describe ( 'daemon on (through http-api)' , function ( ) {
71
- this . timeout ( 60 * 1000 )
80
+ after ( ( done ) => parallel ( nodes . map ( ( node ) => ( cb ) => node . stop ( cb ) ) , done ) )
72
81
73
82
it ( 'connect' , ( ) => {
74
83
return ipfsA ( 'swarm' , 'connect' , bMultiaddr ) . then ( ( out ) => {
@@ -108,4 +117,49 @@ describe('swarm', () => {
108
117
} )
109
118
} )
110
119
} )
120
+
121
+ describe ( 'handlers' , ( ) => {
122
+ let peerInfo
123
+ const ipfs = {
124
+ swarm : { addrs : ( ) => { } }
125
+ }
126
+ const argv = {
127
+ resolve : ( ) => { } ,
128
+ getIpfs : ( ) => ipfs
129
+ }
130
+
131
+ describe ( 'addrs' , ( ) => {
132
+ before ( ( done ) => {
133
+ PeerId . create ( { bits : 512 } , ( err , peerId ) => {
134
+ if ( err ) return done ( err )
135
+ peerInfo = new PeerInfo ( peerId )
136
+ done ( )
137
+ } )
138
+ } )
139
+
140
+ it ( 'should return addresses for all peers' , ( done ) => {
141
+ sinon . stub ( argv , 'resolve' ) . callsFake ( promise => {
142
+ promise . then ( ( { data } ) => {
143
+ expect ( data ) . to . eql ( [
144
+ `${ peerInfo . id . toB58String ( ) } (2)` ,
145
+ `\t/ip4/127.0.0.1/tcp/4001` ,
146
+ `\t/ip4/127.0.0.1/tcp/4001/ws`
147
+ ] . join ( '\n' ) )
148
+ done ( )
149
+ } )
150
+ } )
151
+
152
+ sinon . stub ( peerInfo . multiaddrs , '_multiaddrs' ) . value ( [
153
+ multiaddr ( '/ip4/127.0.0.1/tcp/4001' ) ,
154
+ multiaddr ( `/ip4/127.0.0.1/tcp/4001/ws/ipfs/${ peerInfo . id . toB58String ( ) } ` )
155
+ ] )
156
+
157
+ sinon . stub ( ipfs . swarm , 'addrs' ) . returns (
158
+ Promise . resolve ( [ peerInfo ] )
159
+ )
160
+
161
+ addrsCommand . handler ( argv )
162
+ } )
163
+ } )
164
+ } )
111
165
} )
0 commit comments