@@ 29-434 (lines=406) @@ | ||
26 | from gvm.protocols.gmpv208 import HostsOrdering |
|
27 | ||
28 | ||
29 | class GmpCreateTaskCommandTestCase: |
|
30 | def test_create_task(self): |
|
31 | self.gmp.create_task( |
|
32 | name='foo', config_id='c1', target_id='t1', scanner_id='s1' |
|
33 | ) |
|
34 | ||
35 | self.connection.send.has_been_called_with( |
|
36 | '<create_task>' |
|
37 | '<name>foo</name>' |
|
38 | '<usage_type>scan</usage_type>' |
|
39 | '<config id="c1"/>' |
|
40 | '<target id="t1"/>' |
|
41 | '<scanner id="s1"/>' |
|
42 | '</create_task>' |
|
43 | ) |
|
44 | ||
45 | def test_create_task_missing_name(self): |
|
46 | with self.assertRaises(RequiredArgument): |
|
47 | self.gmp.create_task( |
|
48 | name=None, config_id='c1', target_id='t1', scanner_id='s1' |
|
49 | ) |
|
50 | ||
51 | with self.assertRaises(RequiredArgument): |
|
52 | self.gmp.create_task( |
|
53 | name='', config_id='c1', target_id='t1', scanner_id='s1' |
|
54 | ) |
|
55 | ||
56 | def test_create_task_missing_config_id(self): |
|
57 | with self.assertRaises(RequiredArgument): |
|
58 | self.gmp.create_task( |
|
59 | name='foo', config_id=None, target_id='t1', scanner_id='s1' |
|
60 | ) |
|
61 | ||
62 | with self.assertRaises(RequiredArgument): |
|
63 | self.gmp.create_task( |
|
64 | name='foo', config_id='', target_id='t1', scanner_id='s1' |
|
65 | ) |
|
66 | ||
67 | def test_create_task_missing_target_id(self): |
|
68 | with self.assertRaises(RequiredArgument): |
|
69 | self.gmp.create_task( |
|
70 | name='foo', config_id='c1', target_id=None, scanner_id='s1' |
|
71 | ) |
|
72 | ||
73 | with self.assertRaises(RequiredArgument): |
|
74 | self.gmp.create_task( |
|
75 | name='foo', config_id='c1', target_id='', scanner_id='s1' |
|
76 | ) |
|
77 | ||
78 | def test_create_task_missing_scanner_id(self): |
|
79 | with self.assertRaises(RequiredArgument): |
|
80 | self.gmp.create_task( |
|
81 | name='foo', config_id='c1', target_id='t1', scanner_id=None |
|
82 | ) |
|
83 | ||
84 | with self.assertRaises(RequiredArgument): |
|
85 | self.gmp.create_task( |
|
86 | name='foo', config_id='c1', target_id='t1', scanner_id='' |
|
87 | ) |
|
88 | ||
89 | def test_create_task_with_comment(self): |
|
90 | self.gmp.create_task( |
|
91 | name='foo', |
|
92 | config_id='c1', |
|
93 | target_id='t1', |
|
94 | scanner_id='s1', |
|
95 | comment='bar', |
|
96 | ) |
|
97 | ||
98 | self.connection.send.has_been_called_with( |
|
99 | '<create_task>' |
|
100 | '<name>foo</name>' |
|
101 | '<usage_type>scan</usage_type>' |
|
102 | '<config id="c1"/>' |
|
103 | '<target id="t1"/>' |
|
104 | '<scanner id="s1"/>' |
|
105 | '<comment>bar</comment>' |
|
106 | '</create_task>' |
|
107 | ) |
|
108 | ||
109 | def test_create_task_single_alert(self): |
|
110 | # pylint: disable=invalid-name |
|
111 | with warnings.catch_warnings(record=True) as w: |
|
112 | warnings.simplefilter("always") |
|
113 | ||
114 | self.gmp.create_task( |
|
115 | name='foo', |
|
116 | config_id='c1', |
|
117 | target_id='t1', |
|
118 | scanner_id='s1', |
|
119 | alert_ids='a1', # will be removed in future |
|
120 | ) |
|
121 | ||
122 | self.assertEqual(len(w), 1) |
|
123 | self.assertTrue(issubclass(w[0].category, DeprecationWarning)) |
|
124 | ||
125 | self.connection.send.has_been_called_with( |
|
126 | '<create_task>' |
|
127 | '<name>foo</name>' |
|
128 | '<usage_type>scan</usage_type>' |
|
129 | '<config id="c1"/>' |
|
130 | '<target id="t1"/>' |
|
131 | '<scanner id="s1"/>' |
|
132 | '<alert id="a1"/>' |
|
133 | '</create_task>' |
|
134 | ) |
|
135 | ||
136 | self.gmp.create_task( |
|
137 | name='foo', |
|
138 | config_id='c1', |
|
139 | target_id='t1', |
|
140 | scanner_id='s1', |
|
141 | alert_ids=['a1'], |
|
142 | ) |
|
143 | ||
144 | self.connection.send.has_been_called_with( |
|
145 | '<create_task>' |
|
146 | '<name>foo</name>' |
|
147 | '<usage_type>scan</usage_type>' |
|
148 | '<config id="c1"/>' |
|
149 | '<target id="t1"/>' |
|
150 | '<scanner id="s1"/>' |
|
151 | '<alert id="a1"/>' |
|
152 | '</create_task>' |
|
153 | ) |
|
154 | ||
155 | def test_create_task_multiple_alerts(self): |
|
156 | self.gmp.create_task( |
|
157 | name='foo', |
|
158 | config_id='c1', |
|
159 | target_id='t1', |
|
160 | scanner_id='s1', |
|
161 | alert_ids=['a1', 'a2', 'a3'], |
|
162 | ) |
|
163 | ||
164 | self.connection.send.has_been_called_with( |
|
165 | '<create_task>' |
|
166 | '<name>foo</name>' |
|
167 | '<usage_type>scan</usage_type>' |
|
168 | '<config id="c1"/>' |
|
169 | '<target id="t1"/>' |
|
170 | '<scanner id="s1"/>' |
|
171 | '<alert id="a1"/>' |
|
172 | '<alert id="a2"/>' |
|
173 | '<alert id="a3"/>' |
|
174 | '</create_task>' |
|
175 | ) |
|
176 | ||
177 | def test_create_task_with_alterable(self): |
|
178 | self.gmp.create_task( |
|
179 | name='foo', |
|
180 | config_id='c1', |
|
181 | target_id='t1', |
|
182 | scanner_id='s1', |
|
183 | alterable=True, |
|
184 | ) |
|
185 | ||
186 | self.connection.send.has_been_called_with( |
|
187 | '<create_task>' |
|
188 | '<name>foo</name>' |
|
189 | '<usage_type>scan</usage_type>' |
|
190 | '<config id="c1"/>' |
|
191 | '<target id="t1"/>' |
|
192 | '<scanner id="s1"/>' |
|
193 | '<alterable>1</alterable>' |
|
194 | '</create_task>' |
|
195 | ) |
|
196 | ||
197 | self.gmp.create_task( |
|
198 | name='foo', |
|
199 | config_id='c1', |
|
200 | target_id='t1', |
|
201 | scanner_id='s1', |
|
202 | alterable=False, |
|
203 | ) |
|
204 | ||
205 | self.connection.send.has_been_called_with( |
|
206 | '<create_task>' |
|
207 | '<name>foo</name>' |
|
208 | '<usage_type>scan</usage_type>' |
|
209 | '<config id="c1"/>' |
|
210 | '<target id="t1"/>' |
|
211 | '<scanner id="s1"/>' |
|
212 | '<alterable>0</alterable>' |
|
213 | '</create_task>' |
|
214 | ) |
|
215 | ||
216 | def test_create_task_with_hosts_ordering(self): |
|
217 | self.gmp.create_task( |
|
218 | name='foo', |
|
219 | config_id='c1', |
|
220 | target_id='t1', |
|
221 | scanner_id='s1', |
|
222 | hosts_ordering=HostsOrdering.REVERSE, |
|
223 | ) |
|
224 | ||
225 | self.connection.send.has_been_called_with( |
|
226 | '<create_task>' |
|
227 | '<name>foo</name>' |
|
228 | '<usage_type>scan</usage_type>' |
|
229 | '<config id="c1"/>' |
|
230 | '<target id="t1"/>' |
|
231 | '<scanner id="s1"/>' |
|
232 | '<hosts_ordering>reverse</hosts_ordering>' |
|
233 | '</create_task>' |
|
234 | ) |
|
235 | ||
236 | def test_create_task_invalid_hosts_ordering(self): |
|
237 | with self.assertRaises(InvalidArgumentType): |
|
238 | self.gmp.create_task( |
|
239 | name='foo', |
|
240 | config_id='c1', |
|
241 | target_id='t1', |
|
242 | scanner_id='s1', |
|
243 | hosts_ordering='foo', |
|
244 | ) |
|
245 | ||
246 | def test_create_task_with_schedule(self): |
|
247 | self.gmp.create_task( |
|
248 | name='foo', |
|
249 | config_id='c1', |
|
250 | target_id='t1', |
|
251 | scanner_id='s1', |
|
252 | schedule_id='s1', |
|
253 | ) |
|
254 | ||
255 | self.connection.send.has_been_called_with( |
|
256 | '<create_task>' |
|
257 | '<name>foo</name>' |
|
258 | '<usage_type>scan</usage_type>' |
|
259 | '<config id="c1"/>' |
|
260 | '<target id="t1"/>' |
|
261 | '<scanner id="s1"/>' |
|
262 | '<schedule id="s1"/>' |
|
263 | '</create_task>' |
|
264 | ) |
|
265 | ||
266 | def test_create_task_with_schedule_and_schedule_periods(self): |
|
267 | self.gmp.create_task( |
|
268 | name='foo', |
|
269 | config_id='c1', |
|
270 | target_id='t1', |
|
271 | scanner_id='s1', |
|
272 | schedule_id='s1', |
|
273 | schedule_periods=0, |
|
274 | ) |
|
275 | ||
276 | self.connection.send.has_been_called_with( |
|
277 | '<create_task>' |
|
278 | '<name>foo</name>' |
|
279 | '<usage_type>scan</usage_type>' |
|
280 | '<config id="c1"/>' |
|
281 | '<target id="t1"/>' |
|
282 | '<scanner id="s1"/>' |
|
283 | '<schedule id="s1"/>' |
|
284 | '<schedule_periods>0</schedule_periods>' |
|
285 | '</create_task>' |
|
286 | ) |
|
287 | ||
288 | self.gmp.create_task( |
|
289 | name='foo', |
|
290 | config_id='c1', |
|
291 | target_id='t1', |
|
292 | scanner_id='s1', |
|
293 | schedule_id='s1', |
|
294 | schedule_periods=5, |
|
295 | ) |
|
296 | ||
297 | self.connection.send.has_been_called_with( |
|
298 | '<create_task>' |
|
299 | '<name>foo</name>' |
|
300 | '<usage_type>scan</usage_type>' |
|
301 | '<config id="c1"/>' |
|
302 | '<target id="t1"/>' |
|
303 | '<scanner id="s1"/>' |
|
304 | '<schedule id="s1"/>' |
|
305 | '<schedule_periods>5</schedule_periods>' |
|
306 | '</create_task>' |
|
307 | ) |
|
308 | ||
309 | def test_create_task_with_schedule_and_invalid_schedule_periods(self): |
|
310 | with self.assertRaises(InvalidArgument): |
|
311 | self.gmp.create_task( |
|
312 | name='foo', |
|
313 | config_id='c1', |
|
314 | target_id='t1', |
|
315 | scanner_id='s1', |
|
316 | schedule_id='s1', |
|
317 | schedule_periods='foo', |
|
318 | ) |
|
319 | ||
320 | with self.assertRaises(InvalidArgument): |
|
321 | self.gmp.create_task( |
|
322 | name='foo', |
|
323 | config_id='c1', |
|
324 | target_id='t1', |
|
325 | scanner_id='s1', |
|
326 | schedule_id='s1', |
|
327 | schedule_periods=-1, |
|
328 | ) |
|
329 | ||
330 | def test_create_task_with_observers(self): |
|
331 | self.gmp.create_task( |
|
332 | name='foo', |
|
333 | config_id='c1', |
|
334 | target_id='t1', |
|
335 | scanner_id='s1', |
|
336 | observers=['u1', 'u2'], |
|
337 | ) |
|
338 | ||
339 | self.connection.send.has_been_called_with( |
|
340 | '<create_task>' |
|
341 | '<name>foo</name>' |
|
342 | '<usage_type>scan</usage_type>' |
|
343 | '<config id="c1"/>' |
|
344 | '<target id="t1"/>' |
|
345 | '<scanner id="s1"/>' |
|
346 | '<observers>u1,u2</observers>' |
|
347 | '</create_task>' |
|
348 | ) |
|
349 | ||
350 | def test_create_task_invalid_observers(self): |
|
351 | with self.assertRaises(InvalidArgumentType): |
|
352 | self.gmp.create_task( |
|
353 | name='foo', |
|
354 | config_id='c1', |
|
355 | target_id='t1', |
|
356 | scanner_id='s1', |
|
357 | observers='', |
|
358 | ) |
|
359 | ||
360 | with self.assertRaises(InvalidArgumentType): |
|
361 | self.gmp.create_task( |
|
362 | name='foo', |
|
363 | config_id='c1', |
|
364 | target_id='t1', |
|
365 | scanner_id='s1', |
|
366 | observers='foo', |
|
367 | ) |
|
368 | ||
369 | def test_create_task_with_preferences(self): |
|
370 | self.gmp.create_task( |
|
371 | name='foo', |
|
372 | config_id='c1', |
|
373 | target_id='t1', |
|
374 | scanner_id='s1', |
|
375 | preferences=OrderedDict([('foo', 'bar'), ('lorem', 'ipsum')]), |
|
376 | ) |
|
377 | ||
378 | self.connection.send.has_been_called_with( |
|
379 | '<create_task>' |
|
380 | '<name>foo</name>' |
|
381 | '<usage_type>scan</usage_type>' |
|
382 | '<config id="c1"/>' |
|
383 | '<target id="t1"/>' |
|
384 | '<scanner id="s1"/>' |
|
385 | '<preferences>' |
|
386 | '<preference>' |
|
387 | '<scanner_name>foo</scanner_name>' |
|
388 | '<value>bar</value>' |
|
389 | '</preference>' |
|
390 | '<preference>' |
|
391 | '<scanner_name>lorem</scanner_name>' |
|
392 | '<value>ipsum</value>' |
|
393 | '</preference>' |
|
394 | '</preferences>' |
|
395 | '</create_task>' |
|
396 | ) |
|
397 | ||
398 | def test_create_task_invalid_preferences(self): |
|
399 | with self.assertRaises(InvalidArgumentType): |
|
400 | self.gmp.create_task( |
|
401 | name='foo', |
|
402 | config_id='c1', |
|
403 | target_id='t1', |
|
404 | scanner_id='s1', |
|
405 | preferences='', |
|
406 | ) |
|
407 | ||
408 | with self.assertRaises(InvalidArgumentType): |
|
409 | self.gmp.create_task( |
|
410 | name='foo', |
|
411 | config_id='c1', |
|
412 | target_id='t1', |
|
413 | scanner_id='s1', |
|
414 | preferences=['foo', 'bar'], |
|
415 | ) |
|
416 | ||
417 | def test_create_task_don_t_allow_container_task(self): |
|
418 | with self.assertRaises(InvalidArgument): |
|
419 | self.gmp.create_task( |
|
420 | name='foo', |
|
421 | config_id='c1', |
|
422 | target_id='0', |
|
423 | scanner_id='s1', |
|
424 | observers='', |
|
425 | ) |
|
426 | ||
427 | # target_id=0 is considered as False |
|
428 | with self.assertRaises(RequiredArgument): |
|
429 | self.gmp.create_task( |
|
430 | name='foo', |
|
431 | config_id='c1', |
|
432 | target_id=0, |
|
433 | scanner_id='s1', |
|
434 | observers='', |
|
435 | ) |
|
436 | ||
437 |
@@ 29-434 (lines=406) @@ | ||
26 | from gvm.protocols.gmpv9 import HostsOrdering |
|
27 | ||
28 | ||
29 | class GmpCreateTaskCommandTestCase: |
|
30 | def test_create_task(self): |
|
31 | self.gmp.create_task( |
|
32 | name='foo', config_id='c1', target_id='t1', scanner_id='s1' |
|
33 | ) |
|
34 | ||
35 | self.connection.send.has_been_called_with( |
|
36 | '<create_task>' |
|
37 | '<name>foo</name>' |
|
38 | '<usage_type>scan</usage_type>' |
|
39 | '<config id="c1"/>' |
|
40 | '<target id="t1"/>' |
|
41 | '<scanner id="s1"/>' |
|
42 | '</create_task>' |
|
43 | ) |
|
44 | ||
45 | def test_create_task_missing_name(self): |
|
46 | with self.assertRaises(RequiredArgument): |
|
47 | self.gmp.create_task( |
|
48 | name=None, config_id='c1', target_id='t1', scanner_id='s1' |
|
49 | ) |
|
50 | ||
51 | with self.assertRaises(RequiredArgument): |
|
52 | self.gmp.create_task( |
|
53 | name='', config_id='c1', target_id='t1', scanner_id='s1' |
|
54 | ) |
|
55 | ||
56 | def test_create_task_missing_config_id(self): |
|
57 | with self.assertRaises(RequiredArgument): |
|
58 | self.gmp.create_task( |
|
59 | name='foo', config_id=None, target_id='t1', scanner_id='s1' |
|
60 | ) |
|
61 | ||
62 | with self.assertRaises(RequiredArgument): |
|
63 | self.gmp.create_task( |
|
64 | name='foo', config_id='', target_id='t1', scanner_id='s1' |
|
65 | ) |
|
66 | ||
67 | def test_create_task_missing_target_id(self): |
|
68 | with self.assertRaises(RequiredArgument): |
|
69 | self.gmp.create_task( |
|
70 | name='foo', config_id='c1', target_id=None, scanner_id='s1' |
|
71 | ) |
|
72 | ||
73 | with self.assertRaises(RequiredArgument): |
|
74 | self.gmp.create_task( |
|
75 | name='foo', config_id='c1', target_id='', scanner_id='s1' |
|
76 | ) |
|
77 | ||
78 | def test_create_task_missing_scanner_id(self): |
|
79 | with self.assertRaises(RequiredArgument): |
|
80 | self.gmp.create_task( |
|
81 | name='foo', config_id='c1', target_id='t1', scanner_id=None |
|
82 | ) |
|
83 | ||
84 | with self.assertRaises(RequiredArgument): |
|
85 | self.gmp.create_task( |
|
86 | name='foo', config_id='c1', target_id='t1', scanner_id='' |
|
87 | ) |
|
88 | ||
89 | def test_create_task_with_comment(self): |
|
90 | self.gmp.create_task( |
|
91 | name='foo', |
|
92 | config_id='c1', |
|
93 | target_id='t1', |
|
94 | scanner_id='s1', |
|
95 | comment='bar', |
|
96 | ) |
|
97 | ||
98 | self.connection.send.has_been_called_with( |
|
99 | '<create_task>' |
|
100 | '<name>foo</name>' |
|
101 | '<usage_type>scan</usage_type>' |
|
102 | '<config id="c1"/>' |
|
103 | '<target id="t1"/>' |
|
104 | '<scanner id="s1"/>' |
|
105 | '<comment>bar</comment>' |
|
106 | '</create_task>' |
|
107 | ) |
|
108 | ||
109 | def test_create_task_single_alert(self): |
|
110 | # pylint: disable=invalid-name |
|
111 | with warnings.catch_warnings(record=True) as w: |
|
112 | warnings.simplefilter("always") |
|
113 | ||
114 | self.gmp.create_task( |
|
115 | name='foo', |
|
116 | config_id='c1', |
|
117 | target_id='t1', |
|
118 | scanner_id='s1', |
|
119 | alert_ids='a1', # will be removed in future |
|
120 | ) |
|
121 | ||
122 | self.assertEqual(len(w), 1) |
|
123 | self.assertTrue(issubclass(w[0].category, DeprecationWarning)) |
|
124 | ||
125 | self.connection.send.has_been_called_with( |
|
126 | '<create_task>' |
|
127 | '<name>foo</name>' |
|
128 | '<usage_type>scan</usage_type>' |
|
129 | '<config id="c1"/>' |
|
130 | '<target id="t1"/>' |
|
131 | '<scanner id="s1"/>' |
|
132 | '<alert id="a1"/>' |
|
133 | '</create_task>' |
|
134 | ) |
|
135 | ||
136 | self.gmp.create_task( |
|
137 | name='foo', |
|
138 | config_id='c1', |
|
139 | target_id='t1', |
|
140 | scanner_id='s1', |
|
141 | alert_ids=['a1'], |
|
142 | ) |
|
143 | ||
144 | self.connection.send.has_been_called_with( |
|
145 | '<create_task>' |
|
146 | '<name>foo</name>' |
|
147 | '<usage_type>scan</usage_type>' |
|
148 | '<config id="c1"/>' |
|
149 | '<target id="t1"/>' |
|
150 | '<scanner id="s1"/>' |
|
151 | '<alert id="a1"/>' |
|
152 | '</create_task>' |
|
153 | ) |
|
154 | ||
155 | def test_create_task_multiple_alerts(self): |
|
156 | self.gmp.create_task( |
|
157 | name='foo', |
|
158 | config_id='c1', |
|
159 | target_id='t1', |
|
160 | scanner_id='s1', |
|
161 | alert_ids=['a1', 'a2', 'a3'], |
|
162 | ) |
|
163 | ||
164 | self.connection.send.has_been_called_with( |
|
165 | '<create_task>' |
|
166 | '<name>foo</name>' |
|
167 | '<usage_type>scan</usage_type>' |
|
168 | '<config id="c1"/>' |
|
169 | '<target id="t1"/>' |
|
170 | '<scanner id="s1"/>' |
|
171 | '<alert id="a1"/>' |
|
172 | '<alert id="a2"/>' |
|
173 | '<alert id="a3"/>' |
|
174 | '</create_task>' |
|
175 | ) |
|
176 | ||
177 | def test_create_task_with_alterable(self): |
|
178 | self.gmp.create_task( |
|
179 | name='foo', |
|
180 | config_id='c1', |
|
181 | target_id='t1', |
|
182 | scanner_id='s1', |
|
183 | alterable=True, |
|
184 | ) |
|
185 | ||
186 | self.connection.send.has_been_called_with( |
|
187 | '<create_task>' |
|
188 | '<name>foo</name>' |
|
189 | '<usage_type>scan</usage_type>' |
|
190 | '<config id="c1"/>' |
|
191 | '<target id="t1"/>' |
|
192 | '<scanner id="s1"/>' |
|
193 | '<alterable>1</alterable>' |
|
194 | '</create_task>' |
|
195 | ) |
|
196 | ||
197 | self.gmp.create_task( |
|
198 | name='foo', |
|
199 | config_id='c1', |
|
200 | target_id='t1', |
|
201 | scanner_id='s1', |
|
202 | alterable=False, |
|
203 | ) |
|
204 | ||
205 | self.connection.send.has_been_called_with( |
|
206 | '<create_task>' |
|
207 | '<name>foo</name>' |
|
208 | '<usage_type>scan</usage_type>' |
|
209 | '<config id="c1"/>' |
|
210 | '<target id="t1"/>' |
|
211 | '<scanner id="s1"/>' |
|
212 | '<alterable>0</alterable>' |
|
213 | '</create_task>' |
|
214 | ) |
|
215 | ||
216 | def test_create_task_with_hosts_ordering(self): |
|
217 | self.gmp.create_task( |
|
218 | name='foo', |
|
219 | config_id='c1', |
|
220 | target_id='t1', |
|
221 | scanner_id='s1', |
|
222 | hosts_ordering=HostsOrdering.REVERSE, |
|
223 | ) |
|
224 | ||
225 | self.connection.send.has_been_called_with( |
|
226 | '<create_task>' |
|
227 | '<name>foo</name>' |
|
228 | '<usage_type>scan</usage_type>' |
|
229 | '<config id="c1"/>' |
|
230 | '<target id="t1"/>' |
|
231 | '<scanner id="s1"/>' |
|
232 | '<hosts_ordering>reverse</hosts_ordering>' |
|
233 | '</create_task>' |
|
234 | ) |
|
235 | ||
236 | def test_create_task_invalid_hosts_ordering(self): |
|
237 | with self.assertRaises(InvalidArgumentType): |
|
238 | self.gmp.create_task( |
|
239 | name='foo', |
|
240 | config_id='c1', |
|
241 | target_id='t1', |
|
242 | scanner_id='s1', |
|
243 | hosts_ordering='foo', |
|
244 | ) |
|
245 | ||
246 | def test_create_task_with_schedule(self): |
|
247 | self.gmp.create_task( |
|
248 | name='foo', |
|
249 | config_id='c1', |
|
250 | target_id='t1', |
|
251 | scanner_id='s1', |
|
252 | schedule_id='s1', |
|
253 | ) |
|
254 | ||
255 | self.connection.send.has_been_called_with( |
|
256 | '<create_task>' |
|
257 | '<name>foo</name>' |
|
258 | '<usage_type>scan</usage_type>' |
|
259 | '<config id="c1"/>' |
|
260 | '<target id="t1"/>' |
|
261 | '<scanner id="s1"/>' |
|
262 | '<schedule id="s1"/>' |
|
263 | '</create_task>' |
|
264 | ) |
|
265 | ||
266 | def test_create_task_with_schedule_and_schedule_periods(self): |
|
267 | self.gmp.create_task( |
|
268 | name='foo', |
|
269 | config_id='c1', |
|
270 | target_id='t1', |
|
271 | scanner_id='s1', |
|
272 | schedule_id='s1', |
|
273 | schedule_periods=0, |
|
274 | ) |
|
275 | ||
276 | self.connection.send.has_been_called_with( |
|
277 | '<create_task>' |
|
278 | '<name>foo</name>' |
|
279 | '<usage_type>scan</usage_type>' |
|
280 | '<config id="c1"/>' |
|
281 | '<target id="t1"/>' |
|
282 | '<scanner id="s1"/>' |
|
283 | '<schedule id="s1"/>' |
|
284 | '<schedule_periods>0</schedule_periods>' |
|
285 | '</create_task>' |
|
286 | ) |
|
287 | ||
288 | self.gmp.create_task( |
|
289 | name='foo', |
|
290 | config_id='c1', |
|
291 | target_id='t1', |
|
292 | scanner_id='s1', |
|
293 | schedule_id='s1', |
|
294 | schedule_periods=5, |
|
295 | ) |
|
296 | ||
297 | self.connection.send.has_been_called_with( |
|
298 | '<create_task>' |
|
299 | '<name>foo</name>' |
|
300 | '<usage_type>scan</usage_type>' |
|
301 | '<config id="c1"/>' |
|
302 | '<target id="t1"/>' |
|
303 | '<scanner id="s1"/>' |
|
304 | '<schedule id="s1"/>' |
|
305 | '<schedule_periods>5</schedule_periods>' |
|
306 | '</create_task>' |
|
307 | ) |
|
308 | ||
309 | def test_create_task_with_schedule_and_invalid_schedule_periods(self): |
|
310 | with self.assertRaises(InvalidArgument): |
|
311 | self.gmp.create_task( |
|
312 | name='foo', |
|
313 | config_id='c1', |
|
314 | target_id='t1', |
|
315 | scanner_id='s1', |
|
316 | schedule_id='s1', |
|
317 | schedule_periods='foo', |
|
318 | ) |
|
319 | ||
320 | with self.assertRaises(InvalidArgument): |
|
321 | self.gmp.create_task( |
|
322 | name='foo', |
|
323 | config_id='c1', |
|
324 | target_id='t1', |
|
325 | scanner_id='s1', |
|
326 | schedule_id='s1', |
|
327 | schedule_periods=-1, |
|
328 | ) |
|
329 | ||
330 | def test_create_task_with_observers(self): |
|
331 | self.gmp.create_task( |
|
332 | name='foo', |
|
333 | config_id='c1', |
|
334 | target_id='t1', |
|
335 | scanner_id='s1', |
|
336 | observers=['u1', 'u2'], |
|
337 | ) |
|
338 | ||
339 | self.connection.send.has_been_called_with( |
|
340 | '<create_task>' |
|
341 | '<name>foo</name>' |
|
342 | '<usage_type>scan</usage_type>' |
|
343 | '<config id="c1"/>' |
|
344 | '<target id="t1"/>' |
|
345 | '<scanner id="s1"/>' |
|
346 | '<observers>u1,u2</observers>' |
|
347 | '</create_task>' |
|
348 | ) |
|
349 | ||
350 | def test_create_task_invalid_observers(self): |
|
351 | with self.assertRaises(InvalidArgumentType): |
|
352 | self.gmp.create_task( |
|
353 | name='foo', |
|
354 | config_id='c1', |
|
355 | target_id='t1', |
|
356 | scanner_id='s1', |
|
357 | observers='', |
|
358 | ) |
|
359 | ||
360 | with self.assertRaises(InvalidArgumentType): |
|
361 | self.gmp.create_task( |
|
362 | name='foo', |
|
363 | config_id='c1', |
|
364 | target_id='t1', |
|
365 | scanner_id='s1', |
|
366 | observers='foo', |
|
367 | ) |
|
368 | ||
369 | def test_create_task_with_preferences(self): |
|
370 | self.gmp.create_task( |
|
371 | name='foo', |
|
372 | config_id='c1', |
|
373 | target_id='t1', |
|
374 | scanner_id='s1', |
|
375 | preferences=OrderedDict([('foo', 'bar'), ('lorem', 'ipsum')]), |
|
376 | ) |
|
377 | ||
378 | self.connection.send.has_been_called_with( |
|
379 | '<create_task>' |
|
380 | '<name>foo</name>' |
|
381 | '<usage_type>scan</usage_type>' |
|
382 | '<config id="c1"/>' |
|
383 | '<target id="t1"/>' |
|
384 | '<scanner id="s1"/>' |
|
385 | '<preferences>' |
|
386 | '<preference>' |
|
387 | '<scanner_name>foo</scanner_name>' |
|
388 | '<value>bar</value>' |
|
389 | '</preference>' |
|
390 | '<preference>' |
|
391 | '<scanner_name>lorem</scanner_name>' |
|
392 | '<value>ipsum</value>' |
|
393 | '</preference>' |
|
394 | '</preferences>' |
|
395 | '</create_task>' |
|
396 | ) |
|
397 | ||
398 | def test_create_task_invalid_preferences(self): |
|
399 | with self.assertRaises(InvalidArgumentType): |
|
400 | self.gmp.create_task( |
|
401 | name='foo', |
|
402 | config_id='c1', |
|
403 | target_id='t1', |
|
404 | scanner_id='s1', |
|
405 | preferences='', |
|
406 | ) |
|
407 | ||
408 | with self.assertRaises(InvalidArgumentType): |
|
409 | self.gmp.create_task( |
|
410 | name='foo', |
|
411 | config_id='c1', |
|
412 | target_id='t1', |
|
413 | scanner_id='s1', |
|
414 | preferences=['foo', 'bar'], |
|
415 | ) |
|
416 | ||
417 | def test_create_task_don_t_allow_container_task(self): |
|
418 | with self.assertRaises(InvalidArgument): |
|
419 | self.gmp.create_task( |
|
420 | name='foo', |
|
421 | config_id='c1', |
|
422 | target_id='0', |
|
423 | scanner_id='s1', |
|
424 | observers='', |
|
425 | ) |
|
426 | ||
427 | # target_id=0 is considered as False |
|
428 | with self.assertRaises(RequiredArgument): |
|
429 | self.gmp.create_task( |
|
430 | name='foo', |
|
431 | config_id='c1', |
|
432 | target_id=0, |
|
433 | scanner_id='s1', |
|
434 | observers='', |
|
435 | ) |
|
436 | ||
437 |
@@ 29-421 (lines=393) @@ | ||
26 | from gvm.protocols.gmpv7 import HostsOrdering |
|
27 | ||
28 | ||
29 | class GmpCreateTaskCommandTestCase: |
|
30 | def test_create_task(self): |
|
31 | self.gmp.create_task( |
|
32 | name='foo', config_id='c1', target_id='t1', scanner_id='s1' |
|
33 | ) |
|
34 | ||
35 | self.connection.send.has_been_called_with( |
|
36 | '<create_task>' |
|
37 | '<name>foo</name>' |
|
38 | '<config id="c1"/>' |
|
39 | '<target id="t1"/>' |
|
40 | '<scanner id="s1"/>' |
|
41 | '</create_task>' |
|
42 | ) |
|
43 | ||
44 | def test_create_task_missing_name(self): |
|
45 | with self.assertRaises(RequiredArgument): |
|
46 | self.gmp.create_task( |
|
47 | name=None, config_id='c1', target_id='t1', scanner_id='s1' |
|
48 | ) |
|
49 | ||
50 | with self.assertRaises(RequiredArgument): |
|
51 | self.gmp.create_task( |
|
52 | name='', config_id='c1', target_id='t1', scanner_id='s1' |
|
53 | ) |
|
54 | ||
55 | def test_create_task_missing_config_id(self): |
|
56 | with self.assertRaises(RequiredArgument): |
|
57 | self.gmp.create_task( |
|
58 | name='foo', config_id=None, target_id='t1', scanner_id='s1' |
|
59 | ) |
|
60 | ||
61 | with self.assertRaises(RequiredArgument): |
|
62 | self.gmp.create_task( |
|
63 | name='foo', config_id='', target_id='t1', scanner_id='s1' |
|
64 | ) |
|
65 | ||
66 | def test_create_task_missing_target_id(self): |
|
67 | with self.assertRaises(RequiredArgument): |
|
68 | self.gmp.create_task( |
|
69 | name='foo', config_id='c1', target_id=None, scanner_id='s1' |
|
70 | ) |
|
71 | ||
72 | with self.assertRaises(RequiredArgument): |
|
73 | self.gmp.create_task( |
|
74 | name='foo', config_id='c1', target_id='', scanner_id='s1' |
|
75 | ) |
|
76 | ||
77 | def test_create_task_missing_scanner_id(self): |
|
78 | with self.assertRaises(RequiredArgument): |
|
79 | self.gmp.create_task( |
|
80 | name='foo', config_id='c1', target_id='t1', scanner_id=None |
|
81 | ) |
|
82 | ||
83 | with self.assertRaises(RequiredArgument): |
|
84 | self.gmp.create_task( |
|
85 | name='foo', config_id='c1', target_id='t1', scanner_id='' |
|
86 | ) |
|
87 | ||
88 | def test_create_task_with_comment(self): |
|
89 | self.gmp.create_task( |
|
90 | name='foo', |
|
91 | config_id='c1', |
|
92 | target_id='t1', |
|
93 | scanner_id='s1', |
|
94 | comment='bar', |
|
95 | ) |
|
96 | ||
97 | self.connection.send.has_been_called_with( |
|
98 | '<create_task>' |
|
99 | '<name>foo</name>' |
|
100 | '<config id="c1"/>' |
|
101 | '<target id="t1"/>' |
|
102 | '<scanner id="s1"/>' |
|
103 | '<comment>bar</comment>' |
|
104 | '</create_task>' |
|
105 | ) |
|
106 | ||
107 | def test_create_task_single_alert(self): |
|
108 | # pylint: disable=invalid-name |
|
109 | with warnings.catch_warnings(record=True) as w: |
|
110 | warnings.simplefilter("always") |
|
111 | ||
112 | self.gmp.create_task( |
|
113 | name='foo', |
|
114 | config_id='c1', |
|
115 | target_id='t1', |
|
116 | scanner_id='s1', |
|
117 | alert_ids='a1', # will be removed in future |
|
118 | ) |
|
119 | ||
120 | self.assertEqual(len(w), 1) |
|
121 | self.assertTrue(issubclass(w[0].category, DeprecationWarning)) |
|
122 | ||
123 | self.connection.send.has_been_called_with( |
|
124 | '<create_task>' |
|
125 | '<name>foo</name>' |
|
126 | '<config id="c1"/>' |
|
127 | '<target id="t1"/>' |
|
128 | '<scanner id="s1"/>' |
|
129 | '<alert id="a1"/>' |
|
130 | '</create_task>' |
|
131 | ) |
|
132 | ||
133 | self.gmp.create_task( |
|
134 | name='foo', |
|
135 | config_id='c1', |
|
136 | target_id='t1', |
|
137 | scanner_id='s1', |
|
138 | alert_ids=['a1'], |
|
139 | ) |
|
140 | ||
141 | self.connection.send.has_been_called_with( |
|
142 | '<create_task>' |
|
143 | '<name>foo</name>' |
|
144 | '<config id="c1"/>' |
|
145 | '<target id="t1"/>' |
|
146 | '<scanner id="s1"/>' |
|
147 | '<alert id="a1"/>' |
|
148 | '</create_task>' |
|
149 | ) |
|
150 | ||
151 | def test_create_task_multiple_alerts(self): |
|
152 | self.gmp.create_task( |
|
153 | name='foo', |
|
154 | config_id='c1', |
|
155 | target_id='t1', |
|
156 | scanner_id='s1', |
|
157 | alert_ids=['a1', 'a2', 'a3'], |
|
158 | ) |
|
159 | ||
160 | self.connection.send.has_been_called_with( |
|
161 | '<create_task>' |
|
162 | '<name>foo</name>' |
|
163 | '<config id="c1"/>' |
|
164 | '<target id="t1"/>' |
|
165 | '<scanner id="s1"/>' |
|
166 | '<alert id="a1"/>' |
|
167 | '<alert id="a2"/>' |
|
168 | '<alert id="a3"/>' |
|
169 | '</create_task>' |
|
170 | ) |
|
171 | ||
172 | def test_create_task_with_alterable(self): |
|
173 | self.gmp.create_task( |
|
174 | name='foo', |
|
175 | config_id='c1', |
|
176 | target_id='t1', |
|
177 | scanner_id='s1', |
|
178 | alterable=True, |
|
179 | ) |
|
180 | ||
181 | self.connection.send.has_been_called_with( |
|
182 | '<create_task>' |
|
183 | '<name>foo</name>' |
|
184 | '<config id="c1"/>' |
|
185 | '<target id="t1"/>' |
|
186 | '<scanner id="s1"/>' |
|
187 | '<alterable>1</alterable>' |
|
188 | '</create_task>' |
|
189 | ) |
|
190 | ||
191 | self.gmp.create_task( |
|
192 | name='foo', |
|
193 | config_id='c1', |
|
194 | target_id='t1', |
|
195 | scanner_id='s1', |
|
196 | alterable=False, |
|
197 | ) |
|
198 | ||
199 | self.connection.send.has_been_called_with( |
|
200 | '<create_task>' |
|
201 | '<name>foo</name>' |
|
202 | '<config id="c1"/>' |
|
203 | '<target id="t1"/>' |
|
204 | '<scanner id="s1"/>' |
|
205 | '<alterable>0</alterable>' |
|
206 | '</create_task>' |
|
207 | ) |
|
208 | ||
209 | def test_create_task_with_hosts_ordering(self): |
|
210 | self.gmp.create_task( |
|
211 | name='foo', |
|
212 | config_id='c1', |
|
213 | target_id='t1', |
|
214 | scanner_id='s1', |
|
215 | hosts_ordering=HostsOrdering.REVERSE, |
|
216 | ) |
|
217 | ||
218 | self.connection.send.has_been_called_with( |
|
219 | '<create_task>' |
|
220 | '<name>foo</name>' |
|
221 | '<config id="c1"/>' |
|
222 | '<target id="t1"/>' |
|
223 | '<scanner id="s1"/>' |
|
224 | '<hosts_ordering>reverse</hosts_ordering>' |
|
225 | '</create_task>' |
|
226 | ) |
|
227 | ||
228 | def test_create_task_invalid_hosts_ordering(self): |
|
229 | with self.assertRaises(InvalidArgumentType): |
|
230 | self.gmp.create_task( |
|
231 | name='foo', |
|
232 | config_id='c1', |
|
233 | target_id='t1', |
|
234 | scanner_id='s1', |
|
235 | hosts_ordering='foo', |
|
236 | ) |
|
237 | ||
238 | def test_create_task_with_schedule(self): |
|
239 | self.gmp.create_task( |
|
240 | name='foo', |
|
241 | config_id='c1', |
|
242 | target_id='t1', |
|
243 | scanner_id='s1', |
|
244 | schedule_id='s1', |
|
245 | ) |
|
246 | ||
247 | self.connection.send.has_been_called_with( |
|
248 | '<create_task>' |
|
249 | '<name>foo</name>' |
|
250 | '<config id="c1"/>' |
|
251 | '<target id="t1"/>' |
|
252 | '<scanner id="s1"/>' |
|
253 | '<schedule id="s1"/>' |
|
254 | '</create_task>' |
|
255 | ) |
|
256 | ||
257 | def test_create_task_with_schedule_and_schedule_periods(self): |
|
258 | self.gmp.create_task( |
|
259 | name='foo', |
|
260 | config_id='c1', |
|
261 | target_id='t1', |
|
262 | scanner_id='s1', |
|
263 | schedule_id='s1', |
|
264 | schedule_periods=0, |
|
265 | ) |
|
266 | ||
267 | self.connection.send.has_been_called_with( |
|
268 | '<create_task>' |
|
269 | '<name>foo</name>' |
|
270 | '<config id="c1"/>' |
|
271 | '<target id="t1"/>' |
|
272 | '<scanner id="s1"/>' |
|
273 | '<schedule id="s1"/>' |
|
274 | '<schedule_periods>0</schedule_periods>' |
|
275 | '</create_task>' |
|
276 | ) |
|
277 | ||
278 | self.gmp.create_task( |
|
279 | name='foo', |
|
280 | config_id='c1', |
|
281 | target_id='t1', |
|
282 | scanner_id='s1', |
|
283 | schedule_id='s1', |
|
284 | schedule_periods=5, |
|
285 | ) |
|
286 | ||
287 | self.connection.send.has_been_called_with( |
|
288 | '<create_task>' |
|
289 | '<name>foo</name>' |
|
290 | '<config id="c1"/>' |
|
291 | '<target id="t1"/>' |
|
292 | '<scanner id="s1"/>' |
|
293 | '<schedule id="s1"/>' |
|
294 | '<schedule_periods>5</schedule_periods>' |
|
295 | '</create_task>' |
|
296 | ) |
|
297 | ||
298 | def test_create_task_with_schedule_and_invalid_schedule_periods(self): |
|
299 | with self.assertRaises(InvalidArgument): |
|
300 | self.gmp.create_task( |
|
301 | name='foo', |
|
302 | config_id='c1', |
|
303 | target_id='t1', |
|
304 | scanner_id='s1', |
|
305 | schedule_id='s1', |
|
306 | schedule_periods='foo', |
|
307 | ) |
|
308 | ||
309 | with self.assertRaises(InvalidArgument): |
|
310 | self.gmp.create_task( |
|
311 | name='foo', |
|
312 | config_id='c1', |
|
313 | target_id='t1', |
|
314 | scanner_id='s1', |
|
315 | schedule_id='s1', |
|
316 | schedule_periods=-1, |
|
317 | ) |
|
318 | ||
319 | def test_create_task_with_observers(self): |
|
320 | self.gmp.create_task( |
|
321 | name='foo', |
|
322 | config_id='c1', |
|
323 | target_id='t1', |
|
324 | scanner_id='s1', |
|
325 | observers=['u1', 'u2'], |
|
326 | ) |
|
327 | ||
328 | self.connection.send.has_been_called_with( |
|
329 | '<create_task>' |
|
330 | '<name>foo</name>' |
|
331 | '<config id="c1"/>' |
|
332 | '<target id="t1"/>' |
|
333 | '<scanner id="s1"/>' |
|
334 | '<observers>u1,u2</observers>' |
|
335 | '</create_task>' |
|
336 | ) |
|
337 | ||
338 | def test_create_task_invalid_observers(self): |
|
339 | with self.assertRaises(InvalidArgumentType): |
|
340 | self.gmp.create_task( |
|
341 | name='foo', |
|
342 | config_id='c1', |
|
343 | target_id='t1', |
|
344 | scanner_id='s1', |
|
345 | observers='', |
|
346 | ) |
|
347 | ||
348 | with self.assertRaises(InvalidArgumentType): |
|
349 | self.gmp.create_task( |
|
350 | name='foo', |
|
351 | config_id='c1', |
|
352 | target_id='t1', |
|
353 | scanner_id='s1', |
|
354 | observers='foo', |
|
355 | ) |
|
356 | ||
357 | def test_create_task_with_preferences(self): |
|
358 | self.gmp.create_task( |
|
359 | name='foo', |
|
360 | config_id='c1', |
|
361 | target_id='t1', |
|
362 | scanner_id='s1', |
|
363 | preferences=OrderedDict([('foo', 'bar'), ('lorem', 'ipsum')]), |
|
364 | ) |
|
365 | ||
366 | self.connection.send.has_been_called_with( |
|
367 | '<create_task>' |
|
368 | '<name>foo</name>' |
|
369 | '<config id="c1"/>' |
|
370 | '<target id="t1"/>' |
|
371 | '<scanner id="s1"/>' |
|
372 | '<preferences>' |
|
373 | '<preference>' |
|
374 | '<scanner_name>foo</scanner_name>' |
|
375 | '<value>bar</value>' |
|
376 | '</preference>' |
|
377 | '<preference>' |
|
378 | '<scanner_name>lorem</scanner_name>' |
|
379 | '<value>ipsum</value>' |
|
380 | '</preference>' |
|
381 | '</preferences>' |
|
382 | '</create_task>' |
|
383 | ) |
|
384 | ||
385 | def test_create_task_invalid_preferences(self): |
|
386 | with self.assertRaises(InvalidArgumentType): |
|
387 | self.gmp.create_task( |
|
388 | name='foo', |
|
389 | config_id='c1', |
|
390 | target_id='t1', |
|
391 | scanner_id='s1', |
|
392 | preferences='', |
|
393 | ) |
|
394 | ||
395 | with self.assertRaises(InvalidArgumentType): |
|
396 | self.gmp.create_task( |
|
397 | name='foo', |
|
398 | config_id='c1', |
|
399 | target_id='t1', |
|
400 | scanner_id='s1', |
|
401 | preferences=['foo', 'bar'], |
|
402 | ) |
|
403 | ||
404 | def test_create_task_don_t_allow_container_task(self): |
|
405 | with self.assertRaises(InvalidArgument): |
|
406 | self.gmp.create_task( |
|
407 | name='foo', |
|
408 | config_id='c1', |
|
409 | target_id='0', |
|
410 | scanner_id='s1', |
|
411 | observers='', |
|
412 | ) |
|
413 | ||
414 | # target_id=0 is considered as False |
|
415 | with self.assertRaises(RequiredArgument): |
|
416 | self.gmp.create_task( |
|
417 | name='foo', |
|
418 | config_id='c1', |
|
419 | target_id=0, |
|
420 | scanner_id='s1', |
|
421 | observers='', |
|
422 | ) |
|
423 | ||
424 |