code: def test_execute_copy_single_file(
      self,
      sftp_hook_mock,
      gcs_hook_mock,
      source_object,
      target_object,
      keep_directory_structure,
  ):
      task = GCSToSFTPOperator(
          task_id=TASK_ID,
          source_bucket=TEST_BUCKET,
          source_object=source_object,
          destination_path=DESTINATION_SFTP,
          keep_directory_structure=keep_directory_structure,
          move_object=False,
          gcp_conn_id=GCP_CONN_ID,
          sftp_conn_id=SFTP_CONN_ID,
          impersonation_chain=IMPERSONATION_CHAIN,
      )
      task.execute({})
      gcs_hook_mock.assert_called_once_with(
          gcp_conn_id=GCP_CONN_ID,
          impersonation_chain=IMPERSONATION_CHAIN,
      )
      sftp_hook_mock.assert_called_once_with(SFTP_CONN_ID)
  
      gcs_hook_mock.return_value.download.assert_called_with(
          bucket_name=TEST_BUCKET,
          object_name=source_object,
          filename=mock.ANY,
      )
  
      sftp_hook_mock.return_value.store_file.assert_called_with(
          os.path.join(DESTINATION_SFTP, target_object), mock.ANY
      )
  
      gcs_hook_mock.return_value.delete.assert_not_called()
  
file_path: airflow/tests/providers/google/cloud/transfers/test_gcs_to_sftp.py
imports: from __future__ import annotations
  import os
  from unittest import mock
  import pytest
  from airflow.exceptions import AirflowException
  from airflow.providers.google.cloud.transfers.gcs_to_sftp import GCSToSFTPOperator
label_desc: Use image node_id 1 for calling the TestGoogleCloudStorageToSFTPOperator obj's underlying member method code with example usage: obj.test_execute_copy_single_file(sftp_hook_mock, gcs_hook_mock, source_object, target_object, keep_directory_structure) without return types