@@ -12,28 +12,33 @@ var peerId2 = new Buffer('12345678901234567890')
1212var peerId3 = new Buffer ( '23456789012345678901' )
1313var port = 6881
1414
15+ function mockWebSocketTracker ( client ) {
16+ client . _trackers [ 0 ] . _generateOffers = function ( numwant , cb ) {
17+ var offers = [ ]
18+ for ( var i = 0 ; i < numwant ; i ++ ) {
19+ offers . push ( 'fake_offer_' + i )
20+ }
21+ process . nextTick ( function ( ) {
22+ cb ( offers )
23+ } )
24+ }
25+ }
26+
1527function testClientStart ( t , serverType ) {
16- t . plan ( 5 )
28+ t . plan ( 4 )
1729 common . createServer ( t , serverType , function ( server , announceUrl ) {
1830 parsedTorrent . announce = [ announceUrl ]
19- var client = new Client ( peerId1 , port , parsedTorrent )
31+ var client = new Client ( peerId1 , port , parsedTorrent , { wrtc : { } } )
2032
21- client . on ( 'error' , function ( err ) {
22- t . error ( err )
23- } )
24-
25- client . on ( 'warning' , function ( err ) {
26- t . error ( err )
27- } )
33+ if ( serverType === 'ws' ) mockWebSocketTracker ( client )
34+ client . on ( 'error' , function ( err ) { t . error ( err ) } )
35+ client . on ( 'warning' , function ( err ) { t . error ( err ) } )
2836
2937 client . once ( 'update' , function ( data ) {
3038 t . equal ( data . announce , announceUrl )
3139 t . equal ( typeof data . complete , 'number' )
3240 t . equal ( typeof data . incomplete , 'number' )
33- } )
3441
35- client . once ( 'peer' , function ( ) {
36- t . pass ( 'there is at least one peer' )
3742 client . stop ( )
3843
3944 client . once ( 'update' , function ( ) {
@@ -55,19 +60,19 @@ test('udp: client.start()', function (t) {
5560 testClientStart ( t , 'udp' )
5661} )
5762
63+ test ( 'ws: client.start()' , function ( t ) {
64+ testClientStart ( t , 'ws' )
65+ } )
66+
5867function testClientStop ( t , serverType ) {
5968 t . plan ( 3 )
6069 common . createServer ( t , serverType , function ( server , announceUrl ) {
6170 parsedTorrent . announce = [ announceUrl ]
62- var client = new Client ( peerId1 , port , parsedTorrent )
71+ var client = new Client ( peerId1 , port , parsedTorrent , { wrtc : { } } )
6372
64- client . on ( 'error' , function ( err ) {
65- t . error ( err )
66- } )
67-
68- client . on ( 'warning' , function ( err ) {
69- t . error ( err )
70- } )
73+ if ( serverType === 'ws' ) mockWebSocketTracker ( client )
74+ client . on ( 'error' , function ( err ) { t . error ( err ) } )
75+ client . on ( 'warning' , function ( err ) { t . error ( err ) } )
7176
7277 client . start ( )
7378
@@ -95,20 +100,21 @@ test('udp: client.stop()', function (t) {
95100 testClientStop ( t , 'udp' )
96101} )
97102
103+ test ( 'ws: client.stop()' , function ( t ) {
104+ testClientStop ( t , 'ws' )
105+ } )
106+
98107function testClientUpdate ( t , serverType ) {
99108 t . plan ( 4 )
100109 common . createServer ( t , serverType , function ( server , announceUrl ) {
101110 parsedTorrent . announce = [ announceUrl ]
102- var client = new Client ( peerId1 , port , parsedTorrent )
103- client . setInterval ( 2000 )
111+ var client = new Client ( peerId1 , port , parsedTorrent , { wrtc : { } } )
104112
105- client . on ( 'error' , function ( err ) {
106- t . error ( err )
107- } )
113+ if ( serverType === 'ws' ) mockWebSocketTracker ( client )
114+ client . on ( 'error' , function ( err ) { t . error ( err ) } )
115+ client . on ( 'warning' , function ( err ) { t . error ( err ) } )
108116
109- client . on ( 'warning' , function ( err ) {
110- t . error ( err )
111- } )
117+ client . setInterval ( 2000 )
112118
113119 client . start ( )
114120
@@ -141,19 +147,19 @@ test('udp: client.update()', function (t) {
141147 testClientUpdate ( t , 'udp' )
142148} )
143149
150+ test ( 'ws: client.update()' , function ( t ) {
151+ testClientUpdate ( t , 'ws' )
152+ } )
153+
144154function testClientScrape ( t , serverType ) {
145155 t . plan ( 4 )
146156 common . createServer ( t , serverType , function ( server , announceUrl ) {
147157 parsedTorrent . announce = [ announceUrl ]
148- var client = new Client ( peerId1 , port , parsedTorrent )
158+ var client = new Client ( peerId1 , port , parsedTorrent , { wrtc : { } } )
149159
150- client . on ( 'error' , function ( err ) {
151- t . error ( err )
152- } )
153-
154- client . on ( 'warning' , function ( err ) {
155- t . error ( err )
156- } )
160+ if ( serverType === 'ws' ) mockWebSocketTracker ( client )
161+ client . on ( 'error' , function ( err ) { t . error ( err ) } )
162+ client . on ( 'warning' , function ( err ) { t . error ( err ) } )
157163
158164 client . once ( 'scrape' , function ( data ) {
159165 t . equal ( data . announce , announceUrl )
@@ -177,27 +183,37 @@ test('udp: client.scrape()', function (t) {
177183 testClientScrape ( t , 'udp' )
178184} )
179185
186+ // TODO: uncomment once scrape is supported on WebSocket trackers
187+ // test('ws: client.scrape()', function (t) {
188+ // testClientScrape(t, 'ws')
189+ // })
190+
180191function testClientAnnounceWithNumWant ( t , serverType ) {
181192 t . plan ( 4 )
182193 common . createServer ( t , serverType , function ( server , announceUrl ) {
183194 parsedTorrent . announce = [ announceUrl ]
184- var client1 = new Client ( peerId1 , port , parsedTorrent )
185- client1 . on ( 'error' , function ( err ) {
186- t . error ( err )
187- } )
195+ var client1 = new Client ( peerId1 , port , parsedTorrent , { wrtc : { } } )
196+
197+ if ( serverType === 'ws' ) mockWebSocketTracker ( client1 )
198+ client1 . on ( 'error' , function ( err ) { t . error ( err ) } )
199+ client1 . on ( 'warning' , function ( err ) { t . error ( err ) } )
188200
189201 client1 . start ( )
190202 client1 . once ( 'update' , function ( ) {
191- var client2 = new Client ( peerId2 , port + 1 , parsedTorrent )
192- client2 . on ( 'error' , function ( err ) {
193- t . error ( err )
194- } )
203+ var client2 = new Client ( peerId2 , port + 1 , parsedTorrent , { wrtc : { } } )
204+
205+ if ( serverType === 'ws' ) mockWebSocketTracker ( client2 )
206+ client2 . on ( 'error' , function ( err ) { t . error ( err ) } )
207+ client2 . on ( 'warning' , function ( err ) { t . error ( err ) } )
208+
195209 client2 . start ( )
196210 client2 . once ( 'update' , function ( ) {
197- var client3 = new Client ( peerId3 , port + 2 , parsedTorrent )
198- client3 . on ( 'error' , function ( err ) {
199- t . error ( err )
200- } )
211+ var client3 = new Client ( peerId3 , port + 2 , parsedTorrent , { wrtc : { } } )
212+
213+ if ( serverType === 'ws' ) mockWebSocketTracker ( client3 )
214+ client3 . on ( 'error' , function ( err ) { t . error ( err ) } )
215+ client3 . on ( 'warning' , function ( err ) { t . error ( err ) } )
216+
201217 client3 . start ( { numwant : 1 } )
202218 client3 . on ( 'peer' , function ( ) {
203219 t . pass ( 'got one peer (this should only fire once)' )
@@ -239,3 +255,7 @@ test('http: client announce with numwant', function (t) {
239255test ( 'udp: client announce with numwant' , function ( t ) {
240256 testClientAnnounceWithNumWant ( t , 'udp' )
241257} )
258+
259+ test ( 'ws: client announce with numwant' , function ( t ) {
260+ testClientAnnounceWithNumWant ( t , 'ws' )
261+ } )
0 commit comments