@@ -2232,4 +2232,95 @@ describe('socket.io', function(){
22322232 } ) ;
22332233 } ) ;
22342234 } ) ;
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+ } ) ;
22352326} ) ;
0 commit comments