Revision fae18e45
Ajout de tests sur le formulaire de recherche de VigiGraph (plus précisément sur la transmission des résultats de la recherche au formulaire de sélection).
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@5012 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigigraph/tests/functional/test_graph_selection_form.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
""" |
3 |
Suite de tests du formulaire de sélection des hôtes et groupes d'hôtes.
|
|
3 |
Suite de tests du formulaire de sélection des graphes et groupes de graphes.
|
|
4 | 4 |
""" |
5 | 5 |
from nose.tools import assert_equal |
6 | 6 |
import transaction |
7 | 7 |
|
8 | 8 |
from vigigraph.tests import TestController |
9 | 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, \ |
|
10 |
from vigilo.models.tables import Host, Graph, GraphGroup |
|
11 |
from vigilo.models.demo.functions import \ |
|
15 | 12 |
add_graph, add_graphgroup, add_graph2group, \ |
16 | 13 |
add_perfdatasource, add_perfdatasource2graph, \ |
17 | 14 |
add_vigiloserver, add_application |
18 | 15 |
|
16 |
from vigigraph.tests.functional.test_host_selection_form import populateDB |
|
19 | 17 |
|
20 |
class TestHostSelectionForm(TestController): |
|
18 |
|
|
19 |
def addGraphs(host1, host2, host3): |
|
20 |
""" |
|
21 |
Ajout d'un graphe pour chacun des trois hôtes passés en paramètres. |
|
22 |
|
|
23 |
@param host1: Premier hôte. |
|
24 |
@type host1: L{vigilo.models.Host} |
|
25 |
@param host2: Deuxième hôte. |
|
26 |
@type host2: L{vigilo.models.Host} |
|
27 |
@param host3: Troisième hôte. |
|
28 |
@type host3: L{vigilo.models.Host} |
|
29 |
""" |
|
30 |
|
|
31 |
# Ajout d'un serveur de supervision |
|
32 |
vigiloserver = add_vigiloserver(u'locahost') |
|
33 |
|
|
34 |
# Ajout d'une application 'vigirrd' |
|
35 |
add_application(u"vigirrd") |
|
36 |
|
|
37 |
# Ajout de trois graphes |
|
38 |
graph1 = add_graph("graph1") |
|
39 |
graph2 = add_graph("graph2") |
|
40 |
graph3 = add_graph("graph3") |
|
41 |
|
|
42 |
# Ajout d'une perfdatasource pour chaque hôte |
|
43 |
datasource1 = add_perfdatasource( |
|
44 |
u'load', host1, None, None, vigiloserver) |
|
45 |
datasource2 = add_perfdatasource( |
|
46 |
u'load', host2, None, None, vigiloserver) |
|
47 |
datasource3 = add_perfdatasource( |
|
48 |
u'load', host3, None, None, vigiloserver) |
|
49 |
|
|
50 |
# Ajout d'une perfdatsource à chaque graphe |
|
51 |
add_perfdatasource2graph(datasource1, graph1) |
|
52 |
add_perfdatasource2graph(datasource2, graph2) |
|
53 |
add_perfdatasource2graph(datasource3, graph3) |
|
54 |
|
|
55 |
# Ajout de trois groupes de graphes |
|
56 |
graphgroup1 = add_graphgroup("graphgroup1") |
|
57 |
graphgroup2 = add_graphgroup("graphgroup2") |
|
58 |
graphgroup3 = add_graphgroup("graphgroup3") |
|
59 |
|
|
60 |
# Ajout de chaque graphe à un groupe de graphes |
|
61 |
add_graph2group(graph1, graphgroup1) |
|
62 |
add_graph2group(graph2, graphgroup2) |
|
63 |
add_graph2group(graph3, graphgroup3) |
|
64 |
|
|
65 |
|
|
66 |
class TestGraphSelectionForm(TestController): |
|
21 | 67 |
""" |
22 | 68 |
Teste le formulaire de sélection des |
23 |
hôtes et groupes d'hôtes de Vigigraph.
|
|
69 |
graphes et groupes de graphes de Vigigraph.
|
|
24 | 70 |
""" |
25 | 71 |
|
26 | 72 |
def setUp(self): |
27 | 73 |
"""Préparation de la base de données de tests.""" |
28 | 74 |
|
29 | 75 |
# 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) |
|
76 |
super(TestGraphSelectionForm, self).setUp() |
|
77 |
|
|
78 |
# Ajout de données de tests dans la base |
|
79 |
(host1, host2, host3) = populateDB() |
|
80 |
|
|
81 |
# Ajout de graphes dans la base |
|
82 |
addGraphs(host1, host2, host3) |
|
115 | 83 |
|
116 | 84 |
# Validation des ajouts dans la base |
117 | 85 |
DBSession.flush() |
... | ... | |
152 | 120 |
GraphGroup.name == u'graphgroup3').first() |
153 | 121 |
|
154 | 122 |
# Récupération des groupes de graphes de l'hôte |
123 |
# host1 accessibles à l'utilisateur 'manager' |
|
124 |
response = self.app.post( |
|
125 |
'/rpc/graphgroups?idhost=%s' % (host1.idhost, ), { |
|
126 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
127 |
json = response.json |
|
128 |
|
|
129 |
# On s'assure que la liste de groupes |
|
130 |
# de graphes retournée contient bien 'graphgroup1' |
|
131 |
assert_equal( |
|
132 |
json, {"items": [ |
|
133 |
[graphgroup1.name, unicode(graphgroup1.idgroup)] |
|
134 |
]} |
|
135 |
) |
|
136 |
|
|
137 |
# Récupération des groupes de graphes de l'hôte |
|
138 |
# host2 accessibles à l'utilisateur 'manager' |
|
139 |
response = self.app.post( |
|
140 |
'/rpc/graphgroups?idhost=%s' % (host2.idhost, ), { |
|
141 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
142 |
json = response.json |
|
143 |
|
|
144 |
# On s'assure que la liste de groupes |
|
145 |
# de graphes retournée contient bien 'graphgroup2' |
|
146 |
assert_equal( |
|
147 |
json, {"items": [ |
|
148 |
[graphgroup2.name, unicode(graphgroup2.idgroup)] |
|
149 |
]} |
|
150 |
) |
|
151 |
|
|
152 |
# Récupération des groupes de graphes de l'hôte |
|
155 | 153 |
# host1 accessibles à l'utilisateur 'poweruser' |
156 | 154 |
response = self.app.post( |
157 | 155 |
'/rpc/graphgroups?idhost=%s' % (host1.idhost, ), { |
... | ... | |
210 | 208 |
[graphgroup3.name, unicode(graphgroup3.idgroup)] |
211 | 209 |
]} |
212 | 210 |
) |
211 |
|
|
213 | 212 |
def test_get_graph_groups_when_not_allowed(self): |
214 | 213 |
""" |
215 | 214 |
Récupération des groupes de graphes sans les bons droits |
... | ... | |
262 | 261 |
json, {"items": []} |
263 | 262 |
) |
264 | 263 |
|
264 |
def test_get_graph_groups_as_anonymous(self): |
|
265 |
""" |
|
266 |
Récupération des groupes de graphes en tant qu'anonyme |
|
267 |
""" |
|
268 |
|
|
269 |
# Récupération de l'hôte 'host1' dans la base de données |
|
270 |
host1 = DBSession.query(Host).filter( |
|
271 |
Host.name == u'host1').first() |
|
272 |
|
|
273 |
# Récupération des groupes de graphes de l'hôte |
|
274 |
# 'host1' par un utilisateur anonyme : le contrôleur |
|
275 |
# doit retourner une erreur 401 (HTTPUnauthorized) |
|
276 |
self.app.post( |
|
277 |
'/rpc/graphgroups?idhost=%s' % (host1.idhost, ), { |
|
278 |
}, status=401) |
|
279 |
|
|
265 | 280 |
def test_get_graph_groups_from_inexisting_host(self): |
266 | 281 |
""" |
267 | 282 |
Récupération des groupes de graphes d'un hôte inexistant |
... | ... | |
330 | 345 |
Graph.name == u'graph3').first() |
331 | 346 |
|
332 | 347 |
# Récupération des graphes du groupe de graphes |
348 |
# 'graphgroup1' accessibles à l'utilisateur 'manager' |
|
349 |
response = self.app.post( |
|
350 |
'/rpc/graphs?idgraphgroup=%s&idhost=%s' % |
|
351 |
(graphgroup1.idgroup, host1.idhost), {}, |
|
352 |
extra_environ={'REMOTE_USER': 'manager'}) |
|
353 |
json = response.json |
|
354 |
|
|
355 |
# On s'assure que la liste de |
|
356 |
# graphes retournée contient 'graph1' |
|
357 |
assert_equal( |
|
358 |
json, {"items": [ |
|
359 |
[graph1.name, unicode(graph1.idgraph)] |
|
360 |
]} |
|
361 |
) |
|
362 |
|
|
363 |
# Récupération des graphes du groupe de graphes |
|
364 |
# 'graphgroup2' accessibles à l'utilisateur 'manager' |
|
365 |
response = self.app.post( |
|
366 |
'/rpc/graphs?idgraphgroup=%s&idhost=%s' % |
|
367 |
(graphgroup2.idgroup, host2.idhost), {}, |
|
368 |
extra_environ={'REMOTE_USER': 'manager'}) |
|
369 |
json = response.json |
|
370 |
|
|
371 |
# On s'assure que la liste de |
|
372 |
# graphes retournée contient 'graph2' |
|
373 |
assert_equal( |
|
374 |
json, {"items": [ |
|
375 |
[graph2.name, unicode(graph2.idgraph)] |
|
376 |
]} |
|
377 |
) |
|
378 |
|
|
379 |
# Récupération des graphes du groupe de graphes |
|
333 | 380 |
# 'graphgroup1' accessibles à l'utilisateur 'poweruser' |
334 | 381 |
response = self.app.post( |
335 | 382 |
'/rpc/graphs?idgraphgroup=%s&idhost=%s' % |
... | ... | |
458 | 505 |
json, {"items": []} |
459 | 506 |
) |
460 | 507 |
|
508 |
def test_get_graphs_as_anonymous(self): |
|
509 |
""" |
|
510 |
Récupération des graphes en tant qu'anonyme |
|
511 |
""" |
|
512 |
|
|
513 |
# Récupération de l'hôte 'host1' dans la base de données |
|
514 |
host1 = DBSession.query(Host).filter( |
|
515 |
Host.name == u'host1').first() |
|
516 |
|
|
517 |
# Récupération du groupe de graphes |
|
518 |
# 'graphgroup1' dans la base de données |
|
519 |
graphgroup1 = DBSession.query(GraphGroup).filter( |
|
520 |
GraphGroup.name == u'graphgroup1').first() |
|
521 |
|
|
522 |
# Récupération des graphes du groupe de graphes |
|
523 |
# 'graphgroup1' par un utilisateur anonyme : le contrôleur |
|
524 |
# doit retourner une erreur 401 (HTTPUnauthorized) |
|
525 |
self.app.post( |
|
526 |
'/rpc/graphs?idgraphgroup=%s&idhost=%s' % |
|
527 |
(graphgroup1.idgroup, host1.idhost), |
|
528 |
{}, status=401) |
|
529 |
|
|
461 | 530 |
def test_get_graphs_from_inexisting_graph_group(self): |
462 | 531 |
""" |
463 | 532 |
Récupération des graphes d'un groupe de graphes inexistant |
464 | 533 |
""" |
465 | 534 |
|
466 | 535 |
# Récupération des graphes accessibles à l'utilisateur |
467 |
# 'visitor' et appartenant à un groupe inexistant
|
|
536 |
# 'manager' et appartenant à un groupe inexistant
|
|
468 | 537 |
response = self.app.post( |
469 | 538 |
'/rpc/graphs?idgraphgroup=6666666&idhost=6666666', { |
470 |
}, extra_environ={'REMOTE_USER': 'visitor'})
|
|
539 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
471 | 540 |
json = response.json |
472 | 541 |
|
473 | 542 |
# On s'assure que la liste de |
vigigraph/tests/functional/test_host_selection_form.py | ||
---|---|---|
13 | 13 |
add_supitemgrouppermission, add_usergroup_permission |
14 | 14 |
|
15 | 15 |
|
16 |
def populateDB(): |
|
17 |
""" |
|
18 |
Peuple la base de données en ajoutant : |
|
19 |
- 3 groupes d'hôtes ; |
|
20 |
- 3 hôtes ; |
|
21 |
- 3 utilisateurs. |
|
22 |
Affecte les permissions nécessaires aux utilisateurs en vue des tests. |
|
23 |
Retourne les 3 hôtes créés. |
|
24 |
|
|
25 |
@return: Tuple contenant les trois hôtes. |
|
26 |
@rtype: C{tuple} of L{vigilo.models.Host} |
|
27 |
""" |
|
28 |
|
|
29 |
# Ajout d'un groupe d'hôtes principal |
|
30 |
mainhostgroup = add_supitemgroup(u'mhg', None) |
|
31 |
|
|
32 |
# Ajout d'un premier groupe d'hôtes de second niveau |
|
33 |
hostgroup1 = add_supitemgroup(u'hg1', mainhostgroup) |
|
34 |
|
|
35 |
# Ajout d'un second groupe d'hôtes de second niveau |
|
36 |
hostgroup2 = add_supitemgroup(u'hg2', mainhostgroup) |
|
37 |
|
|
38 |
# Ajout de trois hôtes |
|
39 |
host1 = add_host(u'host1') |
|
40 |
host2 = add_host(u'host2') |
|
41 |
host3 = add_host(u'host3') |
|
42 |
|
|
43 |
# Ajout du premier hôte dans le groupe d'hôtes principal. |
|
44 |
add_host2group(host1, mainhostgroup) |
|
45 |
# Ajout du deuxième hôte dans le premier |
|
46 |
# groupe d'hôtes de second niveau. |
|
47 |
add_host2group(host2, hostgroup1) |
|
48 |
# Ajout du troisième hôte dans le second |
|
49 |
# groupe d'hôtes de second niveau. |
|
50 |
add_host2group(host3, hostgroup2) |
|
51 |
|
|
52 |
# Ajout de trois groupes d'utilisateurs |
|
53 |
poweruser_group = add_usergroup(u'powerusers') |
|
54 |
user_group = add_usergroup(u'users') |
|
55 |
visitor_group = add_usergroup(u'visitor') |
|
56 |
|
|
57 |
# Ajout de trois utilisateurs |
|
58 |
add_user(u'poweruser', u'some.power@us.er', |
|
59 |
u'Power User', u'poweruserpass', u'powerusers') |
|
60 |
add_user(u'user', u'some.random@us.er', |
|
61 |
u'User', u'userpass', u'users') |
|
62 |
add_user(u'visitor', u'some.visiting@us.er', |
|
63 |
u'', u'visitorpass', u'visitor') |
|
64 |
|
|
65 |
# Ajout des permissions sur le groupe d'hôtes |
|
66 |
# principal pour le premier groupe d'utilisateurs |
|
67 |
add_supitemgrouppermission(mainhostgroup, poweruser_group) |
|
68 |
|
|
69 |
# Ajout des permissions sur le premier groupe d'hôtes |
|
70 |
# secondaire pour le second groupe d'utilisateurs |
|
71 |
add_supitemgrouppermission(hostgroup1, user_group) |
|
72 |
|
|
73 |
# Ajout de la permission 'vigigraph-access' aux groupes d'utilisateurs |
|
74 |
perm = Permission.by_permission_name(u'vigigraph-access') |
|
75 |
add_usergroup_permission(poweruser_group, perm) |
|
76 |
add_usergroup_permission(user_group, perm) |
|
77 |
add_usergroup_permission(visitor_group, perm) |
|
78 |
|
|
79 |
return (host1, host2, host3) |
|
80 |
|
|
81 |
|
|
16 | 82 |
class TestHostSelectionForm(TestController): |
17 | 83 |
""" |
18 | 84 |
Teste le formulaire de sélection des |
... | ... | |
25 | 91 |
# Initialisation de la base |
26 | 92 |
super(TestHostSelectionForm, self).setUp() |
27 | 93 |
|
28 |
# Ajout d'un groupe d'hôtes principal |
|
29 |
mainhostgroup = add_supitemgroup(u'mhg', None) |
|
30 |
|
|
31 |
# Ajout d'un premier groupe d'hôtes de second niveau |
|
32 |
hostgroup1 = add_supitemgroup(u'hg1', mainhostgroup) |
|
33 |
|
|
34 |
# Ajout d'un second groupe d'hôtes de second niveau |
|
35 |
hostgroup2 = add_supitemgroup(u'hg2', mainhostgroup) |
|
36 |
|
|
37 |
# Ajout de trois hôtes |
|
38 |
host1 = add_host(u'host1') |
|
39 |
host2 = add_host(u'host2') |
|
40 |
host3 = add_host(u'host3') |
|
41 |
|
|
42 |
# Ajout du premier hôte dans le groupe d'hôtes principal. |
|
43 |
add_host2group(host1, mainhostgroup) |
|
44 |
# Ajout du deuxième hôte dans le premier |
|
45 |
# groupe d'hôtes de second niveau. |
|
46 |
add_host2group(host2, hostgroup1) |
|
47 |
# Ajout du troisième hôte dans le second |
|
48 |
# groupe d'hôtes de second niveau. |
|
49 |
add_host2group(host3, hostgroup2) |
|
50 |
|
|
51 |
# Ajout de trois groupes d'utilisateurs |
|
52 |
poweruser_group = add_usergroup(u'powerusers') |
|
53 |
user_group = add_usergroup(u'users') |
|
54 |
visitor_group = add_usergroup(u'visitor') |
|
55 |
|
|
56 |
# Ajout de trois utilisateurs |
|
57 |
add_user(u'poweruser', u'some.power@us.er', |
|
58 |
u'Power User', u'poweruserpass', u'powerusers') |
|
59 |
add_user(u'user', u'some.random@us.er', |
|
60 |
u'User', u'userpass', u'users') |
|
61 |
add_user(u'visitor', u'some.visiting@us.er', |
|
62 |
u'', u'visitorpass', u'visitor') |
|
63 |
|
|
64 |
# Ajout des permissions sur le groupe d'hôtes |
|
65 |
# principal pour le premier groupe d'utilisateurs |
|
66 |
add_supitemgrouppermission(mainhostgroup, poweruser_group) |
|
67 |
|
|
68 |
# Ajout des permissions sur le premier groupe d'hôtes |
|
69 |
# secondaire pour le second groupe d'utilisateurs |
|
70 |
add_supitemgrouppermission(hostgroup1, user_group) |
|
71 |
|
|
72 |
# Ajout de la permission 'vigigraph-access' aux groupes d'utilisateurs |
|
73 |
perm = Permission.by_permission_name(u'vigigraph-access') |
|
74 |
add_usergroup_permission(poweruser_group, perm) |
|
75 |
add_usergroup_permission(user_group, perm) |
|
76 |
add_usergroup_permission(visitor_group, perm) |
|
94 |
# Ajout de données de tests dans la base |
|
95 |
populateDB() |
|
77 | 96 |
|
78 | 97 |
# Validation des ajouts dans la base |
79 | 98 |
DBSession.flush() |
... | ... | |
91 | 110 |
SupItemGroup.name == u'mhg').first() |
92 | 111 |
|
93 | 112 |
# Récupération des groupes d'hôtes principaux |
113 |
# accessibles à l'utilisateur 'manager' |
|
114 |
response = self.app.post( |
|
115 |
'/rpc/maingroups', { |
|
116 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
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, unicode(mainhostgroup.idgroup)] |
|
124 |
]} |
|
125 |
) |
|
126 |
|
|
127 |
# Récupération des groupes d'hôtes principaux |
|
94 | 128 |
# accessibles à l'utilisateur 'poweruser' |
95 | 129 |
response = self.app.post( |
96 | 130 |
'/rpc/maingroups', { |
... | ... | |
138 | 172 |
json, {"items": []} |
139 | 173 |
) |
140 | 174 |
|
175 |
def test_get_main_host_groups_as_anonymous(self): |
|
176 |
""" |
|
177 |
Récupération des groupes d'hôtes principaux en tant qu'anonyme |
|
178 |
""" |
|
179 |
|
|
180 |
# Récupération des groupes d'hôtes principaux |
|
181 |
# par un utilisateur anonyme : le contrôleur doit |
|
182 |
# retourner une erreur 401 (HTTPUnauthorized) |
|
183 |
self.app.post( |
|
184 |
'/rpc/maingroups', { |
|
185 |
}, status=401) |
|
186 |
|
|
141 | 187 |
##### Deuxième onglet déroulant du formulaire ##### |
142 | 188 |
|
143 | 189 |
def test_get_host_groups_when_allowed(self): |
... | ... | |
158 | 204 |
SupItemGroup.name == u'hg2').first() |
159 | 205 |
|
160 | 206 |
# Récupération des groupes d'hôtes |
207 |
# accessibles à l'utilisateur 'manager' |
|
208 |
response = self.app.post( |
|
209 |
'/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), { |
|
210 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
211 |
json = response.json |
|
212 |
|
|
213 |
# On s'assure que la liste de groupes d'hôtes retournée |
|
214 |
# contient bien 'No subgroup', 'hg1', et 'hg2' |
|
215 |
assert_equal( |
|
216 |
json, {"items": [ |
|
217 |
['No subgroup', unicode(mainhostgroup.idgroup)], |
|
218 |
[hostgroup1.name, unicode(hostgroup1.idgroup)], |
|
219 |
[hostgroup2.name, unicode(hostgroup2.idgroup)], |
|
220 |
]} |
|
221 |
) |
|
222 |
|
|
223 |
# Récupération des groupes d'hôtes |
|
161 | 224 |
# accessibles à l'utilisateur 'poweruser' |
162 | 225 |
response = self.app.post( |
163 | 226 |
'/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), { |
... | ... | |
212 | 275 |
% (mainhostgroup.idgroup, )]]} |
213 | 276 |
) |
214 | 277 |
|
278 |
def test_get_host_groups_as_anonymous(self): |
|
279 |
""" |
|
280 |
Récupération des groupes d'hôtes secondaires en tant qu'anonyme |
|
281 |
""" |
|
282 |
|
|
283 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données |
|
284 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
|
285 |
SupItemGroup.name == u'mhg').first() |
|
286 |
|
|
287 |
# Récupération des groupes d'hôtes par un |
|
288 |
# utilisateur anonyme : le contrôleur doit |
|
289 |
# retourner une erreur 401 (HTTPUnauthorized) |
|
290 |
self.app.post( |
|
291 |
'/rpc/hostgroups?maingroupid=%s' % (mainhostgroup.idgroup, ), { |
|
292 |
}, status=401) |
|
293 |
|
|
215 | 294 |
def test_get_host_groups_from_inexisting_main_group(self): |
216 | 295 |
""" |
217 | 296 |
Récupération des groupes d'hôtes d'un groupe principal inexistant |
218 | 297 |
""" |
219 | 298 |
|
220 | 299 |
# Récupération des groupes d'hôtes accessibles à l'utilisateur |
221 |
# 'visitor' et appartenant à un groupe principal inexistant
|
|
300 |
# 'manager' et appartenant à un groupe principal inexistant
|
|
222 | 301 |
response = self.app.post( |
223 | 302 |
'/rpc/hostgroups?maingroupid=6666666', { |
224 |
}, extra_environ={'REMOTE_USER': 'visitor'})
|
|
303 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
225 | 304 |
json = response.json |
226 | 305 |
|
227 | 306 |
# On s'assure que la liste de groupes d'hôtes |
... | ... | |
245 | 324 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
246 | 325 |
SupItemGroup.name == u'hg1').first() |
247 | 326 |
|
248 |
# Récupération du groupe d'hôtes 'hg2' dans la base de données |
|
249 |
hostgroup2 = DBSession.query(SupItemGroup).filter( |
|
250 |
SupItemGroup.name == u'hg2').first() |
|
251 |
|
|
252 | 327 |
# Récupération des hôtes du groupe 'mhg' |
253 |
# accessibles à l'utilisateur 'poweruser'
|
|
328 |
# accessibles à l'utilisateur 'manager'
|
|
254 | 329 |
response = self.app.post( |
255 | 330 |
'/rpc/hosts?othergroupid=%s' % (mainhostgroup.idgroup, ), { |
256 |
}, extra_environ={'REMOTE_USER': 'poweruser'})
|
|
331 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
257 | 332 |
json = response.json |
258 | 333 |
|
259 | 334 |
# On s'assure que la liste d'hôtes retournée contient bien 'host1' |
... | ... | |
264 | 339 |
) |
265 | 340 |
|
266 | 341 |
# Récupération des hôtes du groupe 'hg1' |
267 |
# accessibles à l'utilisateur 'poweruser'
|
|
342 |
# accessibles à l'utilisateur 'manager'
|
|
268 | 343 |
response = self.app.post( |
269 | 344 |
'/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), { |
270 |
}, extra_environ={'REMOTE_USER': 'poweruser'})
|
|
345 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
271 | 346 |
json = response.json |
272 | 347 |
|
273 | 348 |
# On s'assure que la liste d'hotes retournée contient bien 'host2' |
... | ... | |
277 | 352 |
]} |
278 | 353 |
) |
279 | 354 |
|
355 |
# Récupération des hôtes du groupe 'mhg' |
|
356 |
# accessibles à l'utilisateur 'poweruser' |
|
357 |
response = self.app.post( |
|
358 |
'/rpc/hosts?othergroupid=%s' % (mainhostgroup.idgroup, ), { |
|
359 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
|
360 |
json = response.json |
|
361 |
|
|
362 |
# On s'assure que la liste d'hôtes retournée contient bien 'host1' |
|
363 |
assert_equal( |
|
364 |
json, {"items": [ |
|
365 |
['host1', unicode(mainhostgroup.idgroup)], |
|
366 |
]} |
|
367 |
) |
|
368 |
|
|
280 | 369 |
# Récupération des hôtes du groupe 'hg1' |
281 |
# accessibles à l'utilisateur 'user' |
|
370 |
# accessibles à l'utilisateur 'poweruser'
|
|
282 | 371 |
response = self.app.post( |
283 | 372 |
'/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), { |
284 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
373 |
}, extra_environ={'REMOTE_USER': 'poweruser'})
|
|
285 | 374 |
json = response.json |
286 | 375 |
|
287 |
# On s'assure que la liste d'hôtes retournée contient bien 'host2'
|
|
376 |
# On s'assure que la liste d'hotes retournée contient bien 'host2'
|
|
288 | 377 |
assert_equal( |
289 | 378 |
json, {"items": [ |
290 | 379 |
['host2', unicode(hostgroup1.idgroup)], |
291 | 380 |
]} |
292 | 381 |
) |
293 | 382 |
|
294 |
# Récupération des hôtes du groupe 'hg2'
|
|
295 |
# accessibles à l'utilisateur 'poweruser'
|
|
383 |
# Récupération des hôtes du groupe 'hg1'
|
|
384 |
# accessibles à l'utilisateur 'user' |
|
296 | 385 |
response = self.app.post( |
297 |
'/rpc/hosts?othergroupid=%s' % (hostgroup2.idgroup, ), {
|
|
298 |
}, extra_environ={'REMOTE_USER': 'poweruser'})
|
|
386 |
'/rpc/hosts?othergroupid=%s' % (hostgroup1.idgroup, ), {
|
|
387 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
299 | 388 |
json = response.json |
300 | 389 |
|
301 |
# On s'assure que la liste d'hotes retournée contient bien 'host3'
|
|
390 |
# On s'assure que la liste d'hôtes retournée contient bien 'host2'
|
|
302 | 391 |
assert_equal( |
303 | 392 |
json, {"items": [ |
304 |
['host3', unicode(hostgroup1.idgroup)],
|
|
393 |
['host2', unicode(hostgroup1.idgroup)],
|
|
305 | 394 |
]} |
306 | 395 |
) |
307 | 396 |
|
... | ... | |
375 | 464 |
json, {"items": []} |
376 | 465 |
) |
377 | 466 |
|
378 |
# Récupération des hôtes du groupe 'hg2' |
|
379 |
# accessibles à l'utilisateur 'visitor' |
|
380 |
response = self.app.post( |
|
381 |
'/rpc/hosts?othergroupid=%s' % (hostgroup2.idgroup, ), { |
|
382 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
|
383 |
json = response.json |
|
467 |
def test_get_hosts_as_anonymous(self): |
|
468 |
""" |
|
469 |
Récupération des d'hôtes en tant qu'anonyme |
|
470 |
""" |
|
384 | 471 |
|
385 |
# On s'assure que la liste d'hôtes retournée est vide |
|
386 |
assert_equal( |
|
387 |
json, {"items": []} |
|
388 |
) |
|
472 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données |
|
473 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
|
474 |
SupItemGroup.name == u'mhg').first() |
|
475 |
|
|
476 |
# Récupération des hôtes du groupe 'mhg' par |
|
477 |
# un utilisateur anonyme : le contrôleur doit |
|
478 |
# retourner une erreur 401 (HTTPUnauthorized) |
|
479 |
self.app.post( |
|
480 |
'/rpc/hosts?othergroupid=%s' % (mainhostgroup.idgroup, ), { |
|
481 |
}, status=401) |
|
389 | 482 |
|
390 | 483 |
def test_get_hosts_from_inexisting_secondary_group(self): |
391 | 484 |
""" |
... | ... | |
393 | 486 |
""" |
394 | 487 |
|
395 | 488 |
# Récupération des hôtes accessibles à l'utilisateur |
396 |
# 'visitor' et appartenant à un groupe secondaire inexistant
|
|
489 |
# 'manager' et appartenant à un groupe secondaire inexistant
|
|
397 | 490 |
response = self.app.post( |
398 | 491 |
'/rpc/hosts?othergroupid=6666666', { |
399 |
}, extra_environ={'REMOTE_USER': 'visitor'})
|
|
492 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
400 | 493 |
json = response.json |
401 | 494 |
|
402 | 495 |
# On s'assure que la liste retournée est vide |
vigigraph/tests/functional/test_search_form.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
""" |
|
3 |
Suite de tests du formulaire de recherche de VigiGraph. |
|
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, SupItemGroup, Graph, GraphGroup |
|
11 |
|
|
12 |
from vigigraph.tests.functional.test_host_selection_form import populateDB |
|
13 |
from vigigraph.tests.functional.test_graph_selection_form import addGraphs |
|
14 |
|
|
15 |
|
|
16 |
class TestSearchForm(TestController): |
|
17 |
""" |
|
18 |
Teste le formulaire de recherche des |
|
19 |
hôtes et des graphes de Vigigraph. |
|
20 |
""" |
|
21 |
|
|
22 |
def setUp(self): |
|
23 |
"""Préparation de la base de données de tests.""" |
|
24 |
|
|
25 |
# Initialisation de la base |
|
26 |
super(TestSearchForm, self).setUp() |
|
27 |
|
|
28 |
# Ajout de données de tests dans la base |
|
29 |
(host1, host2, host3) = populateDB() |
|
30 |
|
|
31 |
# Ajout de graphes dans la base |
|
32 |
addGraphs(host1, host2, host3) |
|
33 |
|
|
34 |
# Validation des ajouts dans la base |
|
35 |
DBSession.flush() |
|
36 |
transaction.commit() |
|
37 |
|
|
38 |
def test_select_host_when_allowed(self): |
|
39 |
""" |
|
40 |
Résultats de la recherche sur un hôte avec les bons droits |
|
41 |
""" |
|
42 |
|
|
43 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données |
|
44 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
|
45 |
SupItemGroup.name == u'mhg').first() |
|
46 |
|
|
47 |
# Récupération du groupe d'hôtes 'hg1' dans la base de données |
|
48 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
|
49 |
SupItemGroup.name == u'hg1').first() |
|
50 |
|
|
51 |
# Récupération de l'hôte 'host1' dans la base de données |
|
52 |
host1 = DBSession.query(Host).filter( |
|
53 |
Host.name == u'host1').first() |
|
54 |
|
|
55 |
# Récupération de l'hôte 'host2' dans la base de données |
|
56 |
host2 = DBSession.query(Host).filter( |
|
57 |
Host.name == u'host2').first() |
|
58 |
|
|
59 |
# Récupération des résultats transmis au |
|
60 |
# formulaire de sélection après une recherche sur |
|
61 |
# l'hôte 'host1' pour l'utilisateur 'manager' |
|
62 |
response = self.app.post( |
|
63 |
'/rpc/selectHostAndGraph?host=%s' % (str(host1.name), ), { |
|
64 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
65 |
json = response.json |
|
66 |
|
|
67 |
# On s'assure que la liste retournée |
|
68 |
# contient bien 'mhg' et 'No subgroup' |
|
69 |
assert_equal( |
|
70 |
json, {"items": [ |
|
71 |
[mainhostgroup.name, u'No subgroup'], |
|
72 |
[] |
|
73 |
]} |
|
74 |
) |
|
75 |
|
|
76 |
# Récupération des résultats transmis au |
|
77 |
# formulaire de sélection après une recherche sur |
|
78 |
# l'hôte 'host1' pour l'utilisateur 'poweruser' |
|
79 |
response = self.app.post( |
|
80 |
'/rpc/selectHostAndGraph?host=%s' % (str(host1.name), ), { |
|
81 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
|
82 |
json = response.json |
|
83 |
|
|
84 |
# On s'assure que la liste retournée |
|
85 |
# contient bien 'mhg' et 'No subgroup' |
|
86 |
assert_equal( |
|
87 |
json, {"items": [ |
|
88 |
[mainhostgroup.name, u'No subgroup'], |
|
89 |
[] |
|
90 |
]} |
|
91 |
) |
|
92 |
|
|
93 |
# Récupération des résultats transmis au |
|
94 |
# formulaire de sélection après une recherche sur |
|
95 |
# l'hôte 'host2' pour l'utilisateur 'poweruser' |
|
96 |
response = self.app.post( |
|
97 |
'/rpc/selectHostAndGraph?host=%s' % (str(host2.name), ), { |
|
98 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
|
99 |
json = response.json |
|
100 |
|
|
101 |
# On s'assure que la liste retournée |
|
102 |
# contient bien 'mhg' et 'hostgroup1' |
|
103 |
assert_equal( |
|
104 |
json, {"items": [ |
|
105 |
[mainhostgroup.name, hostgroup1.name], |
|
106 |
[] |
|
107 |
]} |
|
108 |
) |
|
109 |
|
|
110 |
# Récupération des résultats transmis au |
|
111 |
# formulaire de sélection après une recherche sur |
|
112 |
# l'hôte 'host2' pour l'utilisateur 'user' |
|
113 |
response = self.app.post( |
|
114 |
'/rpc/selectHostAndGraph?host=%s' % (str(host2.name), ), { |
|
115 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
116 |
json = response.json |
|
117 |
|
|
118 |
# On s'assure que la liste retournée |
|
119 |
# contient bien 'mhg' et 'hostgroup1' |
|
120 |
assert_equal( |
|
121 |
json, {"items": [ |
|
122 |
[mainhostgroup.name, hostgroup1.name], |
|
123 |
[] |
|
124 |
]} |
|
125 |
) |
|
126 |
|
|
127 |
def test_select_host_when_not_allowed(self): |
|
128 |
""" |
|
129 |
Résultats de la recherche sur un hôte sans les droits |
|
130 |
""" |
|
131 |
|
|
132 |
# Récupération de l'hôte 'host1' dans la base de données |
|
133 |
host1 = DBSession.query(Host).filter( |
|
134 |
Host.name == u'host1').first() |
|
135 |
|
|
136 |
# Récupération de l'hôte 'host3' dans la base de données |
|
137 |
host3 = DBSession.query(Host).filter( |
|
138 |
Host.name == u'host3').first() |
|
139 |
|
|
140 |
# Récupération des résultats transmis au |
|
141 |
# formulaire de sélection après une recherche sur |
|
142 |
# l'hôte 'host1' pour l'utilisateur 'user' |
|
143 |
response = self.app.post( |
|
144 |
'/rpc/selectHostAndGraph?host=%s' % (str(host1.name), ), { |
|
145 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
146 |
json = response.json |
|
147 |
|
|
148 |
# On s'assure que la liste |
|
149 |
# retournée est vide |
|
150 |
assert_equal( |
|
151 |
json, {"items": [ |
|
152 |
[],[] |
|
153 |
]} |
|
154 |
) |
|
155 |
|
|
156 |
# Récupération des résultats transmis au |
|
157 |
# formulaire de sélection après une recherche sur |
|
158 |
# l'hôte 'host3' pour l'utilisateur 'user' |
|
159 |
response = self.app.post( |
|
160 |
'/rpc/selectHostAndGraph?host=%s' % (str(host3.name), ), { |
|
161 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
162 |
json = response.json |
|
163 |
|
|
164 |
# On s'assure que la liste |
|
165 |
# retournée est vide |
|
166 |
assert_equal( |
|
167 |
json, {"items": [ |
|
168 |
[],[] |
|
169 |
]} |
|
170 |
) |
|
171 |
|
|
172 |
# Récupération des résultats transmis au |
|
173 |
# formulaire de sélection après une recherche sur |
|
174 |
# l'hôte 'host1' pour l'utilisateur 'visitor' |
|
175 |
response = self.app.post( |
|
176 |
'/rpc/selectHostAndGraph?host=%s' % (str(host1.name), ), { |
|
177 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
|
178 |
json = response.json |
|
179 |
|
|
180 |
# On s'assure que la liste |
|
181 |
# retournée est vide |
|
182 |
assert_equal( |
|
183 |
json, {"items": [ |
|
184 |
[],[] |
|
185 |
]} |
|
186 |
) |
|
187 |
|
|
188 |
# Récupération des résultats transmis au |
|
189 |
# formulaire de sélection après une recherche sur |
|
190 |
# l'hôte 'host3' pour l'utilisateur 'visitor' |
|
191 |
response = self.app.post( |
|
192 |
'/rpc/selectHostAndGraph?host=%s' % (str(host3.name), ), { |
|
193 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
|
194 |
json = response.json |
|
195 |
|
|
196 |
# On s'assure que la liste |
|
197 |
# retournée est vide |
|
198 |
assert_equal( |
|
199 |
json, {"items": [ |
|
200 |
[],[] |
|
201 |
]} |
|
202 |
) |
|
203 |
|
|
204 |
def test_select_host_as_anonymous(self): |
|
205 |
""" |
|
206 |
Résultats de la recherche sur un hôte en tant qu'anonyme |
|
207 |
""" |
|
208 |
|
|
209 |
# Récupération de l'hôte 'host1' dans la base de données |
|
210 |
host1 = DBSession.query(Host).filter( |
|
211 |
Host.name == u'host1').first() |
|
212 |
|
|
213 |
# Récupération des résultats transmis au |
|
214 |
# formulaire de sélection après une recherche sur |
|
215 |
# l'hôte 'host1' pour un utilisateur anonyme : |
|
216 |
# le contrôleur doit retourner une erreur 401. |
|
217 |
self.app.post( |
|
218 |
'/rpc/selectHostAndGraph?host=%s' % (str(host1.name), ), { |
|
219 |
}, status=401) |
|
220 |
|
|
221 |
def test_select_inexisting_host(self): |
|
222 |
""" |
|
223 |
Résultats de la recherche sur un hôte inexistant |
|
224 |
""" |
|
225 |
|
|
226 |
# Récupération des résultats transmis au |
|
227 |
# formulaire de sélection après une recherche sur |
|
228 |
# un hôte inexistant pour l'utilisateur 'manager' |
|
229 |
response = self.app.post( |
|
230 |
'/rpc/selectHostAndGraph?host=hote_totalement_inexistant', { |
|
231 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
232 |
json = response.json |
|
233 |
|
|
234 |
# On s'assure que la liste |
|
235 |
# retournée est vide |
|
236 |
assert_equal( |
|
237 |
json, {"items": [ |
|
238 |
[], [] |
|
239 |
]} |
|
240 |
) |
|
241 |
|
|
242 |
def test_select_graph_without_a_host(self): |
|
243 |
""" |
|
244 |
Résultats de la recherche sur un graphe sans préciser d'hôte |
|
245 |
""" |
|
246 |
|
|
247 |
# Récupération du graphe 'graph1' dans la base de données |
|
248 |
graph1 = DBSession.query(Graph).filter( |
|
249 |
Graph.name == u'graph1').first() |
|
250 |
|
|
251 |
# On s'assure qu'une erreur 412 est retournée lorsque |
|
252 |
# l'on recherche un graphe sans préciser d'hôte. |
|
253 |
self.app.post( |
|
254 |
'/rpc/selectHostAndGraph?host=%s' % (str(graph1.name), ), { |
|
255 |
}, extra_environ={'REMOTE_USER': 'manager'}, status=412) |
|
256 |
|
|
257 |
def test_select_graph_with_an_erroneous_host(self): |
|
258 |
""" |
|
259 |
Résultats de la recherche sur un graphe en précisant un hôte erroné |
|
260 |
""" |
|
261 |
|
|
262 |
# Récupération du graphe 'graph1' dans la base de données |
|
263 |
graph1 = DBSession.query(Graph).filter( |
|
264 |
Graph.name == u'graph1').first() |
|
265 |
|
|
266 |
# On s'assure qu'une liste vide est retournée lorsque |
|
267 |
# l'on recherche un graphe en précisant un hôte erroné. |
|
268 |
response = self.app.post( |
|
269 |
'/rpc/selectHostAndGraph?host=%s' % (str(graph1.name), ), { |
|
270 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
271 |
json = response.json |
|
272 |
|
|
273 |
assert_equal( |
|
274 |
json, {"items": [ |
|
275 |
[], [] |
|
276 |
]} |
|
277 |
) |
|
278 |
|
|
279 |
def test_select_graph_when_allowed(self): |
|
280 |
""" |
|
281 |
Résultats de la recherche sur un graphe avec les bons droits |
|
282 |
""" |
|
283 |
|
|
284 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données |
|
285 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
|
286 |
SupItemGroup.name == u'mhg').first() |
|
287 |
|
|
288 |
# Récupération du groupe d'hôtes 'hg1' dans la base de données |
|
289 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
|
290 |
SupItemGroup.name == u'hg1').first() |
|
291 |
|
|
292 |
# Récupération de l'hôte 'host1' dans la base de données |
|
293 |
host1 = DBSession.query(Host).filter( |
|
294 |
Host.name == u'host1').first() |
|
295 |
|
|
296 |
# Récupération de l'hôte 'host2' dans la base de données |
|
297 |
host2 = DBSession.query(Host).filter( |
|
298 |
Host.name == u'host2').first() |
|
299 |
|
|
300 |
# Récupération du groupe de graphes |
|
301 |
# 'graphgroup1' dans la base de données |
|
302 |
graphgroup1 = DBSession.query(GraphGroup).filter( |
|
303 |
GraphGroup.name == u'graphgroup1').first() |
|
304 |
|
|
305 |
# Récupération du groupe de graphes |
|
306 |
# 'graphgroup2' dans la base de données |
|
307 |
graphgroup2 = DBSession.query(GraphGroup).filter( |
|
308 |
GraphGroup.name == u'graphgroup2').first() |
|
309 |
|
|
310 |
# Récupération du graphe 'graph1' dans la base de données |
|
311 |
graph1 = DBSession.query(Graph).filter( |
|
312 |
Graph.name == u'graph1').first() |
|
313 |
|
|
314 |
# Récupération du graphe 'graph2' dans la base de données |
|
315 |
graph2 = DBSession.query(Graph).filter( |
|
316 |
Graph.name == u'graph2').first() |
|
317 |
|
|
318 |
# Récupération des résultats transmis au |
|
319 |
# formulaire de sélection après une recherche sur |
|
320 |
# le graphe 'graph1' pour l'utilisateur 'manager' |
|
321 |
response = self.app.post( |
|
322 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
323 |
(str(host1.name), str(graph1.name)), { |
|
324 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
325 |
json = response.json |
|
326 |
|
|
327 |
# On s'assure que la liste retournée |
|
328 |
# est conforme à celle attendue |
|
329 |
assert_equal( |
|
330 |
json, {"items": [ |
|
331 |
[mainhostgroup.name, u'No subgroup'], |
|
332 |
[graphgroup1.name] |
|
333 |
]} |
|
334 |
) |
|
335 |
|
|
336 |
# Récupération des résultats transmis au |
|
337 |
# formulaire de sélection après une recherche sur |
|
338 |
# le graphe 'graph1' pour l'utilisateur 'poweruser' |
|
339 |
response = self.app.post( |
|
340 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
341 |
(str(host1.name), str(graph1.name)), { |
|
342 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
|
343 |
json = response.json |
|
344 |
|
|
345 |
# On s'assure que la liste retournée |
|
346 |
# est conforme à celle attendue |
|
347 |
assert_equal( |
|
348 |
json, {"items": [ |
|
349 |
[mainhostgroup.name, u'No subgroup'], |
|
350 |
[graphgroup1.name] |
|
351 |
]} |
|
352 |
) |
|
353 |
|
|
354 |
# Récupération des résultats transmis au |
|
355 |
# formulaire de sélection après une recherche sur |
|
356 |
# le graphe 'graph2' pour l'utilisateur 'poweruser' |
|
357 |
response = self.app.post( |
|
358 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
359 |
(str(host2.name), str(graph2.name)), { |
|
360 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
|
361 |
json = response.json |
|
362 |
|
|
363 |
# On s'assure que la liste retournée |
|
364 |
# est conforme à celle attendue |
|
365 |
assert_equal( |
|
366 |
json, {"items": [ |
|
367 |
[mainhostgroup.name, hostgroup1.name], |
|
368 |
[graphgroup2.name] |
|
369 |
]} |
|
370 |
) |
|
371 |
|
|
372 |
# Récupération des résultats transmis au |
|
373 |
# formulaire de sélection après une recherche sur |
|
374 |
# le graphe 'graph2' pour l'utilisateur 'user' |
|
375 |
response = self.app.post( |
|
376 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
377 |
(str(host2.name), str(graph2.name)), { |
|
378 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
379 |
json = response.json |
|
380 |
|
|
381 |
# On s'assure que la liste retournée |
|
382 |
# est conforme à celle attendue |
|
383 |
assert_equal( |
|
384 |
json, {"items": [ |
|
385 |
[mainhostgroup.name, hostgroup1.name], |
|
386 |
[graphgroup2.name] |
|
387 |
]} |
|
388 |
) |
|
389 |
|
|
390 |
def test_select_graph_when_not_allowed(self): |
|
391 |
""" |
|
392 |
Résultats de la recherche sur un graphe sans les droits |
|
393 |
""" |
|
394 |
|
|
395 |
# Récupération de l'hôte 'host1' dans la base de données |
|
396 |
host1 = DBSession.query(Host).filter( |
|
397 |
Host.name == u'host1').first() |
|
398 |
|
|
399 |
# Récupération de l'hôte 'host3' dans la base de données |
|
400 |
host3 = DBSession.query(Host).filter( |
|
401 |
Host.name == u'host3').first() |
|
402 |
|
|
403 |
# Récupération du graphe 'graph1' dans la base de données |
|
404 |
graph1 = DBSession.query(Graph).filter( |
|
405 |
Graph.name == u'graph1').first() |
|
406 |
|
|
407 |
# Récupération du graphe 'graph3' dans la base de données |
|
408 |
graph3 = DBSession.query(Graph).filter( |
|
409 |
Graph.name == u'graph1').first() |
|
410 |
|
|
411 |
# Récupération des résultats transmis au |
|
412 |
# formulaire de sélection après une recherche sur |
|
413 |
# le graphe 'graph1' pour l'utilisateur 'user' |
|
414 |
response = self.app.post( |
|
415 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
416 |
(str(host1.name), str(graph1.name)), { |
|
417 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
418 |
json = response.json |
|
419 |
|
|
420 |
# On s'assure que la liste |
|
421 |
# retournée est vide |
|
422 |
assert_equal( |
|
423 |
json, {"items": [ |
|
424 |
[], [] |
|
425 |
]} |
|
426 |
) |
|
427 |
|
|
428 |
# Récupération des résultats transmis au |
|
429 |
# formulaire de sélection après une recherche sur |
|
430 |
# le graphe 'graph3' pour l'utilisateur 'user' |
|
431 |
response = self.app.post( |
|
432 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
433 |
(str(host3.name), str(graph3.name)), { |
|
434 |
}, extra_environ={'REMOTE_USER': 'user'}) |
|
435 |
json = response.json |
|
436 |
|
|
437 |
# On s'assure que la liste |
|
438 |
# retournée est vide |
|
439 |
assert_equal( |
|
440 |
json, {"items": [ |
|
441 |
[], [] |
|
442 |
]} |
|
443 |
) |
|
444 |
|
|
445 |
# Récupération des résultats transmis au |
|
446 |
# formulaire de sélection après une recherche sur |
|
447 |
# le graphe 'graph1' pour l'utilisateur 'visitor' |
|
448 |
response = self.app.post( |
|
449 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
450 |
(str(host1.name), str(graph1.name)), { |
|
451 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
|
452 |
json = response.json |
|
453 |
|
|
454 |
# On s'assure que la liste |
|
455 |
# retournée est vide |
|
456 |
assert_equal( |
|
457 |
json, {"items": [ |
|
458 |
[], [] |
|
459 |
]} |
|
460 |
) |
|
461 |
|
|
462 |
# Récupération des résultats transmis au |
|
463 |
# formulaire de sélection après une recherche sur |
|
464 |
# le graphe 'graph3' pour l'utilisateur 'visitor' |
|
465 |
response = self.app.post( |
|
466 |
'/rpc/selectHostAndGraph?host=%s&graph=s' % |
|
467 |
(str(host3.name), str(graph3.name)), { |
|
468 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
|
469 |
json = response.json |
|
470 |
|
|
471 |
# On s'assure que la liste |
|
472 |
# retournée est vide |
|
473 |
assert_equal( |
|
474 |
json, {"items": [ |
|
475 |
[], [] |
|
476 |
]} |
|
477 |
) |
|
478 |
|
|
479 |
def test_select_graph_as_anonymous(self): |
|
480 |
""" |
|
481 |
Résultats de la recherche sur un graphe en tant qu'anonyme |
|
482 |
""" |
|
483 |
|
|
484 |
# Récupération de l'hôte 'host1' dans la base de données |
|
485 |
host1 = DBSession.query(Host).filter( |
|
486 |
Host.name == u'host1').first() |
|
487 |
|
|
488 |
# Récupération du graphe 'graph1' dans la base de données |
|
489 |
graph1 = DBSession.query(Graph).filter( |
|
490 |
Graph.name == u'graph1').first() |
|
491 |
|
|
492 |
# Récupération des résultats transmis au |
|
493 |
# formulaire de sélection après une recherche sur |
|
494 |
# le graphe 'graph1' pour un utilisateur anonyme : |
|
495 |
# le contrôleur doit retourner une erreur 401 |
|
496 |
self.app.post( |
|
497 |
'/rpc/selectHostAndGraph?host=%s&graph=%s' % |
|
498 |
(str(host1.name), str(graph1.name)), { |
|
499 |
}, status=401) |
|
500 |
|
|
501 |
def test_select_inexisting_graph(self): |
|
502 |
""" |
|
503 |
Résultats de la recherche sur un graphe inexistant |
|
504 |
""" |
|
505 |
|
|
506 |
# Récupération de l'hôte 'host1' dans la base de données |
|
507 |
host1 = DBSession.query(Host).filter( |
|
508 |
Host.name == u'host1').first() |
|
509 |
|
|
510 |
# Récupération des résultats transmis au |
|
511 |
# formulaire de sélection après une recherche sur |
|
512 |
# un graphe inexistant pour l'utilisateur 'manager' |
|
513 |
response = self.app.post( |
|
514 |
'/rpc/selectHostAndGraph?host=%sgraph=graphe_totalement_inexistant' % |
|
515 |
(str(host1.name), ), { |
|
516 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
|
517 |
json = response.json |
|
518 |
|
|
519 |
# On s'assure que la liste |
|
520 |
# retournée est vide |
|
521 |
assert_equal( |
|
522 |
json, {"items": [ |
|
523 |
[], [] |
|
524 |
]} |
|
525 |
) |
|
526 |
|
|
527 |
|
Also available in: Unified diff