1+ 'use strict' ;
2+
13var http = require ( 'http' ) . Server ;
24var io = require ( '../lib' ) ;
35var fs = require ( 'fs' ) ;
@@ -890,75 +892,55 @@ describe('socket.io', function(){
890892 } ) ;
891893 } ) ;
892894
893- describe ( 'dynamic' , function ( ) {
894- it ( 'should allow connections to dynamic namespaces' , function ( done ) {
895- var srv = http ( ) ;
896- var sio = io ( srv ) ;
895+ describe ( 'dynamic namespaces' , function ( ) {
896+ it ( 'should allow connections to dynamic namespaces with a regex' , function ( done ) {
897+ const srv = http ( ) ;
898+ const sio = io ( srv ) ;
899+ let count = 0 ;
897900 srv . listen ( function ( ) {
898- var namespace = '/dynamic' ;
899- var dynamic = client ( srv , namespace ) ;
900- sio . useNamespaceValidator ( function ( nsp , next ) {
901- expect ( nsp ) . to . be ( namespace ) ;
902- next ( null , true ) ;
901+ const socket = client ( srv , '/dynamic-101' ) ;
902+ let dynamicNsp = sio . of ( / ^ \/ d y n a m i c - \d + $ / ) . on ( 'connect' , ( socket ) => {
903+ expect ( socket . nsp . name ) . to . be ( '/dynamic-101' ) ;
904+ dynamicNsp . emit ( 'hello' , 1 , '2' , { 3 : '4' } ) ;
905+ if ( ++ count === 4 ) done ( ) ;
906+ } ) . use ( ( socket , next ) => {
907+ next ( ) ;
908+ if ( ++ count === 4 ) done ( ) ;
903909 } ) ;
904- dynamic . on ( 'error' , function ( err ) {
910+ socket . on ( 'error' , function ( err ) {
905911 expect ( ) . fail ( ) ;
906912 } ) ;
907- dynamic . on ( 'connect' , function ( ) {
908- expect ( sio . nsps [ namespace ] ) . to . be . a ( Namespace ) ;
909- expect ( Object . keys ( sio . nsps [ namespace ] . sockets ) . length ) . to . be ( 1 ) ;
910- done ( ) ;
913+ socket . on ( 'connect' , ( ) => {
914+ if ( ++ count === 4 ) done ( ) ;
915+ } ) ;
916+ socket . on ( 'hello' , ( a , b , c ) => {
917+ expect ( a ) . to . eql ( 1 ) ;
918+ expect ( b ) . to . eql ( '2' ) ;
919+ expect ( c ) . to . eql ( { 3 : '4' } ) ;
920+ if ( ++ count === 4 ) done ( ) ;
911921 } ) ;
912922 } ) ;
913923 } ) ;
914924
915- it ( 'should not allow connections to dynamic namespaces if not supported ' , function ( done ) {
916- var srv = http ( ) ;
917- var sio = io ( srv ) ;
925+ it ( 'should allow connections to dynamic namespaces with a function ' , function ( done ) {
926+ const srv = http ( ) ;
927+ const sio = io ( srv ) ;
918928 srv . listen ( function ( ) {
919- var namespace = '/dynamic' ;
920- sio . useNamespaceValidator ( function ( nsp , next ) {
921- expect ( nsp ) . to . be ( namespace ) ;
922- next ( null , false ) ;
923- } ) ;
924- sio . on ( 'connect' , function ( socket ) {
925- if ( socket . nsp . name === namespace ) {
926- expect ( ) . fail ( ) ;
927- }
928- } ) ;
929-
930- var dynamic = client ( srv , namespace ) ;
931- dynamic . on ( 'connect' , function ( ) {
932- expect ( ) . fail ( ) ;
933- } ) ;
934- dynamic . on ( 'error' , function ( err ) {
935- expect ( err ) . to . be ( "Invalid namespace" ) ;
936- done ( ) ;
937- } ) ;
929+ const socket = client ( srv , '/dynamic-101' ) ;
930+ sio . of ( ( name , query , next ) => next ( null , '/dynamic-101' === name ) ) ;
931+ socket . on ( 'connect' , done ) ;
938932 } ) ;
939933 } ) ;
940934
941- it ( 'should not allow connections to dynamic namespaces if there is an error ' , function ( done ) {
942- var srv = http ( ) ;
943- var sio = io ( srv ) ;
935+ it ( 'should disallow connections when no dynamic namespace matches ' , function ( done ) {
936+ const srv = http ( ) ;
937+ const sio = io ( srv ) ;
944938 srv . listen ( function ( ) {
945- var namespace = '/dynamic' ;
946- sio . useNamespaceValidator ( function ( nsp , next ) {
947- expect ( nsp ) . to . be ( namespace ) ;
948- next ( new Error ( ) , true ) ;
949- } ) ;
950- sio . on ( 'connect' , function ( socket ) {
951- if ( socket . nsp . name === namespace ) {
952- expect ( ) . fail ( ) ;
953- }
954- } ) ;
955-
956- var dynamic = client ( srv , namespace ) ;
957- dynamic . on ( 'connect' , function ( ) {
958- expect ( ) . fail ( ) ;
959- } ) ;
960- dynamic . on ( 'error' , function ( err ) {
961- expect ( err ) . to . be ( "Invalid namespace" ) ;
939+ const socket = client ( srv , '/abc' ) ;
940+ sio . of ( / ^ \/ d y n a m i c - \d + $ / ) ;
941+ sio . of ( ( name , query , next ) => next ( null , '/dynamic-101' === name ) ) ;
942+ socket . on ( 'error' , ( err ) => {
943+ expect ( err ) . to . be ( 'Invalid namespace' ) ;
962944 done ( ) ;
963945 } ) ;
964946 } ) ;
@@ -1759,7 +1741,7 @@ describe('socket.io', function(){
17591741 var socket = client ( srv , { reconnection : false } ) ;
17601742 sio . on ( 'connection' , function ( s ) {
17611743 s . conn . on ( 'upgrade' , function ( ) {
1762- console . log ( '\033 [96mNote: warning expected and normal in test.\033 [39m' ) ;
1744+ console . log ( '\u001b [96mNote: warning expected and normal in test.\u001b [39m' ) ;
17631745 socket . io . engine . write ( '5woooot' ) ;
17641746 setTimeout ( function ( ) {
17651747 done ( ) ;
@@ -1776,7 +1758,7 @@ describe('socket.io', function(){
17761758 var socket = client ( srv , { reconnection : false } ) ;
17771759 sio . on ( 'connection' , function ( s ) {
17781760 s . conn . on ( 'upgrade' , function ( ) {
1779- console . log ( '\033 [96mNote: warning expected and normal in test.\033 [39m' ) ;
1761+ console . log ( '\u001b [96mNote: warning expected and normal in test.\u001b [39m' ) ;
17801762 socket . io . engine . write ( '44["handle me please"]' ) ;
17811763 setTimeout ( function ( ) {
17821764 done ( ) ;
0 commit comments