Completed
Push — master ( 486e1a...9be8a7 )
by Jaspar
02:33 queued 36s
created

GmpCreatePermissionTestMixin.test_create_permission()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
# Copyright (C) 2018-2021 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
from gvm.errors import RequiredArgument, InvalidArgumentType
20
21
from gvm.protocols.gmpv208 import PermissionSubjectType, EntityType
22
23
24
class GmpCreatePermissionTestMixin:
25
    def test_create_permission(self):
26
        self.gmp.create_permission(
27
            'foo', subject_id='u1', subject_type=PermissionSubjectType.USER
28
        )
29
30
        self.connection.send.has_been_called_with(
31
            '<create_permission>'
32
            '<name>foo</name>'
33
            '<subject id="u1">'
34
            '<type>user</type>'
35
            '</subject>'
36
            '</create_permission>'
37
        )
38
39
    def test_create_permission_missing_name(self):
40
        with self.assertRaises(RequiredArgument):
41
            self.gmp.create_permission(
42
                None, subject_id='u1', subject_type=PermissionSubjectType.USER
43
            )
44
45
        with self.assertRaises(RequiredArgument):
46
            self.gmp.create_permission(
47
                '', subject_id='u1', subject_type=PermissionSubjectType.USER
48
            )
49
50
    def test_create_permission_missing_subject_id(self):
51
        with self.assertRaises(RequiredArgument):
52
            self.gmp.create_permission(
53
                'create_task',
54
                subject_id=None,
55
                subject_type=PermissionSubjectType.USER,
56
            )
57
58
        with self.assertRaises(RequiredArgument):
59
            self.gmp.create_permission(
60
                'create_task',
61
                subject_id='',
62
                subject_type=PermissionSubjectType.USER,
63
            )
64
65
    def test_create_permission_invalid_subject_type(self):
66
        with self.assertRaises(InvalidArgumentType):
67
            self.gmp.create_permission(
68
                'create_task', subject_id='u1', subject_type=''
69
            )
70
71
        with self.assertRaises(InvalidArgumentType):
72
            self.gmp.create_permission(
73
                'create_task', subject_id='u1', subject_type=None
74
            )
75
76
        with self.assertRaises(InvalidArgumentType):
77
            self.gmp.create_permission(
78
                'create_task', subject_id='u1', subject_type='foo'
79
            )
80
81
    def test_create_permission_with_comment(self):
82
        self.gmp.create_permission(
83
            'create_task',
84
            subject_id='u1',
85
            subject_type=PermissionSubjectType.USER,
86
            comment='foo',
87
        )
88
89
        self.connection.send.has_been_called_with(
90
            '<create_permission>'
91
            '<name>create_task</name>'
92
            '<subject id="u1">'
93
            '<type>user</type>'
94
            '</subject>'
95
            '<comment>foo</comment>'
96
            '</create_permission>'
97
        )
98
99
    def test_create_permission_missing_resource_id(self):
100
        with self.assertRaises(RequiredArgument):
101
            self.gmp.create_permission(
102
                'create_task',
103
                subject_id='u1',
104
                subject_type=PermissionSubjectType.USER,
105
                resource_type=EntityType.TASK,
106
            )
107
108
    def test_create_permission_missing_resource_type(self):
109
        with self.assertRaises(RequiredArgument):
110
            self.gmp.create_permission(
111
                'create_task',
112
                subject_id='u1',
113
                subject_type=PermissionSubjectType.USER,
114
                resource_id='t1',
115
            )
116
117
    def test_create_permission_invalid_resource_type(self):
118
        with self.assertRaises(InvalidArgumentType):
119
            self.gmp.create_permission(
120
                'create_task',
121
                subject_id='u1',
122
                subject_type=PermissionSubjectType.USER,
123
                resource_type='foo',
124
                resource_id='t1',
125
            )
126
127
    def test_create_permission_with_resource(self):
128
        self.gmp.create_permission(
129
            'create_task',
130
            subject_id='u1',
131
            subject_type=PermissionSubjectType.USER,
132
            resource_id='t1',
133
            resource_type=EntityType.TASK,
134
        )
135
136
        self.connection.send.has_been_called_with(
137
            '<create_permission>'
138
            '<name>create_task</name>'
139
            '<subject id="u1">'
140
            '<type>user</type>'
141
            '</subject>'
142
            '<resource id="t1">'
143
            '<type>task</type>'
144
            '</resource>'
145
            '</create_permission>'
146
        )
147
148
    def test_create_permission_with_resource_type_audit(self):
149
        self.gmp.create_permission(
150
            'create_task',
151
            subject_id='u1',
152
            subject_type=PermissionSubjectType.USER,
153
            resource_id='t1',
154
            resource_type=EntityType.AUDIT,
155
        )
156
157
        self.connection.send.has_been_called_with(
158
            '<create_permission>'
159
            '<name>create_task</name>'
160
            '<subject id="u1">'
161
            '<type>user</type>'
162
            '</subject>'
163
            '<resource id="t1">'
164
            '<type>task</type>'
165
            '</resource>'
166
            '</create_permission>'
167
        )
168
169
    def test_create_permission_with_resource_type_policy(self):
170
        self.gmp.create_permission(
171
            'create_task',
172
            subject_id='u1',
173
            subject_type=PermissionSubjectType.USER,
174
            resource_id='t1',
175
            resource_type=EntityType.POLICY,
176
        )
177
178
        self.connection.send.has_been_called_with(
179
            '<create_permission>'
180
            '<name>create_task</name>'
181
            '<subject id="u1">'
182
            '<type>user</type>'
183
            '</subject>'
184
            '<resource id="t1">'
185
            '<type>config</type>'
186
            '</resource>'
187
            '</create_permission>'
188
        )
189