Passed
Pull Request — master (#89)
by
unknown
01:45
created

tests.protocols.gmpv7.test_modify_task   A

Complexity

Total Complexity 31

Size/Duplication

Total Lines 299
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 149
dl 0
loc 299
rs 9.92
c 0
b 0
f 0
wmc 31

20 Methods

Rating   Name   Duplication   Size   Complexity  
A GmpModifyTaskCommandTestCase.test_modify_task_with_target_id() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_schedule_id() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_missing_task_id() 0 9 4
A GmpModifyTaskCommandTestCase.test_modify_task_with_comment() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_name() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_invalid_alerts_ids() 0 11 3
A GmpModifyTaskCommandTestCase.test_modify_task_with_observers() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_invalid_preferences() 0 11 3
A GmpModifyTaskCommandTestCase.test_modify_task() 0 7 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_schedule() 0 8 1
A GmpModifyTaskCommandTestCase.setUp() 0 3 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_alerts_ids() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_preferences() 0 11 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_scanner_id() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_alterable() 0 19 1
A GmpModifyTaskCommandTestCase.test_modify_task_invalid_schedule_periods() 0 11 3
A GmpModifyTaskCommandTestCase.test_modify_task_with_config_id() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_invalid_observers() 0 11 3
A GmpModifyTaskCommandTestCase.test_modify_task_with_hosts_ordering() 0 8 1
A GmpModifyTaskCommandTestCase.test_modify_task_with_schedule_periods() 0 19 1
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 GmpModifyTaskCommandTestCase(unittest.TestCase):
28
29
    def setUp(self):
30
        self.connection = MockConnection()
31
        self.gmp = Gmp(self.connection)
32
33
    def test_modify_task(self):
34
        self.gmp.modify_task(
35
            't1',
36
        )
37
38
        self.connection.send.has_been_called_with(
39
            '<modify_task task_id="t1"/>'
40
        )
41
42
    def test_modify_task_missing_task_id(self):
43
        with self.assertRaises(RequiredArgument):
44
            self.gmp.modify_task(None)
45
46
        with self.assertRaises(RequiredArgument):
47
            self.gmp.modify_task('')
48
49
        with self.assertRaises(RequiredArgument):
50
            self.gmp.modify_task(task_id='')
51
52
    def test_modify_task_with_name(self):
53
        self.gmp.modify_task(
54
            task_id='t1',
55
            name='foo',
56
        )
57
58
        self.connection.send.has_been_called_with(
59
            '<modify_task task_id="t1">'
60
            '<name>foo</name>'
61
            '</modify_task>'
62
        )
63
64
    def test_modify_task_with_config_id(self):
65
        self.gmp.modify_task(
66
            task_id='t1',
67
            config_id='c1',
68
        )
69
70
        self.connection.send.has_been_called_with(
71
            '<modify_task task_id="t1">'
72
            '<config id="c1"/>'
73
            '</modify_task>'
74
        )
75
76
    def test_modify_task_with_target_id(self):
77
        self.gmp.modify_task(
78
            task_id='t1',
79
            target_id='t1',
80
        )
81
82
        self.connection.send.has_been_called_with(
83
            '<modify_task task_id="t1">'
84
            '<target id="t1"/>'
85
            '</modify_task>'
86
        )
87
88
    def test_modify_task_with_scanner_id(self):
89
        self.gmp.modify_task(
90
            task_id='t1',
91
            scanner_id='s1',
92
        )
93
94
        self.connection.send.has_been_called_with(
95
            '<modify_task task_id="t1">'
96
            '<scanner id="s1"/>'
97
            '</modify_task>'
98
        )
99
100
    def test_modify_task_with_schedule_id(self):
101
        self.gmp.modify_task(
102
            task_id='t1',
103
            schedule_id='s1',
104
        )
105
106
        self.connection.send.has_been_called_with(
107
            '<modify_task task_id="t1">'
108
            '<schedule id="s1"/>'
109
            '</modify_task>'
110
        )
111
112
    def test_modify_task_with_comment(self):
113
        self.gmp.modify_task(
114
            task_id='t1',
115
            comment='bar',
116
        )
117
118
        self.connection.send.has_been_called_with(
119
            '<modify_task task_id="t1">'
120
            '<comment>bar</comment>'
121
            '</modify_task>'
122
        )
123
124
    def test_modify_task_with_alerts_ids(self):
125
        self.gmp.modify_task(
126
            task_id='t1',
127
            alert_ids=['a1', 'a2', 'a3'],
128
        )
129
130
        self.connection.send.has_been_called_with(
131
            '<modify_task task_id="t1">'
132
            '<alert id="a1"/>'
133
            '<alert id="a2"/>'
134
            '<alert id="a3"/>'
135
            '</modify_task>'
136
        )
137
138
    def test_modify_task_invalid_alerts_ids(self):
139
        with self.assertRaises(InvalidArgument):
140
            self.gmp.modify_task(
141
                task_id='t1',
142
                alert_ids='',
143
            )
144
145
        with self.assertRaises(InvalidArgument):
146
            self.gmp.modify_task(
147
                task_id='t1',
148
                alert_ids='a1',
149
            )
150
151
    def test_modify_task_with_alterable(self):
152
        self.gmp.modify_task(
153
            task_id='t1',
154
            alterable=True,
155
        )
156
157
        self.connection.send.has_been_called_with(
158
            '<modify_task task_id="t1">'
159
            '<alterable>1</alterable>'
160
            '</modify_task>'
161
        )
162
163
        self.gmp.modify_task(
164
            task_id='t1',
165
            alterable=False,
166
        )
167
168
        self.connection.send.has_been_called_with(
169
            '<modify_task task_id="t1">'
170
            '<alterable>0</alterable>'
171
            '</modify_task>'
172
        )
173
174
    def test_modify_task_with_hosts_ordering(self):
175
        self.gmp.modify_task(
176
            task_id='t1',
177
            hosts_ordering='foo',
178
        )
179
180
        self.connection.send.has_been_called_with(
181
            '<modify_task task_id="t1">'
182
            '<hosts_ordering>foo</hosts_ordering>'
183
            '</modify_task>'
184
        )
185
186
    def test_modify_task_with_schedule(self):
187
        self.gmp.modify_task(
188
            task_id='t1',
189
            schedule_id='s1',
190
        )
191
192
        self.connection.send.has_been_called_with(
193
            '<modify_task task_id="t1">'
194
            '<schedule id="s1"/>'
195
            '</modify_task>'
196
        )
197
198
    def test_modify_task_with_schedule_periods(self):
199
        self.gmp.modify_task(
200
            task_id='t1',
201
            schedule_periods=0,
202
        )
203
204
        self.connection.send.has_been_called_with(
205
            '<modify_task task_id="t1">'
206
            '<schedule_periods>0</schedule_periods>'
207
            '</modify_task>'
208
        )
209
210
        self.gmp.modify_task(
211
            task_id='t1',
212
            schedule_periods=5,
213
        )
214
215
        self.connection.send.has_been_called_with(
216
            '<modify_task task_id="t1">'
217
            '<schedule_periods>5</schedule_periods>'
218
            '</modify_task>'
219
        )
220
221
    def test_modify_task_invalid_schedule_periods(self):
222
        with self.assertRaises(InvalidArgument):
223
            self.gmp.modify_task(
224
                task_id='t1',
225
                schedule_periods='foo',
226
            )
227
228
        with self.assertRaises(InvalidArgument):
229
            self.gmp.modify_task(
230
                task_id='t1',
231
                schedule_periods=-1,
232
            )
233
234
    def test_modify_task_with_observers(self):
235
        self.gmp.modify_task(
236
            task_id='t1',
237
            observers=['u1', 'u2'],
238
        )
239
240
        self.connection.send.has_been_called_with(
241
            '<modify_task task_id="t1">'
242
            '<observers>u1,u2</observers>'
243
            '</modify_task>'
244
        )
245
246
    def test_modify_task_invalid_observers(self):
247
        with self.assertRaises(InvalidArgument):
248
            self.gmp.modify_task(
249
                task_id='t1',
250
                observers='',
251
            )
252
253
        with self.assertRaises(InvalidArgument):
254
            self.gmp.modify_task(
255
                task_id='t1',
256
                observers='foo',
257
            )
258
259
    def test_modify_task_with_preferences(self):
260
        self.gmp.modify_task(
261
            task_id='t1',
262
            preferences={
263
                'foo': 'bar',
264
                'lorem': 'ipsum',
265
            },
266
        )
267
268
        self.connection.send.has_been_called_with(
269
            '<modify_task task_id="t1">'
270
            '<preferences>'
271
            '<preference>'
272
            '<scanner_name>foo</scanner_name>'
273
            '<value>bar</value>'
274
            '</preference>'
275
            '<preference>'
276
            '<scanner_name>lorem</scanner_name>'
277
            '<value>ipsum</value>'
278
            '</preference>'
279
            '</preferences>'
280
            '</modify_task>'
281
        )
282
283
    def test_modify_task_invalid_preferences(self):
284
        with self.assertRaises(InvalidArgument):
285
            self.gmp.modify_task(
286
                task_id='t1',
287
                preferences='',
288
            )
289
290
        with self.assertRaises(InvalidArgument):
291
            self.gmp.modify_task(
292
                task_id='t1',
293
                preferences=['foo', 'bar'],
294
            )
295
296
297
if __name__ == '__main__':
298
    unittest.main()
299