1- from unittest .mock import patch , Mock
1+ from unittest .mock import patch , Mock , MagicMock
22
33
4+ @patch ("probely_cli.cli.commands.targets.delete.delete_target" )
45@patch ("probely_cli.cli.commands.targets.delete.delete_targets" )
56@patch ("probely_cli.cli.commands.targets.delete.list_targets" )
6- def test_targets_delete_target (
7- list_targets_mock : Mock , delete_targets_mock : Mock , probely_cli
7+ def test_targets_delete__multiple_targets (
8+ list_targets_mock : Mock ,
9+ delete_targets_mock : Mock ,
10+ delete_target_mock : MagicMock ,
11+ probely_cli ,
812):
913 target_id1 = "target_id1"
1014 target_id2 = "target_id2"
@@ -18,22 +22,87 @@ def test_targets_delete_target(
1822 target_id2 ,
1923 return_list = True ,
2024 )
21- list_targets_mock .assert_not_called ()
25+
26+ assert delete_target_mock .call_count == 0 , "Expected bulk call for multiple targets"
27+ assert list_targets_mock .call_count == 0 , "Expected no search for multiple IDs"
28+
2229 delete_targets_mock .assert_called_once_with (targets_ids = [target_id1 , target_id2 ])
23- assert len ( stderr_lines ) == 0
30+ assert stderr_lines == []
2431 assert len (stdout_lines ) == 2 , "Expected to have 2 line with the deleted target id"
32+ assert target_id1 == stdout_lines [0 ]
2533 assert target_id2 == stdout_lines [1 ]
2634
2735
36+ @patch ("probely_cli.cli.commands.targets.delete.delete_targets" )
37+ @patch ("probely_cli.cli.commands.targets.delete.delete_target" )
38+ @patch ("probely_cli.cli.commands.targets.delete.list_targets" )
39+ def test_targets_delete__one_target (
40+ list_targets_mock : Mock ,
41+ delete_target_mock : MagicMock ,
42+ delete_targets_mock : MagicMock ,
43+ probely_cli ,
44+ ):
45+ testable_target_id = "testable_target_id"
46+ delete_target_mock .return_value = testable_target_id
47+
48+ stdout_lines , stderr_lines = probely_cli (
49+ "targets" , "delete" , testable_target_id , return_list = True
50+ )
51+
52+ assert delete_targets_mock .call_count == 0 , "Expected bulk delete to NOT called"
53+ assert list_targets_mock .call_count == 0 , "Expected no search for ID"
54+
55+ assert delete_target_mock .call_count == 1 , "Expected usage of single delete"
56+
57+ assert stderr_lines == []
58+ assert stdout_lines [- 1 ] == testable_target_id
59+
60+
61+ @patch ("probely_cli.cli.commands.targets.delete.delete_target" )
2862@patch ("probely_cli.cli.commands.targets.delete.delete_targets" )
2963@patch ("probely_cli.cli.commands.targets.delete.list_targets" )
30- def test_targets_delete_target_with_filters (
31- list_targets_mock : Mock , delete_targets_mock : Mock , probely_cli
64+ def test_targets_delete__filters_with_multiple_results (
65+ list_targets_mock : Mock ,
66+ delete_targets_mock : Mock ,
67+ delete_target_mock : Mock ,
68+ probely_cli ,
69+ ):
70+ target_id1 = "target_id1"
71+ target_id2 = "target_id2"
72+ list_targets_mock .return_value = [{"id" : target_id1 }, {"id" : target_id2 }]
73+
74+ delete_targets_mock .return_value = {"ids" : [target_id1 , target_id2 ]}
75+
76+ stdout_lines , stderr_lines = probely_cli (
77+ "targets" ,
78+ "delete" ,
79+ "--f-has-unlimited-scans=True" ,
80+ return_list = True ,
81+ )
82+
83+ assert delete_target_mock .call_count == 0 , "Expect single delete method not called"
84+
85+ list_targets_mock .assert_called_with (targets_filters = {"unlimited" : True })
86+ delete_targets_mock .assert_called_once_with (targets_ids = [target_id1 , target_id2 ])
87+ assert stderr_lines == []
88+ assert len (stdout_lines ) == 2 , "Expected to have 1 line with the deleted target id"
89+ assert target_id1 == stdout_lines [0 ]
90+ assert target_id2 == stdout_lines [1 ]
91+
92+
93+ @patch ("probely_cli.cli.commands.targets.delete.delete_target" )
94+ @patch ("probely_cli.cli.commands.targets.delete.delete_targets" )
95+ @patch ("probely_cli.cli.commands.targets.delete.list_targets" )
96+ def test_targets_delete__filters_with_single_result (
97+ list_targets_mock : Mock ,
98+ delete_targets_mock : Mock ,
99+ delete_target_mock : Mock ,
100+ probely_cli ,
32101):
33102 target_id1 = "target_id1"
34103 list_targets_mock .return_value = [{"id" : target_id1 }]
35104
36- delete_targets_mock .return_value = { "ids" : [ target_id1 ]}
105+ delete_target_mock .return_value = target_id1
37106
38107 stdout_lines , stderr_lines = probely_cli (
39108 "targets" ,
@@ -42,8 +111,10 @@ def test_targets_delete_target_with_filters(
42111 return_list = True ,
43112 )
44113
114+ assert delete_targets_mock .call_count == 0 , "Expect single delete method not called"
115+
45116 list_targets_mock .assert_called_with (targets_filters = {"unlimited" : True })
46- delete_targets_mock .assert_called_once_with (targets_ids = [ target_id1 ] )
117+ delete_target_mock .assert_called_once_with (target_id1 )
47118 assert len (stderr_lines ) == 0
48119 assert len (stdout_lines ) == 1 , "Expected to have 1 line with the deleted target id"
49120 assert target_id1 == stdout_lines [0 ]
@@ -66,8 +137,13 @@ def test_targets_delete__mutually_exclusive_arguments(probely_cli):
66137 )
67138
68139
140+ @patch ("probely_cli.cli.commands.targets.delete.delete_target" )
69141@patch ("probely_cli.cli.commands.targets.delete.delete_targets" )
70- def test_targets_delete__without_any_argument (delete_targets_mock : Mock , probely_cli ):
142+ def test_targets_delete__without_any_argument (
143+ delete_targets_mock : Mock ,
144+ delete_target_mock : Mock ,
145+ probely_cli ,
146+ ):
71147 stdout_lines , stderr_lines = probely_cli (
72148 "targets" ,
73149 "delete" ,
@@ -81,3 +157,4 @@ def test_targets_delete__without_any_argument(delete_targets_mock: Mock, probely
81157 )
82158
83159 delete_targets_mock .assert_not_called ()
160+ delete_target_mock .assert_not_called ()
0 commit comments