Project

General

Profile

Revision 63ab2c06

ID63ab2c0681c7ed241c726f864d6e7a75621d0b95
Parent 16fc60c8
Child 3ec8080a

Added by Vincent QUEMENER over 13 years ago

Ajout de tests sur les formulaires de sélection des hôtes et groupes d'hôtes dans VigiGraph.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@4996 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

vigigraph/tests/functional/test_host_selection_form.py
1
# -*- coding: utf-8 -*-
2
"""
3
Suite de tests du formulaire de sélection des hôtes et groupes d'hôtes.
4
"""
5
from nose.tools import assert_true, assert_equal
6
from datetime import datetime
7
import transaction
8

  
9
from vigigraph.tests import TestController
10
from vigilo.models.session import DBSession
11
from vigilo.models.tables import SupItemGroup, Host, Permission, \
12
                                    Event, CorrEvent, StateName, \
13
                                    User, UserGroup, DataPermission, \
14
                                    SupItemGroup
15
from vigilo.models.tables.grouphierarchy import GroupHierarchy
16
from vigilo.models.demo.functions import add_supitemgroup, \
17
    add_host, add_host2group, add_usergroup, add_user, \
18
    add_supitemgrouppermission, add_usergroup_permission
19

  
20

  
21
class TestHostSelectionForm(TestController):
22
    """
23
    Teste le formulaire de sélection des
24
    hôtes et groupes d'hôtes de Vigigraph.
25
    """
26

  
27
    def setUp(self):
28
        """Préparation de la base de données de tests."""
29

  
30
        # Initialisation de la base
31
        super(TestHostSelectionForm, self).setUp()
32

  
33
        # Ajout d'un groupe d'hôtes principal
34
        mainhostgroup = add_supitemgroup(u'mhg', None)
35

  
36
        # Ajout d'un premier groupe d'hôtes de second niveau
37
        hostgroup1 = add_supitemgroup(u'hg1', mainhostgroup)
38

  
39
        # Ajout d'un second groupe d'hôtes de second niveau
40
        hostgroup2 = add_supitemgroup(u'hg2', mainhostgroup)
41

  
42
        # Ajout de deux hôtes
43
        host1 = add_host(u'host1')
44
        host2 = add_host(u'host2')
45
        host3 = add_host(u'host3')
46

  
47
        # Ajout du premier hôte dans le groupe d'hôtes principal.
48
        add_host2group(host1, mainhostgroup)
49
        # Ajout du deuxième hôte dans le premier groupe d'hôtes de second niveau.
50
        add_host2group(host2, hostgroup1)
51
        # Ajout du troisième hôte dans le second groupe d'hôtes de second niveau.
52
        add_host2group(host3, hostgroup2)
53

  
54
        # Ajout de trois groupes d'utilisateurs
55
        poweruser_group = add_usergroup(u'powerusers')
56
        user_group = add_usergroup(u'users')
57
        visitor_group = add_usergroup(u'visitor')
58

  
59
        # Ajout de trois utilisateurs
60
        add_user(u'poweruser', u'some.power@us.er',
61
            u'Power User', u'poweruserpass', u'powerusers')
62
        add_user(u'user', u'some.random@us.er',
63
            u'User', u'userpass', u'users')
64
        add_user(u'visitor', u'some.visiting@us.er',
65
            u'', u'visitorpass', u'visitor')
66

  
67
        # Ajout des permissions sur le groupe d'hôtes
68
        # principal pour le premier groupe d'utilisateurs
69
        add_supitemgrouppermission(mainhostgroup, poweruser_group)
70

  
71
        # Ajout des permissions sur le premier groupe d'hôtes
72
        # secondaire pour le second groupe d'utilisateurs
73
        add_supitemgrouppermission(hostgroup1, user_group)
74

  
75
        # Ajout de la permission 'vigigraph-access' aux groupes d'utilisateurs
76
        perm = Permission.by_permission_name(u'vigigraph-access')
77
        add_usergroup_permission(poweruser_group, perm)
78
        add_usergroup_permission(user_group, perm)
79
        add_usergroup_permission(visitor_group, perm)
80

  
81
        # Validation des ajouts dans la base
82
        DBSession.flush()
83
        transaction.commit()
84

  
85
################################################################################
86

  
87
    def test_get_main_host_groups_when_allowed(self):
88
        """
89
        Récupération des groupes d'hôtes principaux avec les bons droits
90
        """
91

  
92
        # Récupération du groupe d'hôtes 'mhg' dans la base de données
93
        mainhostgroup = DBSession.query(SupItemGroup).filter(
94
                SupItemGroup.name == u'mhg').first()
95

  
96
        # Récupération des groupes d'hôtes principaux
97
        # accessibles à l'utilisateur 'poweruser'
98
        response = self.app.post(
99
            '/rpc/maingroups', {
100
            }, extra_environ={'REMOTE_USER': 'poweruser'})
101
        json = response.json
102

  
103
        # On s'assure que la liste de groupes
104
        # d'hôtes retournée contient bien 'mhg'
105
        assert_equal(
106
            json, {"items": [[
107
                mainhostgroup.name,
108
                unicode(mainhostgroup.idgroup)
109
            ]]}
110
        )
111

  
112
        # Récupération des groupes d'hôtes principaux
113
        # accessibles à l'utilisateur 'user'
114
        response = self.app.post(
115
            '/rpc/maingroups', {
116
            }, extra_environ={'REMOTE_USER': 'user'})
117
        json = response.json
118

  
119
        # On s'assure que la liste de groupes
120
        # d'hôtes retournée contient bien 'mhg'
121
        assert_equal(
122
            json, {"items": [[
123
                mainhostgroup.name,
124
                unicode(mainhostgroup.idgroup)
125
            ]]}
126
        )
127

  
128
    def test_get_main_host_groups_when_not_allowed(self):
129
        """
130
        Récupération des groupes d'hôtes principaux sans les bons droits
131
        """
132

  
133
        # Récupération des groupes d'hôtes principaux
134
        # accessibles à l'utilisateur 'visitor'
135
        response = self.app.post(
136
            '/rpc/maingroups', {
137
            }, extra_environ={'REMOTE_USER': 'visitor'})
138
        json = response.json
139

  
140
        # On s'assure que la liste de groupes d'hôtes retournée est bien vide
141
        assert_equal(
142
            json, {"items": []}
143
        )
144

  
145
################################################################################
146

  
147
    def test_get_host_groups_when_allowed(self):
148
        """
149
        Récupération des groupes d'hôtes secondaires avec les bons droits
150
        """
151

  
152
        # Récupération du groupe d'hôtes 'mhg' dans la base de données
153
        mainhostgroup = DBSession.query(SupItemGroup).filter(
154
                SupItemGroup.name == u'mhg').first()
155

  
156
        # Récupération du groupe d'hôtes 'hg1' dans la base de données
157
        hostgroup1 = DBSession.query(SupItemGroup).filter(
158
                SupItemGroup.name == u'hg1').first()
159

  
160
        # Récupération des groupes d'hôtes
161
        # accessibles à l'utilisateur 'poweruser'
162
        response = self.app.post(
163
            '/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), {
164
            }, extra_environ={'REMOTE_USER': 'poweruser'})
165
        json = response.json
166

  
167
        # On s'assure que la liste de groupes
168
        # d'hôtes retournée contient bien 'No subgroup'
169
        assert_equal(
170
            json, {"items": [
171
                ['No subgroup', unicode(mainhostgroup.idgroup)],
172
            ]}
173
        )
174

  
175
        # Récupération des groupes d'hôtes accessibles à l'utilisateur 'user'
176
        response = self.app.post(
177
            '/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), {
178
            }, extra_environ={'REMOTE_USER': 'user'})
179
        json = response.json
180

  
181
        # On s'assure que la liste de groupes
182
        # d'hôtes retournée contient bien 'hg1' et 'No subgroup'
183
        assert_equal(
184
            json, {"items": [
185
                ['No subgroup', unicode(mainhostgroup.idgroup)],
186
                [hostgroup1.name, unicode(hostgroup1.idgroup)]
187
            ]}
188
        )
189

  
190
    def test_get_host_groups_when_not_allowed(self):
191
        """
192
        Récupération des groupes d'hôtes secondaires sans les bons droits
193
        """
194

  
195
        # Récupération du groupe d'hôtes 'mhg' dans la base de données
196
        mainhostgroup = DBSession.query(SupItemGroup).filter(
197
                SupItemGroup.name == u'mhg').first()
198

  
199
        # Récupération des groupes d'hôtes
200
        # accessibles à l'utilisateur 'visitor'
201
        response = self.app.post(
202
            '/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), {
203
            }, extra_environ={'REMOTE_USER': 'visitor'})
204
        json = response.json
205

  
206
        # On s'assure que la liste de groupes d'hôtes
207
        # retournée contient uniquement 'No subgroups'
208
        assert_equal(
209
            json, {"items": [['No subgroup', '%s'
210
                % (mainhostgroup.idgroup, )]]}
211
        )
212

  
213
    def test_get_host_groups_from_inexisting_main_group(self):
214
        """
215
        Récupération des groupes d'hôtes d'un groupe principal inexistant
216
        """
217

  
218
        # Récupération des groupes d'hôtes accessibles à l'utilisateur
219
        # 'visitor' et appartenant à un groupe principal inexistant
220
        response = self.app.post(
221
            '/rpc/hostgroups?maingroupid=6666666', {
222
            }, extra_environ={'REMOTE_USER': 'visitor'})
223
        json = response.json
224

  
225
        # On s'assure que la liste de groupes d'hôtes
226
        # retournée contient uniquement 'No subgroups'
227
        assert_equal(
228
            json, {"items": [['No subgroup', '6666666']]}
229
        )
230

  
231
################################################################################
232

  
233
    def test_get_hosts_when_allowed(self):
234
        """
235
        Récupération des hôtes avec les bons droits
236
        """
237

  
238
        # Récupération du groupe d'hôtes 'mhg' dans la base de données
239
        mainhostgroup = DBSession.query(SupItemGroup).filter(
240
                SupItemGroup.name == u'mhg').first()
241

  
242
        # Récupération du groupe d'hôtes 'hg1' dans la base de données
243
        hostgroup1 = DBSession.query(SupItemGroup).filter(
244
                SupItemGroup.name == u'hg1').first()
245

  
246
        # Récupération des hôtes du groupe 'mhg'
247
        # accessibles à l'utilisateur 'poweruser'
248
        response = self.app.post(
249
            '/rpc/hosts?othergroupid=%s' % (mainhostgroup.idgroup, ), {
250
            }, extra_environ={'REMOTE_USER': 'poweruser'})
251
        json = response.json
252

  
253
        # On s'assure que la liste d'hôtes
254
        # retournée contient bien 'host1'
255
        assert_equal(
256
            json, {"items": [
257
                ['host1', unicode(mainhostgroup.idgroup)],
258
            ]}
259
        )
260

  
261
        # Récupération des hôtes du groupe 'mhg'
262
        # accessibles à l'utilisateur 'user'
263
        response = self.app.post(
264
            '/rpc/hosts?othergroupid=%s' % (mainhostgroup.idgroup, ), {
265
            }, extra_environ={'REMOTE_USER': 'user'})
266
        json = response.json
267

  
268
        # On s'assure que la liste d'hôtes
269
        # retournée contient bien 'host1'
270
        assert_equal(
271
            json, {"items": [
272
                ['host1', unicode(mainhostgroup.idgroup)],
273
            ]}
274
        )
275

  
276
        # Récupération des hôtes du groupe 'hg1'
277
        # accessibles à l'utilisateur 'user'
278
        response = self.app.post(
279
            '/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), {
280
            }, extra_environ={'REMOTE_USER': 'user'})
281
        json = response.json
282

  
283
        # On s'assure que la liste d'hôtes
284
        # retournée contient bien 'host2'
285
        assert_equal(
286
            json, {"items": [
287
                ['host2', unicode(hostgroup1.idgroup)],
288
            ]}
289
        )
290

  
291
    def test_get_hosts_when_not_allowed(self):
292
        """
293
        Récupération des hôtes sans les bons droits
294
        """
295

  
296
        # Récupération du groupe d'hôtes 'mhg' dans la base de données
297
        mainhostgroup = DBSession.query(SupItemGroup).filter(
298
                SupItemGroup.name == u'mhg').first()
299

  
300
        # Récupération du groupe d'hôtes
301
        # secondaire 'hg1' dans la base de données
302
        hostgroup1 = DBSession.query(SupItemGroup).filter(
303
                SupItemGroup.name == u'hg1').first()
304

  
305
        # Récupération des hôtes du groupe 'hg1'
306
        # accessibles à l'utilisateur 'poweruser'
307
        response = self.app.post(
308
            '/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), {
309
            }, extra_environ={'REMOTE_USER': 'poweruser'})
310
        json = response.json
311

  
312
        # On s'assure que la liste retournée est vide
313
        assert_equal(
314
            json, {"items": []}
315
        )
316

  
317
        # Récupération des hôtes du groupe 'hg1'
318
        # accessibles à l'utilisateur 'visitor'
319
        response = self.app.post(
320
            '/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), {
321
            }, extra_environ={'REMOTE_USER': 'visitor'})
322
        json = response.json
323

  
324
        # On s'assure que la liste d'hôtes retournée est vide
325
        assert_equal(
326
            json, {"items": []}
327
        )
328

  
329
    def test_get_hosts_from_inexisting_secondary_group(self):
330
        """
331
        Récupération des hôtes d'un groupe secondaire inexistant
332
        """
333

  
334
        # Récupération des hôtes accessibles à l'utilisateur
335
        # 'visitor' et appartenant à un groupe secondaire inexistant
336
        response = self.app.post(
337
            '/rpc/hosts?othergroupid=6666666', {
338
            }, extra_environ={'REMOTE_USER': 'visitor'})
339
        json = response.json
340

  
341
        # On s'assure que la liste retournée est vide
342
        assert_equal(
343
            json, {"items": []}
344
        )
345

  

Also available in: Unified diff