@@ -3137,6 +3137,143 @@ describe("server", () => {
31373137 } ;
31383138 testForHeaders ( headers , done ) ;
31393139 } ) ;
3140+
3141+ it ( "should emit a 'initial_headers' event (polling)" , done => {
3142+ const partialDone = createPartialDone ( done , 2 ) ;
3143+
3144+ engine = listen ( { cookie : true } , port => {
3145+ engine . on ( "initial_headers" , ( headers , req ) => {
3146+ expect ( req . method ) . to . be ( "GET" ) ;
3147+ headers [ "test" ] = "123" ;
3148+ headers [ "set-cookie" ] = "mycookie=456" ;
3149+ partialDone ( ) ;
3150+ } ) ;
3151+
3152+ request
3153+ . get ( "http://localhost:%d/engine.io/" . s ( port ) )
3154+ . query ( { transport : "polling" } )
3155+ . end ( ( err , res ) => {
3156+ expect ( err ) . to . be ( null ) ;
3157+ expect ( res . status ) . to . be ( 200 ) ;
3158+ expect ( res . headers [ "test" ] ) . to . be ( "123" ) ;
3159+ expect ( res . headers [ "set-cookie" ] . length ) . to . be ( 2 ) ;
3160+ expect ( res . headers [ "set-cookie" ] [ 1 ] ) . to . be ( "mycookie=456" ) ;
3161+
3162+ const sid = JSON . parse ( res . text . substring ( 4 ) ) . sid ;
3163+
3164+ request
3165+ . post ( "http://localhost:%d/engine.io/" . s ( port ) )
3166+ . query ( { transport : "polling" , sid } )
3167+ . send ( "1:6" )
3168+ . end ( ( err , res ) => {
3169+ expect ( err ) . to . be ( null ) ;
3170+ expect ( res . status ) . to . be ( 200 ) ;
3171+ expect ( res . headers [ "test" ] ) . to . be ( undefined ) ;
3172+ expect ( res . headers [ "set-cookie" ] ) . to . be ( undefined ) ;
3173+ partialDone ( ) ;
3174+ } ) ;
3175+ } ) ;
3176+ } ) ;
3177+ } ) ;
3178+
3179+ it ( "should emit a 'headers' event (polling)" , done => {
3180+ const partialDone = createPartialDone ( done , 3 ) ;
3181+
3182+ engine = listen ( { cookie : true } , port => {
3183+ engine . on ( "headers" , headers => {
3184+ headers [ "test" ] = "123" ;
3185+ headers [ "set-cookie" ] = "mycookie=456" ;
3186+ partialDone ( ) ;
3187+ } ) ;
3188+
3189+ request
3190+ . get ( "http://localhost:%d/engine.io/" . s ( port ) )
3191+ . query ( { transport : "polling" } )
3192+ . end ( ( err , res ) => {
3193+ expect ( err ) . to . be ( null ) ;
3194+ expect ( res . status ) . to . be ( 200 ) ;
3195+ expect ( res . headers [ "test" ] ) . to . be ( "123" ) ;
3196+ expect ( res . headers [ "set-cookie" ] . length ) . to . be ( 2 ) ;
3197+ expect ( res . headers [ "set-cookie" ] [ 1 ] ) . to . be ( "mycookie=456" ) ;
3198+
3199+ const sid = JSON . parse ( res . text . substring ( 4 ) ) . sid ;
3200+
3201+ request
3202+ . post ( "http://localhost:%d/engine.io/" . s ( port ) )
3203+ . query ( { transport : "polling" , sid } )
3204+ . send ( "1:6" )
3205+ . end ( ( err , res ) => {
3206+ expect ( err ) . to . be ( null ) ;
3207+ expect ( res . status ) . to . be ( 200 ) ;
3208+ expect ( res . headers [ "set-cookie" ] . length ) . to . be ( 1 ) ;
3209+ expect ( res . headers [ "set-cookie" ] [ 0 ] ) . to . be ( "mycookie=456" ) ;
3210+ partialDone ( ) ;
3211+ } ) ;
3212+ } ) ;
3213+ } ) ;
3214+ } ) ;
3215+
3216+ it ( "should emit a 'initial_headers' event (websocket)" , function ( done ) {
3217+ if ( process . env . EIO_WS_ENGINE === "eiows" ) {
3218+ this . skip ( ) ;
3219+ }
3220+ const partialDone = createPartialDone ( done , 2 ) ;
3221+
3222+ engine = listen ( { cookie : true } , port => {
3223+ engine . on ( "initial_headers" , ( headers , req ) => {
3224+ expect ( req . method ) . to . be ( "GET" ) ;
3225+ headers [ "test" ] = "123" ;
3226+ headers [ "set-cookie" ] = "mycookie=456" ;
3227+ partialDone ( ) ;
3228+ } ) ;
3229+
3230+ client = eioc ( "ws://localhost:%d" . s ( port ) , {
3231+ transports : [ "websocket" ]
3232+ } ) ;
3233+
3234+ client . transport . ws . on ( "upgrade" , res => {
3235+ expect ( res . headers [ "test" ] ) . to . be ( "123" ) ;
3236+ expect ( res . headers [ "set-cookie" ] . length ) . to . be ( 1 ) ;
3237+ expect ( res . headers [ "set-cookie" ] [ 0 ] ) . to . be ( "mycookie=456" ) ;
3238+ partialDone ( ) ;
3239+ } ) ;
3240+ } ) ;
3241+ } ) ;
3242+
3243+ it ( "should emit a single 'initial_headers' event per connection" , done => {
3244+ const partialDone = createPartialDone ( done , 2 ) ;
3245+
3246+ engine = listen ( port => {
3247+ engine . on ( "initial_headers" , ( ) => {
3248+ partialDone ( ) ;
3249+ } ) ;
3250+
3251+ client = eioc ( "ws://localhost:%d" . s ( port ) ) ;
3252+
3253+ client . on ( "upgrade" , ( ) => {
3254+ partialDone ( ) ;
3255+ } ) ;
3256+ } ) ;
3257+ } ) ;
3258+
3259+ it ( "should emit several 'headers' events per connection" , function ( done ) {
3260+ if ( process . env . EIO_WS_ENGINE === "eiows" ) {
3261+ this . skip ( ) ;
3262+ }
3263+ const partialDone = createPartialDone ( done , 4 ) ;
3264+
3265+ engine = listen ( port => {
3266+ engine . on ( "headers" , ( ) => {
3267+ partialDone ( ) ;
3268+ } ) ;
3269+
3270+ client = eioc ( "ws://localhost:%d" . s ( port ) ) ;
3271+
3272+ client . on ( "upgrade" , ( ) => {
3273+ partialDone ( ) ;
3274+ } ) ;
3275+ } ) ;
3276+ } ) ;
31403277 } ) ;
31413278
31423279 describe ( "cors" , ( ) => {
0 commit comments