@@ -169,3 +169,63 @@ test('server: all info_hash scrape', function (t) {
169169 } )
170170 } )
171171} )
172+
173+ test ( 'http nonwhitelisted torrent does not appear in scrape' , function ( t ) {
174+ var server = new Server ( {
175+ filter : function ( hash ) {
176+ return hash !== parsedBitlove
177+ } ,
178+ udp : false
179+ } )
180+
181+ server . on ( 'error' , function ( err ) {
182+ t . error ( err )
183+ } )
184+
185+ portfinder . getPort ( function ( err , port ) {
186+ t . error ( err )
187+ server . listen ( port )
188+ var announceUrl = 'http://127.0.0.1:' + port + '/announce'
189+ var scrapeUrl = 'http://127.0.0.1:' + port + '/scrape'
190+
191+ parsedBitlove . announce = [ announceUrl ]
192+
193+ server . once ( 'listening' , function ( ) {
194+ var client = new Client ( peerId , port , parsedBitlove )
195+
196+ client . start ( )
197+
198+ client . on ( 'error' , function ( err ) {
199+ t . error ( err )
200+ } )
201+
202+ server . once ( 'warning' , function ( err ) {
203+ if ( err ) {
204+ get . concat ( scrapeUrl , function ( err , data , res ) {
205+ if ( err ) throw err
206+
207+ t . equal ( res . statusCode , 200 )
208+ data = bencode . decode ( data )
209+ t . ok ( data . files )
210+
211+ t . notOk ( data . files [ binaryBitlove ] )
212+
213+ client . stop ( )
214+ server . close ( function ( ) {
215+ t . end ( )
216+ } )
217+ } )
218+ }
219+ } )
220+
221+ server . once ( 'start' , function ( err ) {
222+ if ( err ) throw err
223+ client . stop ( )
224+ server . close ( function ( ) {
225+ t . fail ( 'server should have thrown an error; filter condition was probably successful' )
226+ t . end ( )
227+ } )
228+ } )
229+ } )
230+ } )
231+ } )
0 commit comments