@@ -2232,4 +2232,95 @@ describe('socket.io', function(){
2232
2232
} ) ;
2233
2233
} ) ;
2234
2234
} ) ;
2235
+
2236
+ describe ( 'socket middleware' , function ( done ) {
2237
+ var Socket = require ( '../lib/socket' ) ;
2238
+
2239
+ it ( 'should call functions' , function ( done ) {
2240
+ var srv = http ( ) ;
2241
+ var sio = io ( srv ) ;
2242
+ var run = 0 ;
2243
+
2244
+ srv . listen ( function ( ) {
2245
+ var socket = client ( srv , { multiplex : false } ) ;
2246
+
2247
+ socket . emit ( 'join' , 'woot' ) ;
2248
+
2249
+ sio . on ( 'connection' , function ( socket ) {
2250
+ socket . use ( function ( event , next ) {
2251
+ expect ( event ) . to . eql ( [ 'join' , 'woot' ] ) ;
2252
+ event . unshift ( 'wrap' ) ;
2253
+ run ++ ;
2254
+ next ( ) ;
2255
+ } ) ;
2256
+ socket . use ( function ( event , next ) {
2257
+ expect ( event ) . to . eql ( [ 'wrap' , 'join' , 'woot' ] ) ;
2258
+ run ++ ;
2259
+ next ( ) ;
2260
+ } ) ;
2261
+ socket . on ( 'wrap' , function ( data1 , data2 ) {
2262
+ expect ( data1 ) . to . be ( 'join' ) ;
2263
+ expect ( data2 ) . to . be ( 'woot' ) ;
2264
+ expect ( run ) . to . be ( 2 ) ;
2265
+ done ( ) ;
2266
+ } ) ;
2267
+ } ) ;
2268
+ } ) ;
2269
+ } ) ;
2270
+
2271
+ it ( 'should pass errors' , function ( done ) {
2272
+ var srv = http ( ) ;
2273
+ var sio = io ( srv ) ;
2274
+
2275
+ srv . listen ( function ( ) {
2276
+ var socket = client ( srv , { multiplex : false } ) ;
2277
+
2278
+ socket . emit ( 'join' , 'woot' ) ;
2279
+
2280
+ sio . on ( 'connection' , function ( socket ) {
2281
+ socket . use ( function ( event , next ) {
2282
+ next ( new Error ( 'Authentication error' ) ) ;
2283
+ } ) ;
2284
+ socket . use ( function ( event , next ) {
2285
+ done ( new Error ( 'nope' ) ) ;
2286
+ } ) ;
2287
+
2288
+ socket . on ( 'join' , function ( ) {
2289
+ done ( new Error ( 'nope' ) ) ;
2290
+ } ) ;
2291
+ socket . on ( 'error' , function ( err ) {
2292
+ expect ( err ) . to . be ( 'Authentication error' ) ;
2293
+ done ( ) ;
2294
+ } ) ;
2295
+ } ) ;
2296
+ } ) ;
2297
+ } ) ;
2298
+
2299
+ it ( 'should pass `data` of error object' , function ( done ) {
2300
+ var srv = http ( ) ;
2301
+ var sio = io ( srv ) ;
2302
+
2303
+ srv . listen ( function ( ) {
2304
+ var socket = client ( srv , { multiplex : false } ) ;
2305
+
2306
+ socket . emit ( 'join' , 'woot' ) ;
2307
+
2308
+ sio . on ( 'connection' , function ( socket ) {
2309
+ socket . use ( function ( event , next ) {
2310
+ var err = new Error ( 'Authentication error' ) ;
2311
+ err . data = { a : 'b' , c : 3 } ;
2312
+ next ( err ) ;
2313
+ } ) ;
2314
+
2315
+ socket . on ( 'join' , function ( ) {
2316
+ done ( new Error ( 'nope' ) ) ;
2317
+ } ) ;
2318
+ socket . on ( 'error' , function ( err ) {
2319
+ expect ( err ) . to . eql ( { a : 'b' , c : 3 } ) ;
2320
+ done ( ) ;
2321
+ } ) ;
2322
+ } ) ;
2323
+ } ) ;
2324
+ } ) ;
2325
+ } ) ;
2235
2326
} ) ;
0 commit comments