vigigraph / vigigraph / tests / functional / test_host_selection_form.py @ 3e3db819
History | View | Annotate | Download (20.6 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
"""
|
3 |
Suite de tests de l'arbre de sélection des hôtes et groupes d'hôtes.
|
4 |
"""
|
5 |
import transaction |
6 |
|
7 |
from vigigraph.tests import TestController |
8 |
from vigilo.models.session import DBSession |
9 |
from vigilo.models.tables import Host, SupItemGroup, Permission |
10 |
from vigilo.models.demo.functions import add_supitemgroup, \ |
11 |
add_host, add_host2group, add_usergroup, add_user, \ |
12 |
add_supitemgrouppermission, add_usergroup_permission |
13 |
|
14 |
|
15 |
def populateDB(): |
16 |
"""
|
17 |
Peuple la base de données en ajoutant :
|
18 |
- 3 groupes d'hôtes ;
|
19 |
- 3 hôtes ;
|
20 |
- 3 utilisateurs.
|
21 |
Affecte les permissions nécessaires aux utilisateurs en vue des tests.
|
22 |
Retourne les 3 hôtes créés.
|
23 |
|
24 |
@return: Tuple contenant les trois hôtes.
|
25 |
@rtype: C{tuple} of C{vigilo.models.tables.Host}
|
26 |
"""
|
27 |
|
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) |
77 |
|
78 |
return (host1, host2, host3)
|
79 |
|
80 |
|
81 |
class TestHostTree(TestController): |
82 |
"""
|
83 |
Teste l'arbre de sélection des hôtes
|
84 |
et groupes d'hôtes de Vigigraph.
|
85 |
"""
|
86 |
|
87 |
def setUp(self): |
88 |
"""Préparation de la base de données de tests."""
|
89 |
|
90 |
# Initialisation de la base
|
91 |
super(TestHostTree, self).setUp() |
92 |
|
93 |
# Ajout de données de tests dans la base
|
94 |
populateDB() |
95 |
|
96 |
# Validation des ajouts dans la base
|
97 |
DBSession.flush() |
98 |
transaction.commit() |
99 |
|
100 |
##### Premier onglet déroulant du formulaire #####
|
101 |
|
102 |
def test_get_root_host_groups_as_manager(self): |
103 |
"""
|
104 |
Récupération des groupes d'hôtes racines en tant que manager
|
105 |
|
106 |
L'utilisateur "manager" appartient au groupe "managers",
|
107 |
qui a accès à tout et doit donc pouvoir lister tous
|
108 |
les groupes racines.
|
109 |
"""
|
110 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
111 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
112 |
SupItemGroup.name == u'mhg').first()
|
113 |
|
114 |
# Récupération des groupes d'hôtes principaux
|
115 |
# accessibles à l'utilisateur 'manager'
|
116 |
response = self.app.post(
|
117 |
'/rpc/hosttree', {
|
118 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
119 |
json = response.json |
120 |
|
121 |
# On s'assure que la liste de groupes
|
122 |
# d'hôtes retournée contient bien 'mhg'
|
123 |
self.assertEqual(
|
124 |
json, { |
125 |
'items': [], 'groups': [{ |
126 |
'id': mainhostgroup.idgroup,
|
127 |
'name': mainhostgroup.name,
|
128 |
'type': 'group', |
129 |
}] |
130 |
} |
131 |
) |
132 |
|
133 |
def test_get_main_host_groups_when_directly_allowed(self): |
134 |
"""
|
135 |
Récupération des groupes d'hôtes racines avec permissions directes
|
136 |
|
137 |
L'utilisateur "poweruser" a les permissions sur le
|
138 |
groupe racine "mhg" et peut donc le lister.
|
139 |
"""
|
140 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
141 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
142 |
SupItemGroup.name == u'mhg').first()
|
143 |
|
144 |
# Récupération des groupes d'hôtes principaux
|
145 |
# accessibles à l'utilisateur 'poweruser'
|
146 |
response = self.app.post(
|
147 |
'/rpc/hosttree', {
|
148 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
149 |
json = response.json |
150 |
|
151 |
# On s'assure que la liste de groupes
|
152 |
# d'hôtes retournée contient bien 'mhg'
|
153 |
self.assertEqual(
|
154 |
json, { |
155 |
'items': [], 'groups': [{ |
156 |
'id': mainhostgroup.idgroup,
|
157 |
'name': mainhostgroup.name,
|
158 |
'type': 'group', |
159 |
}] |
160 |
} |
161 |
) |
162 |
|
163 |
def test_get_root_host_groups_for_children(self): |
164 |
"""
|
165 |
Récupération des groupes d'hôtes racines pour un sous-groupe
|
166 |
|
167 |
L'utilisateur "user" n'a pas les permissions sur "mhg",
|
168 |
mais il a accès au sous-groupe "hg1". Il doit pouvoir
|
169 |
lister le groupe racine "mhg" pour pouvoir accéder à "hg1".
|
170 |
"""
|
171 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
172 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
173 |
SupItemGroup.name == u'mhg').first()
|
174 |
|
175 |
# Récupération des groupes d'hôtes principaux
|
176 |
# accessibles à l'utilisateur 'user'
|
177 |
response = self.app.post(
|
178 |
'/rpc/hosttree', {
|
179 |
}, extra_environ={'REMOTE_USER': 'user'}) |
180 |
json = response.json |
181 |
|
182 |
# On s'assure que la liste de groupes
|
183 |
# d'hôtes retournée contient bien 'mhg'
|
184 |
self.assertEqual(
|
185 |
json, { |
186 |
'items': [], 'groups': [{ |
187 |
'id': mainhostgroup.idgroup,
|
188 |
'name': mainhostgroup.name,
|
189 |
'type': 'group', |
190 |
}] |
191 |
} |
192 |
) |
193 |
|
194 |
def test_get_main_host_groups_when_not_allowed(self): |
195 |
"""
|
196 |
Récupération des groupes d'hôtes principaux sans les bons droits
|
197 |
|
198 |
L'utilisateur "visitor" n'a accès à rien et ne doit donc
|
199 |
pas pouvoir lister le groupe racine "mhg".
|
200 |
"""
|
201 |
|
202 |
# Récupération des groupes d'hôtes principaux
|
203 |
# accessibles à l'utilisateur 'visitor'
|
204 |
response = self.app.post(
|
205 |
'/rpc/hosttree', {
|
206 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
207 |
json = response.json |
208 |
|
209 |
# On s'assure que la liste de groupes d'hôtes retournée est bien vide
|
210 |
self.assertEqual(
|
211 |
json, {'items': [], 'groups': []} |
212 |
) |
213 |
|
214 |
def test_get_main_host_groups_as_anonymous(self): |
215 |
"""
|
216 |
Récupération des groupes d'hôtes principaux en tant qu'anonyme
|
217 |
|
218 |
Une tentative de récupération des groupes racines
|
219 |
sans être authentifié doit demander à l'utilisateur
|
220 |
de s'authentifier.
|
221 |
"""
|
222 |
|
223 |
# Récupération des groupes d'hôtes principaux
|
224 |
# par un utilisateur anonyme : le contrôleur doit
|
225 |
# retourner une erreur 401 (HTTPUnauthorized)
|
226 |
self.app.post(
|
227 |
'/rpc/hosttree', {
|
228 |
}, status=401)
|
229 |
|
230 |
##### Deuxième onglet déroulant du formulaire #####
|
231 |
|
232 |
def test_get_host_groups_when_allowed(self): |
233 |
"""
|
234 |
Récupération des groupes d'hôtes secondaires avec les bons droits
|
235 |
"""
|
236 |
|
237 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
238 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
239 |
SupItemGroup.name == u'mhg').first()
|
240 |
|
241 |
# Récupération du groupe d'hôtes 'hg1' dans la base de données
|
242 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
243 |
SupItemGroup.name == u'hg1').first()
|
244 |
|
245 |
# Récupération du groupe d'hôtes 'hg2' dans la base de données
|
246 |
hostgroup2 = DBSession.query(SupItemGroup).filter( |
247 |
SupItemGroup.name == u'hg2').first()
|
248 |
|
249 |
# Récupération de l'hôte 'host1' dans la base de données
|
250 |
host1 = DBSession.query(Host).filter( |
251 |
Host.name == u'host1').first()
|
252 |
|
253 |
# Récupération des groupes d'hôtes
|
254 |
# accessibles à l'utilisateur 'manager'
|
255 |
response = self.app.post(
|
256 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
257 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
258 |
json = response.json |
259 |
|
260 |
# On s'assure que la liste de groupes d'hôtes retournée
|
261 |
# contient bien 'No subgroup', 'hg1', et 'hg2'
|
262 |
self.assertEqual(
|
263 |
json, { |
264 |
'items': [
|
265 |
{'id': host1.idhost, 'name': host1.name, 'type': 'item'} |
266 |
], |
267 |
'groups': [
|
268 |
{'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
269 |
{'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
270 |
] |
271 |
} |
272 |
) |
273 |
|
274 |
# Récupération des groupes d'hôtes
|
275 |
# accessibles à l'utilisateur 'poweruser'
|
276 |
response = self.app.post(
|
277 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
278 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
279 |
json = response.json |
280 |
|
281 |
# On s'assure que la liste de groupes d'hôtes retournée
|
282 |
# contient bien 'No subgroup', 'hg1', et 'hg2'
|
283 |
self.assertEqual(
|
284 |
json, { |
285 |
'items': [
|
286 |
{'id': host1.idhost, 'name': host1.name, 'type': 'item'} |
287 |
], |
288 |
'groups': [
|
289 |
{'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
290 |
{'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
291 |
] |
292 |
} |
293 |
) |
294 |
|
295 |
# Récupération des groupes d'hôtes
|
296 |
# accessibles à l'utilisateur 'user'
|
297 |
response = self.app.post(
|
298 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
299 |
}, extra_environ={'REMOTE_USER': 'user'}) |
300 |
json = response.json |
301 |
|
302 |
# On s'assure que la liste de groupes
|
303 |
# d'hôtes retournée contient bien 'hg1'
|
304 |
self.assertEqual(
|
305 |
json, { |
306 |
'items': [],
|
307 |
'groups': [
|
308 |
{'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
309 |
] |
310 |
} |
311 |
) |
312 |
|
313 |
def test_get_host_groups_when_not_allowed(self): |
314 |
"""
|
315 |
Récupération des groupes d'hôtes secondaires sans les bons droits
|
316 |
"""
|
317 |
|
318 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
319 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
320 |
SupItemGroup.name == u'mhg').first()
|
321 |
|
322 |
# Récupération des groupes d'hôtes
|
323 |
# accessibles à l'utilisateur 'visitor'
|
324 |
response = self.app.post(
|
325 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
326 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
327 |
json = response.json |
328 |
|
329 |
# On s'assure que la liste de groupes d'hôtes retournée est bien vide
|
330 |
self.assertEqual(
|
331 |
json, {'items': [], 'groups': []} |
332 |
) |
333 |
|
334 |
def test_get_host_groups_as_anonymous(self): |
335 |
"""
|
336 |
Récupération des groupes d'hôtes secondaires en tant qu'anonyme
|
337 |
"""
|
338 |
|
339 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
340 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
341 |
SupItemGroup.name == u'mhg').first()
|
342 |
|
343 |
# Récupération des groupes d'hôtes par un
|
344 |
# utilisateur anonyme : le contrôleur doit
|
345 |
# retourner une erreur 401 (HTTPUnauthorized)
|
346 |
self.app.post(
|
347 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
348 |
}, status=401)
|
349 |
|
350 |
def test_get_host_groups_from_inexisting_main_group(self): |
351 |
"""
|
352 |
Récupération des groupes d'hôtes d'un groupe principal inexistant
|
353 |
"""
|
354 |
|
355 |
# Récupération des groupes d'hôtes accessibles à l'utilisateur
|
356 |
# 'manager' et appartenant à un groupe principal inexistant
|
357 |
response = self.app.post(
|
358 |
'/rpc/hosttree?parent_id=6666666', {
|
359 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
360 |
json = response.json |
361 |
|
362 |
# On s'assure que la liste de groupes d'hôtes retournée est bien vide
|
363 |
self.assertEqual(
|
364 |
json, {'items': [], 'groups': []} |
365 |
) |
366 |
|
367 |
##### Troisième onglet déroulant du formulaire #####
|
368 |
|
369 |
def test_get_hosts_when_allowed(self): |
370 |
"""
|
371 |
Récupération des hôtes avec les bons droits
|
372 |
"""
|
373 |
|
374 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
375 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
376 |
SupItemGroup.name == u'mhg').first()
|
377 |
|
378 |
# Récupération du groupe d'hôtes 'hg1' dans la base de données
|
379 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
380 |
SupItemGroup.name == u'hg1').first()
|
381 |
|
382 |
# Récupération du groupe d'hôtes 'hg2' dans la base de données
|
383 |
hostgroup2 = DBSession.query(SupItemGroup).filter( |
384 |
SupItemGroup.name == u'hg2').first()
|
385 |
|
386 |
# Récupération de l'hôte 'host1' dans la base de données
|
387 |
host1 = DBSession.query(Host).filter( |
388 |
Host.name == u'host1').first()
|
389 |
|
390 |
# Récupération de l'hôte 'host2' dans la base de données
|
391 |
host2 = DBSession.query(Host).filter( |
392 |
Host.name == u'host2').first()
|
393 |
|
394 |
# Récupération des hôtes du groupe 'mhg'
|
395 |
# accessibles à l'utilisateur 'manager'
|
396 |
response = self.app.post(
|
397 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
398 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
399 |
json = response.json |
400 |
|
401 |
# On s'assure que la liste d'hôtes retournée contient bien 'host1'
|
402 |
self.assertEqual(
|
403 |
json, { |
404 |
'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}], |
405 |
'groups': [
|
406 |
{'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
407 |
{'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'} |
408 |
] |
409 |
} |
410 |
) |
411 |
|
412 |
# Récupération des hôtes du groupe 'hg1'
|
413 |
# accessibles à l'utilisateur 'manager'
|
414 |
response = self.app.post(
|
415 |
'/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
416 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
417 |
json = response.json |
418 |
|
419 |
# On s'assure que la liste d'hotes retournée contient bien 'host2'
|
420 |
self.assertEqual(
|
421 |
json, { |
422 |
'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
423 |
'groups': []
|
424 |
} |
425 |
) |
426 |
|
427 |
# Récupération des hôtes du groupe 'mhg'
|
428 |
# accessibles à l'utilisateur 'poweruser'
|
429 |
response = self.app.post(
|
430 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
431 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
432 |
json = response.json |
433 |
|
434 |
# On s'assure que la liste d'hôtes retournée contient bien 'host1'
|
435 |
self.assertEqual(
|
436 |
json, { |
437 |
'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}], |
438 |
'groups': [
|
439 |
{'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
440 |
{'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
441 |
] |
442 |
} |
443 |
) |
444 |
|
445 |
# Récupération des hôtes du groupe 'hg1'
|
446 |
# accessibles à l'utilisateur 'poweruser'
|
447 |
response = self.app.post(
|
448 |
'/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
449 |
}, extra_environ={'REMOTE_USER': 'poweruser'}) |
450 |
json = response.json |
451 |
|
452 |
# On s'assure que la liste d'hotes retournée contient bien 'host2'
|
453 |
self.assertEqual(
|
454 |
json, { |
455 |
'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
456 |
'groups': []
|
457 |
} |
458 |
) |
459 |
|
460 |
# Récupération des hôtes du groupe 'hg1'
|
461 |
# accessibles à l'utilisateur 'user'
|
462 |
response = self.app.post(
|
463 |
'/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
464 |
}, extra_environ={'REMOTE_USER': 'user'}) |
465 |
json = response.json |
466 |
|
467 |
# On s'assure que la liste d'hôtes retournée contient bien 'host2'
|
468 |
self.assertEqual(
|
469 |
json, { |
470 |
'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
471 |
'groups': []
|
472 |
} |
473 |
) |
474 |
|
475 |
def test_get_hosts_when_not_allowed(self): |
476 |
"""
|
477 |
Récupération des hôtes sans les bons droits
|
478 |
"""
|
479 |
|
480 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
481 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
482 |
SupItemGroup.name == u'mhg').first()
|
483 |
|
484 |
# Récupération du groupe d'hôtes
|
485 |
# secondaire 'hg1' dans la base de données
|
486 |
hostgroup1 = DBSession.query(SupItemGroup).filter( |
487 |
SupItemGroup.name == u'hg1').first()
|
488 |
|
489 |
# Récupération du groupe d'hôtes
|
490 |
# secondaire 'hg2' dans la base de données
|
491 |
hostgroup2 = DBSession.query(SupItemGroup).filter( |
492 |
SupItemGroup.name == u'hg2').first()
|
493 |
|
494 |
# Récupération des hôtes du groupe 'mhg'
|
495 |
# accessibles à l'utilisateur 'user'
|
496 |
response = self.app.post(
|
497 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
498 |
}, extra_environ={'REMOTE_USER': 'user'}) |
499 |
json = response.json |
500 |
|
501 |
# On s'assure que la liste d'hôtes retournée est vide
|
502 |
self.assertEqual(
|
503 |
json, { |
504 |
'items': [],
|
505 |
'groups': [{'name': hostgroup1.name, 'id': hostgroup1.idgroup, 'type': 'group'}] |
506 |
} |
507 |
) |
508 |
|
509 |
# Récupération des hôtes du groupe 'hg2'
|
510 |
# accessibles à l'utilisateur 'user'
|
511 |
response = self.app.post(
|
512 |
'/rpc/hosttree?parent_id=%s' % (hostgroup2.idgroup, ), {
|
513 |
}, extra_environ={'REMOTE_USER': 'user'}) |
514 |
json = response.json |
515 |
|
516 |
# On s'assure que la liste d'hôtes retournée est vide
|
517 |
self.assertEqual(
|
518 |
json, {'items': [], 'groups': []} |
519 |
) |
520 |
|
521 |
# Récupération des hôtes du groupe 'mhg'
|
522 |
# accessibles à l'utilisateur 'visitor'
|
523 |
response = self.app.post(
|
524 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
525 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
526 |
json = response.json |
527 |
|
528 |
# On s'assure que la liste d'hôtes retournée est vide
|
529 |
self.assertEqual(
|
530 |
json, {'items': [], 'groups': []} |
531 |
) |
532 |
|
533 |
# Récupération des hôtes du groupe 'hg1'
|
534 |
# accessibles à l'utilisateur 'visitor'
|
535 |
response = self.app.post(
|
536 |
'/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
537 |
}, extra_environ={'REMOTE_USER': 'visitor'}) |
538 |
json = response.json |
539 |
|
540 |
# On s'assure que la liste d'hôtes retournée est vide
|
541 |
self.assertEqual(
|
542 |
json, {'items': [], 'groups': []} |
543 |
) |
544 |
|
545 |
def test_get_hosts_as_anonymous(self): |
546 |
"""
|
547 |
Récupération des hôtes en tant qu'anonyme
|
548 |
"""
|
549 |
|
550 |
# Récupération du groupe d'hôtes 'mhg' dans la base de données
|
551 |
mainhostgroup = DBSession.query(SupItemGroup).filter( |
552 |
SupItemGroup.name == u'mhg').first()
|
553 |
|
554 |
# Récupération des hôtes du groupe 'mhg' par
|
555 |
# un utilisateur anonyme : le contrôleur doit
|
556 |
# retourner une erreur 401 (HTTPUnauthorized)
|
557 |
self.app.post(
|
558 |
'/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
559 |
}, status=401)
|
560 |
|
561 |
def test_get_hosts_from_inexisting_secondary_group(self): |
562 |
"""
|
563 |
Récupération des hôtes d'un groupe secondaire inexistant
|
564 |
"""
|
565 |
|
566 |
# Récupération des hôtes accessibles à l'utilisateur
|
567 |
# 'manager' et appartenant à un groupe secondaire inexistant
|
568 |
response = self.app.post(
|
569 |
'/rpc/hosttree?parent_id=6666666', {
|
570 |
}, extra_environ={'REMOTE_USER': 'manager'}) |
571 |
json = response.json |
572 |
|
573 |
# On s'assure que la liste retournée est vide
|
574 |
self.assertEqual(
|
575 |
json, {'items': [], 'groups': []} |
576 |
) |