@@ -9,6 +9,16 @@ const ipfsApi = require('../../src')
9
9
10
10
const useLocalDaemon = true
11
11
12
+ const topicName = 'js-ipfs-api-tests'
13
+
14
+ const publish = ( ipfs , data , callback ) => {
15
+ ipfs . pubsub . pub ( topicName , data , ( err , result ) => {
16
+ expect ( err ) . to . not . exist
17
+ expect ( result ) . to . equal ( true )
18
+ callback ( )
19
+ } )
20
+ }
21
+
12
22
describe ( '.pubsub' , ( ) => {
13
23
if ( ! isNode ) {
14
24
return
@@ -33,40 +43,62 @@ describe('.pubsub', () => {
33
43
// // fc.dismantle(done)
34
44
// })
35
45
36
- it . only ( 'sub' , ( done ) => {
37
- ipfs . pubsub . sub ( 'testi1' , ( err , result ) => {
38
- expect ( err ) . to . not . exist
39
- result . on ( 'data' , function ( d ) {
40
- // console.log("-->", d)
41
- expect ( d . data ) . to . equal ( 'hi' )
42
- done ( )
43
- } )
44
- result . on ( 'end' , function ( ) {
45
- console . log ( "END!!" )
46
- } )
46
+ describe ( '.publish' , ( ) => {
47
+ it ( 'message from string' , ( done ) => {
48
+ publish ( ipfs , 'hello friend' , done )
49
+ } )
50
+ it ( 'message from buffer' , ( done ) => {
51
+ publish ( ipfs , new Buffer ( 'hello friend' ) , done )
47
52
} )
48
- setTimeout ( ( ) => {
49
- ipfs . pubsub . pub ( 'testi1' , 'hi' )
50
- } , 100 )
51
53
} )
52
54
53
- describe ( '.pub' , ( ) => {
54
- it . only ( 'publishes a message - from string' , ( done ) => {
55
- const data = 'hello friend'
56
- ipfs . pubsub . pub ( 'testi1' , data , ( err , result ) => {
55
+ describe ( '.subscribe' , ( ) => {
56
+ it ( 'one topic' , ( done ) => {
57
+ ipfs . pubsub . sub ( topicName , ( err , subscription ) => {
57
58
expect ( err ) . to . not . exist
58
- expect ( result ) . to . equal ( true )
59
- done ( )
59
+ subscription . on ( 'data' , ( d ) => {
60
+ expect ( d . data ) . to . equal ( 'hi' )
61
+ subscription . cancel ( )
62
+ } )
63
+ subscription . on ( 'end' , ( ) => {
64
+ done ( )
65
+ } )
60
66
} )
67
+ setTimeout ( publish . bind ( null , ipfs , 'hi' , ( ) => { } ) , 0 )
68
+ } )
69
+ it ( 'fails when already subscribed' , ( done ) => {
70
+ ipfs . pubsub . sub ( topicName , ( firstErr , firstSub ) => {
71
+ expect ( firstErr ) . to . not . exist
72
+ ipfs . pubsub . sub ( topicName , ( secondErr , secondSub ) => {
73
+ expect ( secondErr ) . to . be . an ( 'error' )
74
+ expect ( secondErr . toString ( ) ) . to . equal ( 'Error: Already subscribed to ' + topicName )
75
+ firstSub . cancel ( )
76
+ done ( )
77
+ } ) . catch ( done )
78
+ } ) . catch ( done )
61
79
} )
80
+ it ( 'receive multiple messages' , ( done ) => {
81
+ let receivedMessages = [ ]
82
+ let interval = null
83
+ const expectedMessages = 2
84
+ ipfs . pubsub . sub ( topicName , ( err , subscription ) => {
85
+ expect ( err ) . to . not . exists
86
+ subscription . on ( 'data' , ( d ) => {
87
+ receivedMessages . push ( d . data )
88
+ if ( receivedMessages . length === expectedMessages ) {
89
+ receivedMessages . forEach ( ( msg ) => {
90
+ expect ( msg ) . to . be . equal ( 'hi' )
91
+ } )
92
+ clearInterval ( interval )
93
+ subscription . cancel ( )
94
+ done ( )
95
+ }
96
+ } )
97
+ } ) . catch ( done )
62
98
63
- it . only ( 'publishes a message - from Buffer' , ( done ) => {
64
- const data = new Buffer ( 'hello buffer' )
65
- ipfs . pubsub . pub ( 'testi1' , data , ( err , result ) => {
66
- expect ( err ) . to . not . exist
67
- expect ( result ) . to . equal ( true )
68
- done ( )
69
- } )
99
+ setTimeout ( ( ) => {
100
+ interval = setInterval ( publish . bind ( null , ipfs , 'hi' , ( ) => { } ) , 10 )
101
+ } , 10 )
70
102
} )
71
103
} )
72
104
} )
0 commit comments