def test_execute_command(self, ssh_client_cls): # Arrange host = "localhost" cmd = "ls" ssh = SSHEntity(host) ssh._ssh_cls = ssh_client_cls session_mock = mock.Mock() session_mock.recv_ready.return_value = True session_mock.exit_status_ready.return_value = True session_mock.recv.return_value = "dummy" stream_mock = mock.Mock() stream_mock.channel = session_mock ssh.ssh_client.exec_command.return_value = None, stream_mock, None def change_status(y): session_mock.recv_ready.return_value = False return "dummy" session_mock.recv.side_effect = change_status ssh.get_new_session = lambda: session_mock # Act ssh.execute_command(cmd) # Assert ssh.ssh_client.exec_command.assert_called_once_with(cmd) self.assertTrue(session_mock.recv.call_count >= 1)
def test_init(self, ssh_client_cls): # Arrange host = "localhost" port = 22 username = None password = None key_filename = None # Act ssh = SSHEntity(host, port, username, password, key_filename) ssh._ssh_cls = ssh_client_cls client = ssh.ssh_client # Assert self.assertEquals(ssh.host, host) self.assertEquals(ssh.port, port) self.assertEquals(ssh.username, username) self.assertEquals(ssh.password, password) self.assertEquals(ssh.key_filename, key_filename) self.assertEquals(ssh.key_filename, key_filename) self.assertEquals(ssh.ssh_cls, ssh_client_cls) self.assertEquals(client.set_missing_host_key_policy.call_count, 1) client.connect.assert_called_once_with(hostname=host, port=port, username=username, password=password, key_filename=key_filename)
def test_execute_command_with_redirect(self, ssh_client_cls): # Arrange host = "localhost" cmd = "ls" ssh = SSHEntity(host, redirect_output=True) ssh._ssh_cls = ssh_client_cls ssh.ssh_client.exec_command.return_value = (StringIO(), StringIO(), StringIO()) # Act ssh.execute_command(cmd) # Assert ssh.ssh_client.exec_command.assert_called_once_with(cmd)