@@ -814,20 +814,46 @@ def test_socket_closed(self):
814
814
815
815
# Make sure .close() doesn't actually call anything real
816
816
ssh_client .client = Mock ()
817
- ssh_client .sftp_client = None
818
- ssh_client .bastion_client = None
817
+ ssh_client .sftp_client = Mock ()
818
+ ssh_client .bastion_client = Mock ()
819
819
820
820
ssh_client .socket = Mock ()
821
+ ssh_client .bastion_socket = Mock ()
821
822
822
823
# Make sure we havent called any close methods at this point
823
824
# TODO: Replace these with .assert_not_called() once it's Python 3.6+ only
824
- self .assertEqual (ssh_client .socket .process .kill .call_count , 0 )
825
- self .assertEqual (ssh_client .socket .process .poll .call_count , 0 )
825
+ self .assertEqual (ssh_client .socket .close .call_count , 0 )
826
+ self .assertEqual (ssh_client .client .close .call_count , 0 )
827
+ self .assertEqual (ssh_client .sftp_client .close .call_count , 0 )
828
+ self .assertEqual (ssh_client .bastion_socket .close .call_count , 0 )
829
+ self .assertEqual (ssh_client .bastion_client .close .call_count , 0 )
826
830
827
831
# Call the function that has changed
828
832
ssh_client .close ()
829
833
830
- # Make sure we have called kill and poll
831
834
# TODO: Replace these with .assert_called_once() once it's Python 3.6+ only
832
- self .assertEqual (ssh_client .socket .process .kill .call_count , 1 )
833
- self .assertEqual (ssh_client .socket .process .poll .call_count , 1 )
835
+ self .assertEqual (ssh_client .socket .close .call_count , 1 )
836
+ self .assertEqual (ssh_client .client .close .call_count , 1 )
837
+ self .assertEqual (ssh_client .sftp_client .close .call_count , 1 )
838
+ self .assertEqual (ssh_client .bastion_socket .close .call_count , 1 )
839
+ self .assertEqual (ssh_client .bastion_client .close .call_count , 1 )
840
+
841
+ @patch .object (ParamikoSSHClient , '_is_key_file_needs_passphrase' ,
842
+ MagicMock (return_value = False ))
843
+ def test_socket_not_closed_if_none (self ):
844
+ conn_params = {'hostname' : 'dummy.host.org' ,
845
+ 'username' : 'ubuntu' ,
846
+ 'password' : 'pass' ,
847
+ 'timeout' : '600' }
848
+ ssh_client = ParamikoSSHClient (** conn_params )
849
+
850
+ # Make sure .close() doesn't actually call anything real
851
+ ssh_client .client = None
852
+ ssh_client .sftp_client = None
853
+ ssh_client .bastion_client = None
854
+
855
+ ssh_client .socket = None
856
+ ssh_client .bastion_socket = None
857
+
858
+ # Call the function, this should not throw an exception
859
+ ssh_client .close ()
0 commit comments