@@ -74,6 +74,11 @@ def test_logger(self):
7474 c = client .Client (logger = my_logger )
7575 self .assertEqual (c .logger , my_logger )
7676
77+ @mock .patch ('socketio.client.Client._engineio_client_class' )
78+ def test_engineio_logger (self , engineio_client_class ):
79+ client .Client (engineio_logger = 'foo' )
80+ engineio_client_class ().assert_called_once_with (logger = 'foo' )
81+
7782 def test_on_event (self ):
7883 c = client .Client ()
7984
@@ -629,3 +634,76 @@ def test_handle_reconnect_max_attempts(self, random):
629634 mock .call (1.5 )
630635 ])
631636 self .assertEqual (c ._reconnect_task , 'foo' )
637+
638+ def test_handle_eio_message (self ):
639+ c = client .Client ()
640+ c ._handle_connect = mock .MagicMock ()
641+ c ._handle_disconnect = mock .MagicMock ()
642+ c ._handle_event = mock .MagicMock ()
643+ c ._handle_ack = mock .MagicMock ()
644+ c ._handle_error = mock .MagicMock ()
645+
646+ c ._handle_eio_message ('0' )
647+ c ._handle_connect .assert_called_with (None )
648+ c ._handle_eio_message ('0/foo' )
649+ c ._handle_connect .assert_called_with ('/foo' )
650+ c ._handle_eio_message ('1' )
651+ c ._handle_disconnect .assert_called_with (None )
652+ c ._handle_eio_message ('1/foo' )
653+ c ._handle_disconnect .assert_called_with ('/foo' )
654+ c ._handle_eio_message ('2["foo"]' )
655+ c ._handle_event .assert_called_with (None , None , ['foo' ])
656+ c ._handle_eio_message ('3/foo,["bar"]' )
657+ c ._handle_ack .assert_called_with ('/foo' , None , ['bar' ])
658+ c ._handle_eio_message ('4' )
659+ c ._handle_error .assert_called_with (None )
660+ c ._handle_eio_message ('4/foo' )
661+ c ._handle_error .assert_called_with ('/foo' )
662+ c ._handle_eio_message ('51-{"_placeholder":true,"num":0}' )
663+ self .assertEqual (c ._binary_packet .packet_type , packet .BINARY_EVENT )
664+ c ._handle_eio_message (b'foo' )
665+ c ._handle_event .assert_called_with (None , None , b'foo' )
666+ c ._handle_eio_message ('62-/foo,{"1":{"_placeholder":true,"num":1},'
667+ '"2":{"_placeholder":true,"num":0}}' )
668+ self .assertEqual (c ._binary_packet .packet_type , packet .BINARY_ACK )
669+ c ._handle_eio_message (b'bar' )
670+ c ._handle_eio_message (b'foo' )
671+ c ._handle_ack .assert_called_with ('/foo' , None , {'1' : b'foo' ,
672+ '2' : b'bar' })
673+ self .assertRaises (ValueError , c ._handle_eio_message , '9' )
674+
675+ def test_eio_disconnect (self ):
676+ c = client .Client ()
677+ c ._trigger_event = mock .MagicMock ()
678+ c ._handle_eio_disconnect ()
679+ c ._trigger_event .assert_called_once_with ('disconnect' , namespace = '/' )
680+
681+ def test_eio_disconnect_namespaces (self ):
682+ c = client .Client ()
683+ c .namespaces = ['/foo' , '/bar' ]
684+ c ._trigger_event = mock .MagicMock ()
685+ c ._handle_eio_disconnect ()
686+ c ._trigger_event .assert_any_call ('disconnect' , namespace = '/foo' )
687+ c ._trigger_event .assert_any_call ('disconnect' , namespace = '/bar' )
688+ c ._trigger_event .assert_any_call ('disconnect' , namespace = '/' )
689+
690+ def test_eio_disconnect_reconnect (self ):
691+ c = client .Client (reconnection = True )
692+ c .start_background_task = mock .MagicMock ()
693+ c .eio .state = 'connected'
694+ c ._handle_eio_disconnect ()
695+ c .start_background_task .assert_called_once_with (c ._handle_reconnect )
696+
697+ def test_eio_disconnect_self_disconnect (self ):
698+ c = client .Client (reconnection = True )
699+ c .start_background_task = mock .MagicMock ()
700+ c .eio .state = 'disconnected'
701+ c ._handle_eio_disconnect ()
702+ c .start_background_task .assert_not_called ()
703+
704+ def test_eio_disconnect_no_reconnect (self ):
705+ c = client .Client (reconnection = False )
706+ c .start_background_task = mock .MagicMock ()
707+ c .eio .state = 'connected'
708+ c ._handle_eio_disconnect ()
709+ c .start_background_task .assert_not_called ()
0 commit comments