Project

General

Profile

Revision 05432195

ID05432195e7753521495577ec9d25b1ebe2adba21
Parent 5ad460af
Child 24589c11

Added by Francois POIROTTE almost 13 years ago

Mise en commun code des tests unitaires.

Ajout de tableaux en ASCII art pour expliquer comment on construit les
objets pour le passage des tests (facilite la compréhension du bousin).

Change-Id: I6a2a90d30339592a33310936bee58794d7ea0d2c
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/262
Tested-by: Build system <>
Reviewed-by: Aurelien BOMPARD <>

View differences:

vigigraph/tests/functional/helpers.py
1
# -*- coding: utf-8 -*-
2

  
3
from vigilo.models.tables import Permission
4

  
5
from vigilo.models.demo.functions import add_supitemgroup, \
6
    add_host, add_host2group, add_usergroup, add_user, \
7
    add_supitemgrouppermission, add_usergroup_permission
8

  
9
from vigilo.models.demo.functions import add_graph, \
10
    add_graphgroup, add_graph2group, add_perfdatasource, \
11
    add_perfdatasource2graph, add_vigiloserver, add_application
12

  
13

  
14
def populateDB():
15
    """
16
    Peuple la base de données en ajoutant :
17
     - 3 groupes d'hôtes ;
18
     - 3 hôtes ;
19
     - 3 utilisateurs.
20
    Les objets construits respectent les matrices suivantes.
21

  
22

  
23
    Matrice des utilisateurs et groupes d'utilisateurs :
24

  
25
    util. \ groupe | managers | powerusers | users | visitor
26
    ---------------+----------+------------+-------+--------
27
    manager        |    X     |            |       |
28
    poweruser      |          |     X      |       |
29
    user           |          |            |   X   |
30
    visitor        |          |            |       |   X
31

  
32

  
33
    Matrice des groupes d'utilisateurs et des droits
34
    sur les groupes d'objets supervisés :
35

  
36
    usergroup \ supitemgroup |   mhg   |   hg1   |   hg2
37
                             | (host1) | (host2) | (host3)
38
    -------------------------+---------+---------+---------
39
    managers                 |    /    |    /    |    /
40
    powerusers               |    X    |    /    |    /
41
    users                    |         |    X    |
42
    visitors                 |         |         |
43
    (X = accès explicite, / = accès implicite)
44

  
45

  
46
    @return: Tuple contenant les trois hôtes créés.
47
    @rtype:  C{tuple} of C{vigilo.models.tables.Host}
48
    """
49

  
50
    # Ajout d'un groupe d'hôtes principal
51
    mainhostgroup = add_supitemgroup(u'mhg', None)
52

  
53
    # Ajout d'un premier groupe d'hôtes de second niveau
54
    hostgroup1 = add_supitemgroup(u'hg1', mainhostgroup)
55

  
56
    # Ajout d'un second groupe d'hôtes de second niveau
57
    hostgroup2 = add_supitemgroup(u'hg2', mainhostgroup)
58

  
59
    # Ajout de trois hôtes
60
    host1 = add_host(u'host1')
61
    host2 = add_host(u'host2')
62
    host3 = add_host(u'host3')
63

  
64
    # Ajout du premier hôte dans le groupe d'hôtes principal.
65
    add_host2group(host1, mainhostgroup)
66
    # Ajout du deuxième hôte dans le premier
67
    # groupe d'hôtes de second niveau.
68
    add_host2group(host2, hostgroup1)
69
    # Ajout du troisième hôte dans le second
70
    # groupe d'hôtes de second niveau.
71
    add_host2group(host3, hostgroup2)
72

  
73
    # Ajout de trois groupes d'utilisateurs
74
    poweruser_group = add_usergroup(u'powerusers')
75
    user_group = add_usergroup(u'users')
76
    visitor_group = add_usergroup(u'visitor')
77

  
78
    # Ajout de trois utilisateurs
79
    add_user(u'poweruser', u'some.power@us.er',
80
        u'Power User', u'poweruserpass', u'powerusers')
81
    add_user(u'user', u'some.random@us.er',
82
        u'User', u'userpass', u'users')
83
    add_user(u'visitor', u'some.visiting@us.er',
84
        u'', u'visitorpass', u'visitor')
85

  
86
    # Ajout des permissions sur le groupe d'hôtes
87
    # principal pour le premier groupe d'utilisateurs
88
    add_supitemgrouppermission(mainhostgroup, poweruser_group)
89

  
90
    # Ajout des permissions sur le premier groupe d'hôtes
91
    # secondaire pour le second groupe d'utilisateurs
92
    add_supitemgrouppermission(hostgroup1, user_group)
93

  
94
    # Ajout de la permission 'vigigraph-access' aux groupes d'utilisateurs
95
    perm = Permission.by_permission_name(u'vigigraph-access')
96
    add_usergroup_permission(poweruser_group, perm)
97
    add_usergroup_permission(user_group, perm)
98
    add_usergroup_permission(visitor_group, perm)
99

  
100
    return (host1, host2, host3)
101

  
102

  
103
def addGraphs(host1, host2, host3):
104
    """
105
    Ajout d'un graphe pour chacun des trois hôtes passés en paramètres.
106

  
107
    @param host1: Premier hôte.
108
    @type  host1: C{vigilo.models.tables.Host}
109
    @param host2: Deuxième hôte.
110
    @type  host2: C{vigilo.models.tables.Host}
111
    @param host3: Troisième hôte.
112
    @type  host3: C{vigilo.models.tables.Host}
113
    """
114

  
115
    # Ajout d'un serveur de supervision
116
    vigiloserver = add_vigiloserver(u'locahost')
117

  
118
    # Ajout d'une application 'vigirrd'
119
    add_application(u"vigirrd")
120

  
121
    # Ajout de trois graphes
122
    graph1 = add_graph("graph1")
123
    graph2 = add_graph("graph2")
124
    graph3 = add_graph("graph3")
125

  
126
    # Ajout d'une perfdatasource pour chaque hôte
127
    datasource1 = add_perfdatasource(
128
        u'load', host1, None, None, vigiloserver)
129
    datasource2 = add_perfdatasource(
130
        u'load', host2, None, None, vigiloserver)
131
    datasource3 = add_perfdatasource(
132
        u'load', host3, None, None, vigiloserver)
133

  
134
    # Ajout d'une perfdatsource à chaque graphe
135
    add_perfdatasource2graph(datasource1, graph1)
136
    add_perfdatasource2graph(datasource2, graph2)
137
    add_perfdatasource2graph(datasource3, graph3)
138

  
139
    # Ajout de trois groupes de graphes
140
    graphgroup1 = add_graphgroup("graphgroup1")
141
    graphgroup2 = add_graphgroup("graphgroup2")
142
    graphgroup3 = add_graphgroup("graphgroup3")
143

  
144
    # Ajout de chaque graphe à un groupe de graphes
145
    add_graph2group(graph1, graphgroup1)
146
    add_graph2group(graph2, graphgroup2)
147
    add_graph2group(graph3, graphgroup3)
vigigraph/tests/functional/test_graph_selection_form.py
10 10
from vigigraph.tests import TestController
11 11
from vigilo.models.session import DBSession
12 12
from vigilo.models.tables import Host, Graph, GraphGroup
13
from vigilo.models.demo.functions import \
14
    add_graph, add_graphgroup, add_graph2group, \
15
    add_perfdatasource, add_perfdatasource2graph, \
16
    add_vigiloserver, add_application
17

  
18
from vigigraph.tests.functional.test_host_selection_form import populateDB
19

  
20

  
21
def addGraphs(host1, host2, host3):
22
    """
23
    Ajout d'un graphe pour chacun des trois hôtes passés en paramètres.
24

  
25
    @param host1: Premier hôte.
26
    @type  host1: C{vigilo.models.tables.Host}
27
    @param host2: Deuxième hôte.
28
    @type  host2: C{vigilo.models.tables.Host}
29
    @param host3: Troisième hôte.
30
    @type  host3: C{vigilo.models.tables.Host}
31
    """
32

  
33
    # Ajout d'un serveur de supervision
34
    vigiloserver = add_vigiloserver(u'locahost')
35

  
36
    # Ajout d'une application 'vigirrd'
37
    add_application(u"vigirrd")
38

  
39
    # Ajout de trois graphes
40
    graph1 = add_graph("graph1")
41
    graph2 = add_graph("graph2")
42
    graph3 = add_graph("graph3")
43

  
44
    # Ajout d'une perfdatasource pour chaque hôte
45
    datasource1 = add_perfdatasource(
46
        u'load', host1, None, None, vigiloserver)
47
    datasource2 = add_perfdatasource(
48
        u'load', host2, None, None, vigiloserver)
49
    datasource3 = add_perfdatasource(
50
        u'load', host3, None, None, vigiloserver)
51

  
52
    # Ajout d'une perfdatsource à chaque graphe
53
    add_perfdatasource2graph(datasource1, graph1)
54
    add_perfdatasource2graph(datasource2, graph2)
55
    add_perfdatasource2graph(datasource3, graph3)
56

  
57
    # Ajout de trois groupes de graphes
58
    graphgroup1 = add_graphgroup("graphgroup1")
59
    graphgroup2 = add_graphgroup("graphgroup2")
60
    graphgroup3 = add_graphgroup("graphgroup3")
61

  
62
    # Ajout de chaque graphe à un groupe de graphes
63
    add_graph2group(graph1, graphgroup1)
64
    add_graph2group(graph2, graphgroup2)
65
    add_graph2group(graph3, graphgroup3)
13
from helpers import populateDB, addGraphs
66 14

  
67 15

  
68 16
class TestGraphTree(TestController):
vigigraph/tests/functional/test_host_selection_form.py
10 10
from vigigraph.tests import TestController
11 11
from vigilo.models.session import DBSession
12 12
from vigilo.models.tables import Host, SupItemGroup, Permission
13
from vigilo.models.demo.functions import add_supitemgroup, \
14
    add_host, add_host2group, add_usergroup, add_user, \
15
    add_supitemgrouppermission, add_usergroup_permission
16

  
17

  
18
def populateDB():
19
    """
20
    Peuple la base de données en ajoutant :
21
     - 3 groupes d'hôtes ;
22
     - 3 hôtes ;
23
     - 3 utilisateurs.
24
    Affecte les permissions nécessaires aux utilisateurs en vue des tests.
25
    Retourne les 3 hôtes créés.
26

  
27
    @return: Tuple contenant les trois hôtes.
28
    @rtype:  C{tuple} of C{vigilo.models.tables.Host}
29
    """
30

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

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

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

  
40
    # Ajout de trois hôtes
41
    host1 = add_host(u'host1')
42
    host2 = add_host(u'host2')
43
    host3 = add_host(u'host3')
44

  
45
    # Ajout du premier hôte dans le groupe d'hôtes principal.
46
    add_host2group(host1, mainhostgroup)
47
    # Ajout du deuxième hôte dans le premier
48
    # groupe d'hôtes de second niveau.
49
    add_host2group(host2, hostgroup1)
50
    # Ajout du troisième hôte dans le second
51
    # 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
    return (host1, host2, host3)
82

  
13
from helpers import populateDB
83 14

  
84 15
class TestHostTree(TestController):
85 16
    """
......
100 31
        DBSession.flush()
101 32
        transaction.commit()
102 33

  
103
##### Premier onglet déroulant du formulaire #####
104

  
105 34
    def test_get_root_host_groups_as_manager(self):
106 35
        """
107 36
        Récupération des groupes d'hôtes racines en tant que manager
......
115 44
            SupItemGroup.name == u'mhg').first()
116 45

  
117 46
        # Récupération des groupes d'hôtes principaux
118
        # accessibles à l'utilisateur 'manager'
47
        # accessibles à l'utilisateur 'manager'.
119 48
        response = self.app.post(
120 49
            '/rpc/hosttree', {
121 50
            }, extra_environ={'REMOTE_USER': 'manager'})
......
230 159
            '/rpc/hosttree', {
231 160
            }, status=401)
232 161

  
233
##### Deuxième onglet déroulant du formulaire #####
234

  
235 162
    def test_get_host_groups_when_allowed(self):
236 163
        """
237 164
        Récupération des groupes d'hôtes secondaires avec les bons droits
......
268 195
                    {'id': host1.idhost, 'name': host1.name, 'type': 'item'}
269 196
                ],
270 197
                'groups': [
271
                    {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'},
272
                    {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'},
273
                ]
198
                    {
199
                        'id': hostgroup1.idgroup,
200
                        'name': hostgroup1.name,
201
                        'type': 'group',
202
                    },
203
                    {
204
                        'id': hostgroup2.idgroup,
205
                        'name': hostgroup2.name,
206
                        'type': 'group',
207
                    },
208
                ],
274 209
            }
275 210
        )
276 211

  
......
289 224
                    {'id': host1.idhost, 'name': host1.name, 'type': 'item'}
290 225
                ],
291 226
                'groups': [
292
                    {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'},
293
                    {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'},
294
                ]
227
                    {
228
                        'id': hostgroup1.idgroup,
229
                        'name': hostgroup1.name,
230
                        'type': 'group',
231
                    },
232
                    {
233
                        'id': hostgroup2.idgroup,
234
                        'name': hostgroup2.name,
235
                        'type': 'group',
236
                    },
237
                ],
295 238
            }
296 239
        )
297 240

  
......
308 251
            json, {
309 252
                'items': [],
310 253
                'groups': [
311
                    {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'},
312
                ]
254
                    {
255
                        'id': hostgroup1.idgroup,
256
                        'name': hostgroup1.name,
257
                        'type': 'group',
258
                    },
259
                ],
313 260
            }
314 261
        )
315 262

  
......
367 314
            json, {'items': [], 'groups': []}
368 315
        )
369 316

  
370
##### Troisième onglet déroulant du formulaire #####
371

  
372 317
    def test_get_hosts_when_allowed(self):
373 318
        """
374 319
        Récupération des hôtes avec les bons droits
......
404 349
        # On s'assure que la liste d'hôtes retournée contient bien 'host1'
405 350
        self.assertEqual(
406 351
            json, {
407
                'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}],
352
                'items': [
353
                    {
354
                        'id': host1.idhost,
355
                        'name': host1.name,
356
                        'type': 'item',
357
                    },
358
                ],
408 359
                'groups': [
409
                    {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'},
410
                    {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}
411
                ]
360
                    {
361
                        'id': hostgroup1.idgroup,
362
                        'name': hostgroup1.name,
363
                        'type': 'group',
364
                    },
365
                    {
366
                        'id': hostgroup2.idgroup,
367
                        'name': hostgroup2.name,
368
                        'type': 'group',
369
                    },
370
                ],
412 371
            }
413 372
        )
414 373

  
......
422 381
        # On s'assure que la liste d'hotes retournée contient bien 'host2'
423 382
        self.assertEqual(
424 383
            json, {
425
                'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}],
426
                'groups': []
384
                'items': [
385
                    {
386
                        'id': host2.idhost,
387
                        'name': host2.name,
388
                        'type': 'item',
389
                    },
390
                ],
391
                'groups': [],
427 392
            }
428 393
        )
429 394

  
......
437 402
        # On s'assure que la liste d'hôtes retournée contient bien 'host1'
438 403
        self.assertEqual(
439 404
            json, {
440
                'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}],
405
                'items': [
406
                    {
407
                        'id': host1.idhost,
408
                        'name': host1.name,
409
                        'type': 'item',
410
                    },
411
                ],
441 412
                'groups': [
442
                    {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'},
443
                    {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'},
444
                ]
413
                    {
414
                        'id': hostgroup1.idgroup,
415
                        'name': hostgroup1.name,
416
                        'type': 'group',
417
                    },
418
                    {
419
                        'id': hostgroup2.idgroup,
420
                        'name': hostgroup2.name,
421
                        'type': 'group',
422
                    },
423
                ],
445 424
            }
446 425
        )
447 426

  
......
455 434
        # On s'assure que la liste d'hotes retournée contient bien 'host2'
456 435
        self.assertEqual(
457 436
            json, {
458
                'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}],
459
                'groups': []
437
                'items': [
438
                    {
439
                        'id': host2.idhost,
440
                        'name': host2.name,
441
                        'type': 'item',
442
                    },
443
                ],
444
                'groups': [],
460 445
            }
461 446
        )
462 447

  
......
470 455
        # On s'assure que la liste d'hôtes retournée contient bien 'host2'
471 456
        self.assertEqual(
472 457
            json, {
473
                'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}],
474
                'groups': []
458
                'items': [
459
                    {
460
                        'id': host2.idhost,
461
                        'name': host2.name,
462
                        'type': 'item',
463
                    },
464
                ],
465
                'groups': [],
475 466
            }
476 467
        )
477 468

  
......
505 496
        self.assertEqual(
506 497
            json, {
507 498
                'items': [],
508
                'groups': [{'name': hostgroup1.name, 'id': hostgroup1.idgroup, 'type': 'group'}]
499
                'groups': [
500
                    {
501
                        'name': hostgroup1.name,
502
                        'id': hostgroup1.idgroup,
503
                        'type': 'group',
504
                    },
505
                ],
509 506
            }
510 507
        )
511 508

  
vigigraph/tests/functional/test_search_form.py
10 10
from vigigraph.tests import TestController
11 11
from vigilo.models.session import DBSession
12 12
from vigilo.models.tables import Host, SupItemGroup, Graph, GraphGroup
13

  
14
from vigigraph.tests.functional.test_host_selection_form import populateDB
15
from vigigraph.tests.functional.test_graph_selection_form import addGraphs
13
from helpers import populateDB, addGraphs
16 14

  
17 15

  
18 16
class TestSearchForm(TestController):

Also available in: Unified diff