@@ -730,6 +730,78 @@ describe('socket.io', function(){
730730 } ) ;
731731 }
732732 } ) ;
733+
734+ it ( 'should allow connections to dynamic namespaces' , function ( done ) {
735+ var srv = http ( ) ;
736+ var sio = io ( srv ) ;
737+ srv . listen ( function ( ) {
738+ var namespace = '/dynamic' ;
739+ var dynamic = client ( srv , namespace ) ;
740+ sio . useNamespaceValidator ( function ( nsp , next ) {
741+ expect ( nsp ) . to . be ( namespace ) ;
742+ next ( null , true ) ;
743+ } ) ;
744+ dynamic . on ( 'error' , function ( err ) {
745+ expect ( ) . fail ( ) ;
746+ } ) ;
747+ dynamic . on ( 'connect' , function ( ) {
748+ expect ( sio . nsps [ namespace ] ) . to . be . a ( Namespace ) ;
749+ expect ( sio . nsps [ namespace ] . sockets . length ) . to . be ( 1 ) ;
750+ done ( ) ;
751+ } ) ;
752+ } ) ;
753+ } ) ;
754+
755+ it ( 'should not allow connections to dynamic namespaces if not supported' , function ( done ) {
756+ var srv = http ( ) ;
757+ var sio = io ( srv ) ;
758+ srv . listen ( function ( ) {
759+ var namespace = '/dynamic' ;
760+ sio . useNamespaceValidator ( function ( nsp , next ) {
761+ expect ( nsp ) . to . be ( namespace ) ;
762+ next ( null , false ) ;
763+ } ) ;
764+ sio . on ( 'connect' , function ( socket ) {
765+ if ( socket . nsp . name === namespace ) {
766+ expect ( ) . fail ( ) ;
767+ }
768+ } ) ;
769+
770+ var dynamic = client ( srv , namespace ) ;
771+ dynamic . on ( 'connect' , function ( ) {
772+ expect ( ) . fail ( ) ;
773+ } ) ;
774+ dynamic . on ( 'error' , function ( err ) {
775+ expect ( err ) . to . be ( "Invalid namespace" ) ;
776+ done ( ) ;
777+ } ) ;
778+ } ) ;
779+ } ) ;
780+ it ( 'should not allow connections to dynamic namespaces if there is an error' , function ( done ) {
781+ var srv = http ( ) ;
782+ var sio = io ( srv ) ;
783+ srv . listen ( function ( ) {
784+ var namespace = '/dynamic' ;
785+ sio . useNamespaceValidator ( function ( nsp , next ) {
786+ expect ( nsp ) . to . be ( namespace ) ;
787+ next ( new Error ( ) , true ) ;
788+ } ) ;
789+ sio . on ( 'connect' , function ( socket ) {
790+ if ( socket . nsp . name === namespace ) {
791+ expect ( ) . fail ( ) ;
792+ }
793+ } ) ;
794+
795+ var dynamic = client ( srv , namespace ) ;
796+ dynamic . on ( 'connect' , function ( ) {
797+ expect ( ) . fail ( ) ;
798+ } ) ;
799+ dynamic . on ( 'error' , function ( err ) {
800+ expect ( err ) . to . be ( "Invalid namespace" ) ;
801+ done ( ) ;
802+ } ) ;
803+ } ) ;
804+ } ) ;
733805 } ) ;
734806
735807 describe ( 'socket' , function ( ) {
0 commit comments