code: def test_download_artifacts_single(ftp_mock):
      repo = FTPArtifactRepository("ftp://test_ftp/some/path")
  
      repo.get_ftp_client = MagicMock()
      call_mock = MagicMock(return_value=ftp_mock)
      repo.get_ftp_client.return_value = MagicMock(__enter__=call_mock)
  
      ftp_mock.cwd = MagicMock(side_effect=ftplib.error_perm)
  
      repo.download_artifacts("test.txt")
  
      ftp_mock.retrbinary.assert_called_once()
      assert (
          ftp_mock.retrbinary.call_args_list[0][0][0]
          == "RETR /some/path/test.txt"
      )
  
imports: import ftplib
  import posixpath
  from ftplib import FTP
  from unittest.mock import MagicMock
  import pytest
  from mlflow.store.artifact.artifact_repository_registry import get_artifact_repository
  from mlflow.store.artifact.ftp_artifact_repo import FTPArtifactRepository
label_desc: Use image node_id 12 for calling a global function with example usage: test_download_artifacts_single(ftp_mock) without return types