@@ -59,34 +59,45 @@ def test_init(self):
5959 assert operator .create_container is False
6060
6161 @pytest .mark .skipif (not AIRFLOW_V_3_0_PLUS , reason = "dry_run only exists in Airflow 3.0+" )
62- @mock . patch ( "airflow.providers.microsoft.azure.transfers.sftp_to_wasb.WasbHook" )
63- @ mock . patch ( "airflow.providers.microsoft.azure.transfers.sftp_to_wasb.SFTPHook" )
64- def test_dry_run_logs_and_skips_real_action ( self , mock_sftp_hook , mock_wasb_hook , caplog ):
65- mock_sftp_hook . return_value . get_tree_map . return_value = [
66- [ "main_dir/test_object3.json" ], # files
67- [], # dirs
68- [], # links
69- ]
62+ @pytest . mark . parametrize (
63+ "move_object, expect_delete_log" ,
64+ [
65+ ( True , True ),
66+ ( False , False ),
67+ ],
68+ )
69+ def test_dry_run_logs_and_skips_real_action ( self , move_object , expect_delete_log ):
7070 operator = SFTPToWasbOperator (
7171 task_id = TASK_ID ,
7272 sftp_source_path = SOURCE_PATH_NO_WILDCARD ,
7373 sftp_conn_id = SFTP_CONN_ID ,
7474 container_name = CONTAINER_NAME ,
7575 wasb_conn_id = WASB_CONN_ID ,
7676 blob_prefix = "sponge-bob/" ,
77- move_object = True ,
77+ move_object = move_object ,
7878 )
79+ with (
80+ mock .patch .object (operator .log , "info" ) as mock_info ,
81+ mock .patch ("airflow.providers.microsoft.azure.transfers.sftp_to_wasb.WasbHook" ),
82+ mock .patch ("airflow.providers.microsoft.azure.transfers.sftp_to_wasb.SFTPHook" ) as mock_sftp_hook ,
83+ ):
84+ mock_sftp_hook .return_value .get_tree_map .return_value = [
85+ ["main_dir/test_object3.json" ],
86+ [],
87+ [],
88+ ]
7989
80- caplog .clear ()
81- with caplog .at_level ("INFO" ):
8290 operator .dry_run ()
8391
84- assert "Process will upload file from (SFTP) main_dir/test_object3.json" in caplog . text
85- assert "as sponge-bob/test_object3.json " in caplog . text
86- assert "Executing delete of " in caplog . text
92+ logged_messages = [ call . args [ 0 ] for call in mock_info . call_args_list ]
93+ assert "Dry run " in logged_messages
94+ assert "Process will upload file from (SFTP) %s to wasb://%s as %s " in logged_messages
8795
88- assert not mock_wasb_hook .return_value .load_file .called
89- assert not mock_sftp_hook .return_value .delete_file .called
96+ delete_log = "Executing delete of %s"
97+ if expect_delete_log :
98+ assert delete_log in logged_messages
99+ else :
100+ assert delete_log not in logged_messages
90101
91102 @mock .patch ("airflow.providers.microsoft.azure.transfers.sftp_to_wasb.AIRFLOW_V_3_0_PLUS" , False )
92103 def test_dry_run_raises_not_implemented (mock_version_tuple ):
0 commit comments