@@ -878,6 +878,81 @@ describe('socket.io', function(){
878878 } ) ;
879879 } ) ;
880880 } ) ;
881+
882+ describe ( 'dynamic' , function ( ) {
883+ it ( 'should allow connections to dynamic namespaces' , function ( done ) {
884+ var srv = http ( ) ;
885+ var sio = io ( srv ) ;
886+ srv . listen ( function ( ) {
887+ var namespace = '/dynamic' ;
888+ var dynamic = client ( srv , namespace ) ;
889+ sio . useNamespaceValidator ( function ( nsp , next ) {
890+ expect ( nsp ) . to . be ( namespace ) ;
891+ next ( null , true ) ;
892+ } ) ;
893+ dynamic . on ( 'error' , function ( err ) {
894+ expect ( ) . fail ( ) ;
895+ } ) ;
896+ dynamic . on ( 'connect' , function ( ) {
897+ expect ( sio . nsps [ namespace ] ) . to . be . a ( Namespace ) ;
898+ expect ( Object . keys ( sio . nsps [ namespace ] . sockets ) . length ) . to . be ( 1 ) ;
899+ done ( ) ;
900+ } ) ;
901+ } ) ;
902+ } ) ;
903+
904+ it ( 'should not allow connections to dynamic namespaces if not supported' , function ( done ) {
905+ var srv = http ( ) ;
906+ var sio = io ( srv ) ;
907+ srv . listen ( function ( ) {
908+ var namespace = '/dynamic' ;
909+ sio . useNamespaceValidator ( function ( nsp , next ) {
910+ expect ( nsp ) . to . be ( namespace ) ;
911+ next ( null , false ) ;
912+ } ) ;
913+ sio . on ( 'connect' , function ( socket ) {
914+ if ( socket . nsp . name === namespace ) {
915+ expect ( ) . fail ( ) ;
916+ }
917+ } ) ;
918+
919+ var dynamic = client ( srv , namespace ) ;
920+ dynamic . on ( 'connect' , function ( ) {
921+ expect ( ) . fail ( ) ;
922+ } ) ;
923+ dynamic . on ( 'error' , function ( err ) {
924+ expect ( err ) . to . be ( "Invalid namespace" ) ;
925+ done ( ) ;
926+ } ) ;
927+ } ) ;
928+ } ) ;
929+
930+ it ( 'should not allow connections to dynamic namespaces if there is an error' , function ( done ) {
931+ var srv = http ( ) ;
932+ var sio = io ( srv ) ;
933+ srv . listen ( function ( ) {
934+ var namespace = '/dynamic' ;
935+ sio . useNamespaceValidator ( function ( nsp , next ) {
936+ expect ( nsp ) . to . be ( namespace ) ;
937+ next ( new Error ( ) , true ) ;
938+ } ) ;
939+ sio . on ( 'connect' , function ( socket ) {
940+ if ( socket . nsp . name === namespace ) {
941+ expect ( ) . fail ( ) ;
942+ }
943+ } ) ;
944+
945+ var dynamic = client ( srv , namespace ) ;
946+ dynamic . on ( 'connect' , function ( ) {
947+ expect ( ) . fail ( ) ;
948+ } ) ;
949+ dynamic . on ( 'error' , function ( err ) {
950+ expect ( err ) . to . be ( "Invalid namespace" ) ;
951+ done ( ) ;
952+ } ) ;
953+ } ) ;
954+ } ) ;
955+ } ) ;
881956 } ) ;
882957
883958 describe ( 'socket' , function ( ) {
0 commit comments