Project

General

Profile

Revision fc33fcfb

IDfc33fcfb995ac6552a198518f844ecaed41bcbb1
Parent 3ec8080a
Child fae18e45

Added by Vincent QUEMENER over 13 years ago

Ajout de tests sur le formulaire de sélection des graphes et groupes de graphes dans VigiGraph.
Amélioration de la qualité du code après passage de Pylint.

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

View differences:

vigigraph/controllers/rpc.py
116 116
        topgroups = DBSession.query(
117 117
                SupItemGroup,
118 118
            ).filter(SupItemGroup.idgroup.in_(groups_with_parents)
119
            ).except_(children).order_by(SupItemGroup.name).all()
120
        topgroups = [(sig.name, str(sig.idgroup)) for sig in topgroups]
119
            ).except_(children).order_by(SupItemGroup.name)
120
        topgroups = [(sig.name, str(sig.idgroup)) for sig in topgroups.all()]
121 121
        return dict(items=topgroups)
122 122

  
123 123
    class HostgroupsSchema(schema.Schema):
vigigraph/tests/functional/test_authentication.py
13 13
class TestAuthentication(TestController):
14 14
    """
15 15
    Tests for the default authentication setup.
16
    
16

  
17 17
    By default in TurboGears 2, :mod:`repoze.who` is configured with the same
18 18
    plugins specified by repoze.what-quickstart (which are listed in
19 19
    http://code.gustavonarea.net/repoze.what-quickstart/#repoze.what.plugins.quickstart.setup_sql_auth).
20
    
20

  
21 21
    As the settings for those plugins change, or the plugins are replaced,
22 22
    these tests should be updated.
23
    
23

  
24 24
    """
25
    
25

  
26 26
    application_under_test = 'main'
27
    
27

  
28 28
    def test_voluntary_login(self):
29 29
        """Voluntary logins must work correctly"""
30 30
        # Going to the login form voluntarily:
......
35 35
        form['password'] = u'managepass'
36 36
        post_login = form.submit(status=302)
37 37
        # Being redirected to the home page:
38
        assert post_login.location.startswith('/post_login'), "Result: %s" % post_login.location
38
        assert post_login.location.startswith('/post_login'), \
39
            "Result: %s" % post_login.location
39 40
        home_page = post_login.follow(status=302)
40 41
        assert 'authtkt' in home_page.request.cookies, \
41 42
               'Session cookie was not defined: %s' % home_page.request.cookies
42
        assert home_page.location == 'http://localhost/', "Result: %s" % home_page.location
43
        assert home_page.location == 'http://localhost/', \
44
            "Result: %s" % home_page.location
43 45

  
44 46
    def test_logout(self):
45 47
        """Logouts must work correctly"""
......
51 53
               'Session cookie was not defined: %s' % resp.request.cookies
52 54
        # Logging out:
53 55
        resp = self.app.get('/logout_handler', status=302)
54
        assert resp.location.startswith('/post_logout'), "Result: %s" % resp.location
56
        assert resp.location.startswith('/post_logout'), \
57
            "Result: %s" % resp.location
55 58
        # Finally, redirected to the home page:
56 59
        home_page = resp.follow(status=302)
57 60
        assert home_page.request.cookies.get('authtkt') == '' \
58 61
                or home_page.request.cookies.get('authtkt') == 'INVALID', \
59 62
               'Session cookie was not deleted: %s' % home_page.request.cookies
60
        assert home_page.location == 'http://localhost/', "Result: %s" % home_page.location
63
        assert home_page.location == 'http://localhost/', \
64
            "Result: %s" % home_page.location
61 65

  
vigigraph/tests/functional/test_graph_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_equal
6
import transaction
7

  
8
from vigigraph.tests import TestController
9
from vigilo.models.session import DBSession
10
from vigilo.models.tables import Host, \
11
    Graph, GraphGroup, Permission
12
from vigilo.models.demo.functions import add_supitemgroup, \
13
    add_host, add_host2group, add_usergroup, add_user, \
14
    add_supitemgrouppermission, add_usergroup_permission, \
15
    add_graph, add_graphgroup, add_graph2group, \
16
    add_perfdatasource, add_perfdatasource2graph, \
17
    add_vigiloserver, add_application
18

  
19

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

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

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

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

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

  
38
        # Ajout d'un groupe d'hôtes principal
39
        mainhostgroup = add_supitemgroup(u'mhg', None)
40

  
41
        # Ajout d'un premier groupe d'hôtes de second niveau
42
        hostgroup1 = add_supitemgroup(u'hg1', mainhostgroup)
43

  
44
        # Ajout d'un second groupe d'hôtes de second niveau
45
        hostgroup2 = add_supitemgroup(u'hg2', mainhostgroup)
46

  
47
        # Ajout de trois hôtes
48
        host1 = add_host(u'host1')
49
        host2 = add_host(u'host2')
50
        host3 = add_host(u'host3')
51

  
52
        # Ajout du premier hôte dans le groupe d'hôtes principal.
53
        add_host2group(host1, mainhostgroup)
54
        # Ajout du deuxième hôte dans le premier
55
        # groupe d'hôtes de second niveau.
56
        add_host2group(host2, hostgroup1)
57
        # Ajout du troisième hôte dans le second
58
        # groupe d'hôtes de second niveau.
59
        add_host2group(host3, hostgroup2)
60

  
61
        # Ajout de trois graphes
62
        graph1 = add_graph("graph1")
63
        graph2 = add_graph("graph2")
64
        graph3 = add_graph("graph3")
65

  
66
        # Ajout d'une perfdatasource pour chaque hôte
67
        datasource1 = add_perfdatasource(
68
            u'load', host1, None, None, vigiloserver)
69
        datasource2 = add_perfdatasource(
70
            u'load', host2, None, None, vigiloserver)
71
        datasource3 = add_perfdatasource(
72
            u'load', host3, None, None, vigiloserver)
73

  
74
        # Ajout d'une perfdatsource à chaque graphe
75
        add_perfdatasource2graph(datasource1, graph1)
76
        add_perfdatasource2graph(datasource2, graph2)
77
        add_perfdatasource2graph(datasource3, graph3)
78

  
79
        # Ajout de trois groupes de graphes
80
        graphgroup1 = add_graphgroup("graphgroup1")
81
        graphgroup2 = add_graphgroup("graphgroup2")
82
        graphgroup3 = add_graphgroup("graphgroup3")
83

  
84
        # Ajout de chaque graphe à un groupe de graphes
85
        add_graph2group(graph1, graphgroup1)
86
        add_graph2group(graph2, graphgroup2)
87
        add_graph2group(graph3, graphgroup3)
88

  
89
        # Ajout de trois groupes d'utilisateurs
90
        poweruser_group = add_usergroup(u'powerusers')
91
        user_group = add_usergroup(u'users')
92
        visitor_group = add_usergroup(u'visitor')
93

  
94
        # Ajout de trois utilisateurs
95
        add_user(u'poweruser', u'some.power@us.er',
96
            u'Power User', u'poweruserpass', u'powerusers')
97
        add_user(u'user', u'some.random@us.er',
98
            u'User', u'userpass', u'users')
99
        add_user(u'visitor', u'some.visiting@us.er',
100
            u'', u'visitorpass', u'visitor')
101

  
102
        # Ajout des permissions sur le groupe d'hôtes
103
        # principal pour le premier groupe d'utilisateurs
104
        add_supitemgrouppermission(mainhostgroup, poweruser_group)
105

  
106
        # Ajout des permissions sur le premier groupe d'hôtes
107
        # secondaire pour le second groupe d'utilisateurs
108
        add_supitemgrouppermission(hostgroup1, user_group)
109

  
110
        # Ajout de la permission 'vigigraph-access' aux groupes d'utilisateurs
111
        perm = Permission.by_permission_name(u'vigigraph-access')
112
        add_usergroup_permission(poweruser_group, perm)
113
        add_usergroup_permission(user_group, perm)
114
        add_usergroup_permission(visitor_group, perm)
115

  
116
        # Validation des ajouts dans la base
117
        DBSession.flush()
118
        transaction.commit()
119

  
120
##### Quatrième onglet déroulant du formulaire #####
121

  
122
    def test_get_graph_groups_when_allowed(self):
123
        """
124
        Récupération des groupes de graphes avec les bons droits
125
        """
126

  
127
        # Récupération de l'hôte 'host1' dans la base de données
128
        host1 = DBSession.query(Host).filter(
129
            Host.name == u'host1').first()
130

  
131
        # Récupération de l'hôte 'host2' dans la base de données
132
        host2 = DBSession.query(Host).filter(
133
            Host.name == u'host2').first()
134

  
135
        # Récupération de l'hôte 'host3' dans la base de données
136
        host3 = DBSession.query(Host).filter(
137
            Host.name == u'host3').first()
138

  
139
        # Récupération du groupe de graphes
140
        # 'graphgroup1' dans la base de données
141
        graphgroup1 = DBSession.query(GraphGroup).filter(
142
            GraphGroup.name == u'graphgroup1').first()
143

  
144
        # Récupération du groupe de graphes
145
        # 'graphgroup2' dans la base de données
146
        graphgroup2 = DBSession.query(GraphGroup).filter(
147
            GraphGroup.name == u'graphgroup2').first()
148

  
149
        # Récupération du groupe de graphes
150
        # 'graphgroup3' dans la base de données
151
        graphgroup3 = DBSession.query(GraphGroup).filter(
152
            GraphGroup.name == u'graphgroup3').first()
153

  
154
        # Récupération des groupes de graphes de l'hôte
155
        # host1 accessibles à l'utilisateur 'poweruser'
156
        response = self.app.post(
157
        '/rpc/graphgroups?idhost=%s' % (host1.idhost, ), {
158
            }, extra_environ={'REMOTE_USER': 'poweruser'})
159
        json = response.json
160

  
161
        # On s'assure que la liste de groupes
162
        # de graphes retournée contient bien 'graphgroup1'
163
        assert_equal(
164
            json, {"items": [
165
                [graphgroup1.name, unicode(graphgroup1.idgroup)]
166
            ]}
167
        )
168

  
169
        # Récupération des groupes de graphes de l'hôte
170
        # host2 accessibles à l'utilisateur 'poweruser'
171
        response = self.app.post(
172
        '/rpc/graphgroups?idhost=%s' % (host2.idhost, ), {
173
            }, extra_environ={'REMOTE_USER': 'poweruser'})
174
        json = response.json
175

  
176
        # On s'assure que la liste de groupes
177
        # de graphes retournée contient bien 'graphgroup2'
178
        assert_equal(
179
            json, {"items": [
180
                [graphgroup2.name, unicode(graphgroup2.idgroup)]
181
            ]}
182
        )
183

  
184
        # Récupération des groupes de graphes de l'hôte
185
        # host2 accessibles à l'utilisateur 'user'
186
        response = self.app.post(
187
        '/rpc/graphgroups?idhost=%s' % (host2.idhost, ), {
188
            }, extra_environ={'REMOTE_USER': 'user'})
189
        json = response.json
190

  
191
        # On s'assure que la liste de groupes
192
        # de graphes retournée contient bien 'graphgroup2'
193
        assert_equal(
194
            json, {"items": [
195
                [graphgroup2.name, unicode(graphgroup2.idgroup)]
196
            ]}
197
        )
198

  
199
        # Récupération des groupes de graphes de l'hôte
200
        # host3 accessibles à l'utilisateur 'poweruser'
201
        response = self.app.post(
202
        '/rpc/graphgroups?idhost=%s' % (host3.idhost, ), {
203
            }, extra_environ={'REMOTE_USER': 'poweruser'})
204
        json = response.json
205

  
206
        # On s'assure que la liste de groupes
207
        # de graphes retournée contient bien 'graphgroup3'
208
        assert_equal(
209
            json, {"items": [
210
                [graphgroup3.name, unicode(graphgroup3.idgroup)]
211
            ]}
212
        )
213
    def test_get_graph_groups_when_not_allowed(self):
214
        """
215
        Récupération des groupes de graphes sans les bons droits
216
        """
217

  
218
        # Récupération de l'hôte 'host1' dans la base de données
219
        host1 = DBSession.query(Host).filter(
220
            Host.name == u'host1').first()
221

  
222
        # Récupération de l'hôte 'host3' dans la base de données
223
        host3 = DBSession.query(Host).filter(
224
            Host.name == u'host3').first()
225

  
226
        # Récupération des groupes de graphes de l'hôte
227
        # host1 accessibles à l'utilisateur 'user'
228
        response = self.app.post(
229
        '/rpc/graphgroups?idhost=%s' % (host1.idhost, ), {
230
            }, extra_environ={'REMOTE_USER': 'user'})
231
        json = response.json
232

  
233
        # On s'assure que la liste de groupes
234
        # de graphes retournée est vide
235
        assert_equal(
236
            json, {"items": []}
237
        )
238

  
239
        # Récupération des groupes de graphes de l'hôte
240
        # host3 accessibles à l'utilisateur 'user'
241
        response = self.app.post(
242
        '/rpc/graphgroups?idhost=%s' % (host3.idhost, ), {
243
            }, extra_environ={'REMOTE_USER': 'user'})
244
        json = response.json
245

  
246
        # On s'assure que la liste de groupes
247
        # de graphes retournée est vide
248
        assert_equal(
249
            json, {"items": []}
250
        )
251

  
252
        # Récupération des groupes de graphes de l'hôte
253
        # host1 accessibles à l'utilisateur 'visitor'
254
        response = self.app.post(
255
        '/rpc/graphgroups?idhost=%s' % (host1.idhost, ), {
256
            }, extra_environ={'REMOTE_USER': 'visitor'})
257
        json = response.json
258

  
259
        # On s'assure que la liste de groupes
260
        # de graphes retournée est vide
261
        assert_equal(
262
            json, {"items": []}
263
        )
264

  
265
    def test_get_graph_groups_from_inexisting_host(self):
266
        """
267
        Récupération des groupes de graphes d'un hôte inexistant
268
        """
269

  
270
        # Récupération des groupes d'hôtes accessibles à l'utilisateur
271
        # 'visitor' et appartenant à un groupe principal inexistant
272
        response = self.app.post(
273
            '/rpc/graphgroups?idhost=6666666', {
274
            }, extra_environ={'REMOTE_USER': 'visitor'})
275
        json = response.json
276

  
277
        # On s'assure que la liste de groupes
278
        # de graphes retournée est vide
279
        assert_equal(
280
            json, {"items": []}
281
        )
282

  
283
##### Cinquième onglet déroulant du formulaire #####
284

  
285
    def test_get_graphs_when_allowed(self):
286
        """
287
        Récupération des graphes avec les bons droits
288
        """
289

  
290
        # Récupération de l'hôte 'host1' dans la base de données
291
        host1 = DBSession.query(Host).filter(
292
            Host.name == u'host1').first()
293

  
294
        # Récupération de l'hôte 'host2' dans la base de données
295
        host2 = DBSession.query(Host).filter(
296
            Host.name == u'host2').first()
297

  
298
        # Récupération de l'hôte 'host3' dans la base de données
299
        host3 = DBSession.query(Host).filter(
300
            Host.name == u'host3').first()
301

  
302
        # Récupération du groupe de graphes
303
        # 'graphgroup1' dans la base de données
304
        graphgroup1 = DBSession.query(GraphGroup).filter(
305
            GraphGroup.name == u'graphgroup1').first()
306

  
307
        # Récupération du groupe de graphes
308
        # 'graphgroup2' dans la base de données
309
        graphgroup2 = DBSession.query(GraphGroup).filter(
310
            GraphGroup.name == u'graphgroup2').first()
311

  
312
        # Récupération du groupe de graphes
313
        # 'graphgroup3' dans la base de données
314
        graphgroup3 = DBSession.query(GraphGroup).filter(
315
            GraphGroup.name == u'graphgroup3').first()
316

  
317
        # Récupération du graphe 'graph1'
318
        # dans la base de données
319
        graph1 = DBSession.query(Graph).filter(
320
            Graph.name == u'graph1').first()
321

  
322
        # Récupération du graphe 'graph2'
323
        # dans la base de données
324
        graph2 = DBSession.query(Graph).filter(
325
            Graph.name == u'graph2').first()
326

  
327
        # Récupération du graphe 'graph3'
328
        # dans la base de données
329
        graph3 = DBSession.query(Graph).filter(
330
            Graph.name == u'graph3').first()
331

  
332
        # Récupération des graphes du groupe de graphes
333
        # 'graphgroup1' accessibles à l'utilisateur 'poweruser'
334
        response = self.app.post(
335
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
336
            (graphgroup1.idgroup, host1.idhost), {},
337
            extra_environ={'REMOTE_USER': 'poweruser'})
338
        json = response.json
339

  
340
        # On s'assure que la liste de
341
        # graphes retournée contient 'graph1'
342
        assert_equal(
343
            json, {"items": [
344
                [graph1.name, unicode(graph1.idgraph)]
345
            ]}
346
        )
347

  
348
        # Récupération des graphes du groupe de graphes
349
        # 'graphgroup2' accessibles à l'utilisateur 'poweruser'
350
        response = self.app.post(
351
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
352
            (graphgroup2.idgroup, host2.idhost), {},
353
            extra_environ={'REMOTE_USER': 'poweruser'})
354
        json = response.json
355

  
356
        # On s'assure que la liste de
357
        # graphes retournée contient 'graph2'
358
        assert_equal(
359
            json, {"items": [
360
                [graph2.name, unicode(graph2.idgraph)]
361
            ]}
362
        )
363

  
364
        # Récupération des graphes du groupe de graphes
365
        # 'graphgroup2' accessibles à l'utilisateur 'user'
366
        response = self.app.post(
367
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
368
            (graphgroup2.idgroup, host2.idhost), {},
369
            extra_environ={'REMOTE_USER': 'user'})
370
        json = response.json
371

  
372
        # On s'assure que la liste de
373
        # graphes retournée contient 'graph2'
374
        assert_equal(
375
            json, {"items": [
376
                [graph2.name, unicode(graph2.idgraph)]
377
            ]}
378
        )
379

  
380
        # Récupération des graphes du groupe de graphes
381
        # 'graphgroup3' accessibles à l'utilisateur 'poweruser'
382
        response = self.app.post(
383
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
384
            (graphgroup3.idgroup, host3.idhost), {},
385
            extra_environ={'REMOTE_USER': 'poweruser'})
386
        json = response.json
387

  
388
        # On s'assure que la liste de
389
        # graphes retournée contient 'graph3'
390
        assert_equal(
391
            json, {"items": [
392
                [graph3.name, unicode(graph3.idgraph)]
393
            ]}
394
        )
395

  
396
    def test_get_graphs_when_not_allowed(self):
397
        """
398
        Récupération des graphes sans les bons droits
399
        """
400

  
401
        # Récupération de l'hôte 'host1' dans la base de données
402
        host1 = DBSession.query(Host).filter(
403
            Host.name == u'host1').first()
404

  
405
        # Récupération de l'hôte 'host3' dans la base de données
406
        host3 = DBSession.query(Host).filter(
407
            Host.name == u'host3').first()
408

  
409
        # Récupération du groupe de graphes
410
        # 'graphgroup1' dans la base de données
411
        graphgroup1 = DBSession.query(GraphGroup).filter(
412
            GraphGroup.name == u'graphgroup1').first()
413

  
414
        # Récupération du groupe de graphes
415
        # 'graphgroup3' dans la base de données
416
        graphgroup3 = DBSession.query(GraphGroup).filter(
417
            GraphGroup.name == u'graphgroup3').first()
418

  
419
        # Récupération des graphes du groupe de graphes
420
        # graphgroup1 accessibles à l'utilisateur 'user'
421
        response = self.app.post(
422
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
423
            (graphgroup1.idgroup, host1.idhost), {},
424
            extra_environ={'REMOTE_USER': 'user'})
425
        json = response.json
426

  
427
        # On s'assure que la liste de groupes
428
        # de graphes retournée est vide
429
        assert_equal(
430
            json, {"items": []}
431
        )
432

  
433
        # Récupération des graphes du groupe de graphes
434
        # 'graphgroup1' accessibles à l'utilisateur 'visitor'
435
        response = self.app.post(
436
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
437
            (graphgroup1.idgroup, host1.idhost), {},
438
            extra_environ={'REMOTE_USER': 'visitor'})
439
        json = response.json
440

  
441
        # On s'assure que la liste de groupes
442
        # de graphes retournée est vide
443
        assert_equal(
444
            json, {"items": []}
445
        )
446

  
447
        # Récupération des graphes du groupe de graphes
448
        # 'graphgroup3' accessibles à l'utilisateur 'user'
449
        response = self.app.post(
450
        '/rpc/graphs?idgraphgroup=%s&idhost=%s' %
451
            (graphgroup3.idgroup, host3.idhost), {},
452
            extra_environ={'REMOTE_USER': 'user'})
453
        json = response.json
454

  
455
        # On s'assure que la liste de groupes
456
        # de graphes retournée est vide
457
        assert_equal(
458
            json, {"items": []}
459
        )
460

  
461
    def test_get_graphs_from_inexisting_graph_group(self):
462
        """
463
        Récupération des graphes d'un groupe de graphes inexistant
464
        """
465

  
466
        # Récupération des graphes accessibles à l'utilisateur
467
        # 'visitor' et appartenant à un groupe inexistant
468
        response = self.app.post(
469
            '/rpc/graphs?idgraphgroup=6666666&idhost=6666666', {
470
            }, extra_environ={'REMOTE_USER': 'visitor'})
471
        json = response.json
472

  
473
        # On s'assure que la liste de
474
        # graphes retournée est vide
475
        assert_equal(
476
            json, {"items": []}
477
        )
478

  
479

  
vigigraph/tests/functional/test_host_selection_form.py
7 7

  
8 8
from vigigraph.tests import TestController
9 9
from vigilo.models.session import DBSession
10
from vigilo.models.tables import SupItemGroup, Permission, SupItemGroup
10
from vigilo.models.tables import SupItemGroup, Permission
11 11
from vigilo.models.demo.functions import add_supitemgroup, \
12 12
    add_host, add_host2group, add_usergroup, add_user, \
13 13
    add_supitemgrouppermission, add_usergroup_permission

Also available in: Unified diff