code: def test_deprecation_ftp_conn_id(self, mock_get_connection):
      connection = Connection(
          conn_id="ftp_default", login="login", host="host"
      )
      mock_get_connection.return_value = connection
      # If `ftp_conn_id` is provided, it will be used but would show a deprecation warning.
      with pytest.warns(
          AirflowProviderDeprecationWarning,
          match=r"Parameter `ftp_conn_id` is deprecated",
      ):
          assert (
              SFTPHook(ftp_conn_id="ftp_default").ssh_conn_id
              == "ftp_default"
          )
  
      # If both are provided, ftp_conn_id  will be used but would show a deprecation warning.
      with pytest.warns(
          AirflowProviderDeprecationWarning,
          match=r"Parameter `ftp_conn_id` is deprecated",
      ):
          assert (
              SFTPHook(
                  ftp_conn_id="ftp_default", ssh_conn_id="sftp_default"
              ).ssh_conn_id
              == "ftp_default"
          )
  
      # If `ssh_conn_id` is provided, it should use it for ssh_conn_id
      assert (
          SFTPHook(ssh_conn_id="sftp_default").ssh_conn_id
          == "sftp_default"
      )
      # Default is 'sftp_default
      assert SFTPHook().ssh_conn_id == "sftp_default"
  
imports: from __future__ import annotations
  import json
  import os
  import shutil
  from io import StringIO
  from unittest import mock
  import paramiko
  import pytest
  from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
  from airflow.models import Connection
  from airflow.providers.sftp.hooks.sftp import SFTPHook
  from airflow.providers.ssh.hooks.ssh import SSHHook
  from airflow.utils.session import provide_session
label_desc: Use image node_id 30 for calling the TestSFTPHook obj's underlying member method code with example usage: obj.test_deprecation_ftp_conn_id(mock_get_connection) without return types