Completed
Push — master ( 48663a...f3cde9 )
by
unknown
31s queued 11s
created

GMPCreateTaskCommandTestCase.setUp()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
# Copyright (C) 2018 Greenbone Networks GmbH
3
#
4
# SPDX-License-Identifier: GPL-3.0-or-later
5
#
6
# This program is free software: you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation, either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19
import unittest
20
21
from gvm.errors import RequiredArgument, InvalidArgument
22
from gvm.protocols.gmpv7 import Gmp
23
24
from .. import MockConnection
25
26
27
class GMPCreateTaskCommandTestCase(unittest.TestCase):
28
29
    def setUp(self):
30
        self.connection = MockConnection()
31
        self.gmp = Gmp(self.connection)
32
33
    def test_create_task(self):
34
        self.gmp.create_task(
35
            name='foo',
36
            config_id='c1',
37
            target_id='t1',
38
            scanner_id='s1',
39
        )
40
41
        self.connection.send.has_been_called_with(
42
            '<create_task>'
43
            '<name>foo</name>'
44
            '<config id="c1"/>'
45
            '<target id="t1"/>'
46
            '<scanner id="s1"/>'
47
            '</create_task>'
48
        )
49
50
    def test_create_task_missing_name(self):
51
        with self.assertRaises(RequiredArgument):
52
            self.gmp.create_task(
53
                name=None,
54
                config_id='c1',
55
                target_id='t1',
56
                scanner_id='s1',
57
            )
58
59
        with self.assertRaises(RequiredArgument):
60
            self.gmp.create_task(
61
                name='',
62
                config_id='c1',
63
                target_id='t1',
64
                scanner_id='s1',
65
            )
66
67
    def test_create_task_missing_config_id(self):
68
        with self.assertRaises(RequiredArgument):
69
            self.gmp.create_task(
70
                name='foo',
71
                config_id=None,
72
                target_id='t1',
73
                scanner_id='s1',
74
            )
75
76
        with self.assertRaises(RequiredArgument):
77
            self.gmp.create_task(
78
                name='foo',
79
                config_id='',
80
                target_id='t1',
81
                scanner_id='s1',
82
            )
83
84
    def test_create_task_missing_target_id(self):
85
        with self.assertRaises(RequiredArgument):
86
            self.gmp.create_task(
87
                name='foo',
88
                config_id='c1',
89
                target_id=None,
90
                scanner_id='s1',
91
            )
92
93
        with self.assertRaises(RequiredArgument):
94
            self.gmp.create_task(
95
                name='foo',
96
                config_id='c1',
97
                target_id='',
98
                scanner_id='s1',
99
            )
100
101
    def test_create_task_missing_scanner_id(self):
102
        with self.assertRaises(RequiredArgument):
103
            self.gmp.create_task(
104
                name='foo',
105
                config_id='c1',
106
                target_id='t1',
107
                scanner_id=None,
108
            )
109
110
        with self.assertRaises(RequiredArgument):
111
            self.gmp.create_task(
112
                name='foo',
113
                config_id='c1',
114
                target_id='t1',
115
                scanner_id='',
116
            )
117
118
    def test_create_task_with_comment(self):
119
        self.gmp.create_task(
120
            name='foo',
121
            config_id='c1',
122
            target_id='t1',
123
            scanner_id='s1',
124
            comment='bar',
125
        )
126
127
        self.connection.send.has_been_called_with(
128
            '<create_task>'
129
            '<name>foo</name>'
130
            '<config id="c1"/>'
131
            '<target id="t1"/>'
132
            '<scanner id="s1"/>'
133
            '<comment>bar</comment>'
134
            '</create_task>'
135
        )
136
137
    def test_create_task_single_alert(self):
138
        self.gmp.create_task(
139
            name='foo',
140
            config_id='c1',
141
            target_id='t1',
142
            scanner_id='s1',
143
            alert_ids='a1', # will be removed in future
144
        )
145
146
        self.connection.send.has_been_called_with(
147
            '<create_task>'
148
            '<name>foo</name>'
149
            '<config id="c1"/>'
150
            '<target id="t1"/>'
151
            '<scanner id="s1"/>'
152
            '<alert id="a1"/>'
153
            '</create_task>'
154
        )
155
156
        self.gmp.create_task(
157
            name='foo',
158
            config_id='c1',
159
            target_id='t1',
160
            scanner_id='s1',
161
            alert_ids=['a1'],
162
        )
163
164
        self.connection.send.has_been_called_with(
165
            '<create_task>'
166
            '<name>foo</name>'
167
            '<config id="c1"/>'
168
            '<target id="t1"/>'
169
            '<scanner id="s1"/>'
170
            '<alert id="a1"/>'
171
            '</create_task>'
172
        )
173
174
    def test_create_task_multiple_alerts(self):
175
        self.gmp.create_task(
176
            name='foo',
177
            config_id='c1',
178
            target_id='t1',
179
            scanner_id='s1',
180
            alert_ids=['a1', 'a2', 'a3'],
181
        )
182
183
        self.connection.send.has_been_called_with(
184
            '<create_task>'
185
            '<name>foo</name>'
186
            '<config id="c1"/>'
187
            '<target id="t1"/>'
188
            '<scanner id="s1"/>'
189
            '<alert id="a1"/>'
190
            '<alert id="a2"/>'
191
            '<alert id="a3"/>'
192
            '</create_task>'
193
        )
194
195
    def test_create_task_with_alterable(self):
196
        self.gmp.create_task(
197
            name='foo',
198
            config_id='c1',
199
            target_id='t1',
200
            scanner_id='s1',
201
            alterable=True,
202
        )
203
204
        self.connection.send.has_been_called_with(
205
            '<create_task>'
206
            '<name>foo</name>'
207
            '<config id="c1"/>'
208
            '<target id="t1"/>'
209
            '<scanner id="s1"/>'
210
            '<alterable>1</alterable>'
211
            '</create_task>'
212
        )
213
214
        self.gmp.create_task(
215
            name='foo',
216
            config_id='c1',
217
            target_id='t1',
218
            scanner_id='s1',
219
            alterable=False,
220
        )
221
222
        self.connection.send.has_been_called_with(
223
            '<create_task>'
224
            '<name>foo</name>'
225
            '<config id="c1"/>'
226
            '<target id="t1"/>'
227
            '<scanner id="s1"/>'
228
            '<alterable>0</alterable>'
229
            '</create_task>'
230
        )
231
232
    def test_create_task_with_hosts_ordering(self):
233
        self.gmp.create_task(
234
            name='foo',
235
            config_id='c1',
236
            target_id='t1',
237
            scanner_id='s1',
238
            hosts_ordering='foo',
239
        )
240
241
        self.connection.send.has_been_called_with(
242
            '<create_task>'
243
            '<name>foo</name>'
244
            '<config id="c1"/>'
245
            '<target id="t1"/>'
246
            '<scanner id="s1"/>'
247
            '<hosts_ordering>foo</hosts_ordering>'
248
            '</create_task>'
249
        )
250
251
    def test_create_task_with_schedule(self):
252
        self.gmp.create_task(
253
            name='foo',
254
            config_id='c1',
255
            target_id='t1',
256
            scanner_id='s1',
257
            schedule_id='s1',
258
        )
259
260
        self.connection.send.has_been_called_with(
261
            '<create_task>'
262
            '<name>foo</name>'
263
            '<config id="c1"/>'
264
            '<target id="t1"/>'
265
            '<scanner id="s1"/>'
266
            '<schedule id="s1"/>'
267
            '</create_task>'
268
        )
269
270
    def test_create_task_with_schedule_and_schedule_periods(self):
271
        self.gmp.create_task(
272
            name='foo',
273
            config_id='c1',
274
            target_id='t1',
275
            scanner_id='s1',
276
            schedule_id='s1',
277
            schedule_periods=0,
278
        )
279
280
        self.connection.send.has_been_called_with(
281
            '<create_task>'
282
            '<name>foo</name>'
283
            '<config id="c1"/>'
284
            '<target id="t1"/>'
285
            '<scanner id="s1"/>'
286
            '<schedule id="s1"/>'
287
            '<schedule_periods>0</schedule_periods>'
288
            '</create_task>'
289
        )
290
291
        self.gmp.create_task(
292
            name='foo',
293
            config_id='c1',
294
            target_id='t1',
295
            scanner_id='s1',
296
            schedule_id='s1',
297
            schedule_periods=5,
298
        )
299
300
        self.connection.send.has_been_called_with(
301
            '<create_task>'
302
            '<name>foo</name>'
303
            '<config id="c1"/>'
304
            '<target id="t1"/>'
305
            '<scanner id="s1"/>'
306
            '<schedule id="s1"/>'
307
            '<schedule_periods>5</schedule_periods>'
308
            '</create_task>'
309
        )
310
311
    def test_create_task_with_schedule_and_invalid_schedule_periods(self):
312
        with self.assertRaises(InvalidArgument):
313
            self.gmp.create_task(
314
                name='foo',
315
                config_id='c1',
316
                target_id='t1',
317
                scanner_id='s1',
318
                schedule_id='s1',
319
                schedule_periods='foo',
320
            )
321
322
        with self.assertRaises(InvalidArgument):
323
            self.gmp.create_task(
324
                name='foo',
325
                config_id='c1',
326
                target_id='t1',
327
                scanner_id='s1',
328
                schedule_id='s1',
329
                schedule_periods=-1,
330
            )
331
332
    def test_create_task_with_observers(self):
333
        self.gmp.create_task(
334
            name='foo',
335
            config_id='c1',
336
            target_id='t1',
337
            scanner_id='s1',
338
            observers=['u1', 'u2'],
339
        )
340
341
        self.connection.send.has_been_called_with(
342
            '<create_task>'
343
            '<name>foo</name>'
344
            '<config id="c1"/>'
345
            '<target id="t1"/>'
346
            '<scanner id="s1"/>'
347
            '<observers>u1,u2</observers>'
348
            '</create_task>'
349
        )
350
351
352
if __name__ == '__main__':
353
    unittest.main()
354