Code Duplication    Length = 393-406 lines in 3 locations

tests/protocols/gmpv208/testcmds/test_create_task.py 1 location

@@ 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

tests/protocols/gmpv9/testcmds/test_create_task.py 1 location

@@ 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

tests/protocols/gmpv7/testcmds/test_create_task.py 1 location

@@ 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