vigigraph / vigigraph / tests / functional / test_host_selection_form.py @ 3e3db819
History | View | Annotate | Download (20.6 KB)
1 | 63ab2c06 | Vincent QUEMENER | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | """
|
||
3 | b6d2af46 | Vincent QUEMENER | Suite de tests de l'arbre de sélection des hôtes et groupes d'hôtes.
|
4 | 63ab2c06 | Vincent QUEMENER | """
|
5 | import transaction |
||
6 | |||
7 | from vigigraph.tests import TestController |
||
8 | from vigilo.models.session import DBSession |
||
9 | b6d2af46 | Vincent QUEMENER | from vigilo.models.tables import Host, SupItemGroup, Permission |
10 | 7e6517fe | Francois POIROTTE | from vigilo.models.demo.functions import add_supitemgroup, \ |
11 | add_host, add_host2group, add_usergroup, add_user, \ |
||
12 | add_supitemgrouppermission, add_usergroup_permission |
||
13 | 63ab2c06 | Vincent QUEMENER | |
14 | |||
15 | fae18e45 | Vincent QUEMENER | def populateDB(): |
16 | """
|
||
17 | Peuple la base de données en ajoutant :
|
||
18 | 2256d3db | Aurelien BOMPARD | - 3 groupes d'hôtes ;
|
19 | - 3 hôtes ;
|
||
20 | - 3 utilisateurs.
|
||
21 | fae18e45 | Vincent QUEMENER | 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 | 2256d3db | Aurelien BOMPARD | @rtype: C{tuple} of C{vigilo.models.tables.Host}
|
26 | fae18e45 | Vincent QUEMENER | """
|
27 | |||
28 | # Ajout d'un groupe d'hôtes principal
|
||
29 | 7e6517fe | Francois POIROTTE | mainhostgroup = add_supitemgroup(u'mhg', None) |
30 | fae18e45 | Vincent QUEMENER | |
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 | b6d2af46 | Vincent QUEMENER | class TestHostTree(TestController): |
82 | 63ab2c06 | Vincent QUEMENER | """
|
83 | b6d2af46 | Vincent QUEMENER | Teste l'arbre de sélection des hôtes
|
84 | et groupes d'hôtes de Vigigraph.
|
||
85 | 63ab2c06 | Vincent QUEMENER | """
|
86 | |||
87 | def setUp(self): |
||
88 | """Préparation de la base de données de tests."""
|
||
89 | |||
90 | # Initialisation de la base
|
||
91 | b6d2af46 | Vincent QUEMENER | super(TestHostTree, self).setUp() |
92 | 63ab2c06 | Vincent QUEMENER | |
93 | fae18e45 | Vincent QUEMENER | # Ajout de données de tests dans la base
|
94 | populateDB() |
||
95 | 63ab2c06 | Vincent QUEMENER | |
96 | # Validation des ajouts dans la base
|
||
97 | DBSession.flush() |
||
98 | transaction.commit() |
||
99 | |||
100 | 3ec8080a | Vincent QUEMENER | ##### Premier onglet déroulant du formulaire #####
|
101 | 63ab2c06 | Vincent QUEMENER | |
102 | 8bdfad89 | Francois POIROTTE | def test_get_root_host_groups_as_manager(self): |
103 | 63ab2c06 | Vincent QUEMENER | """
|
104 | 8bdfad89 | Francois POIROTTE | Récupération des groupes d'hôtes racines en tant que manager
|
105 | 63ab2c06 | Vincent QUEMENER |
|
106 | 8bdfad89 | Francois POIROTTE | 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 | 63ab2c06 | Vincent QUEMENER | # Récupération du groupe d'hôtes 'mhg' dans la base de données
|
111 | mainhostgroup = DBSession.query(SupItemGroup).filter( |
||
112 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'mhg').first()
|
113 | 63ab2c06 | Vincent QUEMENER | |
114 | # Récupération des groupes d'hôtes principaux
|
||
115 | fae18e45 | Vincent QUEMENER | # accessibles à l'utilisateur 'manager'
|
116 | response = self.app.post(
|
||
117 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree', {
|
118 | fae18e45 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
124 | b6d2af46 | Vincent QUEMENER | json, { |
125 | 3e3db819 | Aurelien BOMPARD | 'items': [], 'groups': [{ |
126 | b6d2af46 | Vincent QUEMENER | 'id': mainhostgroup.idgroup,
|
127 | 3e3db819 | Aurelien BOMPARD | 'name': mainhostgroup.name,
|
128 | 'type': 'group', |
||
129 | b6d2af46 | Vincent QUEMENER | }] |
130 | } |
||
131 | fae18e45 | Vincent QUEMENER | ) |
132 | |||
133 | 8bdfad89 | Francois POIROTTE | 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 | fae18e45 | Vincent QUEMENER | # Récupération des groupes d'hôtes principaux
|
145 | 63ab2c06 | Vincent QUEMENER | # accessibles à l'utilisateur 'poweruser'
|
146 | response = self.app.post(
|
||
147 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree', {
|
148 | 63ab2c06 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
154 | b6d2af46 | Vincent QUEMENER | json, { |
155 | 3e3db819 | Aurelien BOMPARD | 'items': [], 'groups': [{ |
156 | b6d2af46 | Vincent QUEMENER | 'id': mainhostgroup.idgroup,
|
157 | 3e3db819 | Aurelien BOMPARD | 'name': mainhostgroup.name,
|
158 | 'type': 'group', |
||
159 | b6d2af46 | Vincent QUEMENER | }] |
160 | } |
||
161 | 63ab2c06 | Vincent QUEMENER | ) |
162 | |||
163 | 8bdfad89 | Francois POIROTTE | 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 | 63ab2c06 | Vincent QUEMENER | # Récupération des groupes d'hôtes principaux
|
176 | # accessibles à l'utilisateur 'user'
|
||
177 | response = self.app.post(
|
||
178 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree', {
|
179 | 63ab2c06 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
185 | b6d2af46 | Vincent QUEMENER | json, { |
186 | 3e3db819 | Aurelien BOMPARD | 'items': [], 'groups': [{ |
187 | b6d2af46 | Vincent QUEMENER | 'id': mainhostgroup.idgroup,
|
188 | 3e3db819 | Aurelien BOMPARD | 'name': mainhostgroup.name,
|
189 | 'type': 'group', |
||
190 | b6d2af46 | Vincent QUEMENER | }] |
191 | } |
||
192 | 63ab2c06 | Vincent QUEMENER | ) |
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 | 8bdfad89 | Francois POIROTTE |
|
198 | L'utilisateur "visitor" n'a accès à rien et ne doit donc
|
||
199 | pas pouvoir lister le groupe racine "mhg".
|
||
200 | 63ab2c06 | Vincent QUEMENER | """
|
201 | |||
202 | # Récupération des groupes d'hôtes principaux
|
||
203 | # accessibles à l'utilisateur 'visitor'
|
||
204 | response = self.app.post(
|
||
205 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree', {
|
206 | 63ab2c06 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
211 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
212 | 63ab2c06 | Vincent QUEMENER | ) |
213 | |||
214 | fae18e45 | Vincent QUEMENER | 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 | 8bdfad89 | Francois POIROTTE |
|
218 | Une tentative de récupération des groupes racines
|
||
219 | sans être authentifié doit demander à l'utilisateur
|
||
220 | de s'authentifier.
|
||
221 | fae18e45 | Vincent QUEMENER | """
|
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 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree', {
|
228 | fae18e45 | Vincent QUEMENER | }, status=401)
|
229 | |||
230 | 3ec8080a | Vincent QUEMENER | ##### Deuxième onglet déroulant du formulaire #####
|
231 | 63ab2c06 | Vincent QUEMENER | |
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 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'mhg').first()
|
240 | 63ab2c06 | Vincent QUEMENER | |
241 | # Récupération du groupe d'hôtes 'hg1' dans la base de données
|
||
242 | hostgroup1 = DBSession.query(SupItemGroup).filter( |
||
243 | 3ec8080a | Vincent QUEMENER | 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 | 63ab2c06 | Vincent QUEMENER | |
249 | 5acc6853 | Vincent QUEMENER | # 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 | 63ab2c06 | Vincent QUEMENER | # Récupération des groupes d'hôtes
|
254 | fae18e45 | Vincent QUEMENER | # accessibles à l'utilisateur 'manager'
|
255 | response = self.app.post(
|
||
256 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
257 | fae18e45 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
263 | 5acc6853 | Vincent QUEMENER | json, { |
264 | 3e3db819 | Aurelien BOMPARD | 'items': [
|
265 | {'id': host1.idhost, 'name': host1.name, 'type': 'item'} |
||
266 | 5acc6853 | Vincent QUEMENER | ], |
267 | 'groups': [
|
||
268 | 3e3db819 | Aurelien BOMPARD | {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
269 | {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
||
270 | 5acc6853 | Vincent QUEMENER | ] |
271 | } |
||
272 | fae18e45 | Vincent QUEMENER | ) |
273 | |||
274 | # Récupération des groupes d'hôtes
|
||
275 | 63ab2c06 | Vincent QUEMENER | # accessibles à l'utilisateur 'poweruser'
|
276 | response = self.app.post(
|
||
277 | 7e6517fe | Francois POIROTTE | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
278 | }, extra_environ={'REMOTE_USER': 'poweruser'}) |
||
279 | 63ab2c06 | Vincent QUEMENER | json = response.json |
280 | |||
281 | 3ec8080a | Vincent QUEMENER | # On s'assure que la liste de groupes d'hôtes retournée
|
282 | # contient bien 'No subgroup', 'hg1', et 'hg2'
|
||
283 | 131b409a | Francois POIROTTE | self.assertEqual(
|
284 | 5acc6853 | Vincent QUEMENER | json, { |
285 | 3e3db819 | Aurelien BOMPARD | 'items': [
|
286 | {'id': host1.idhost, 'name': host1.name, 'type': 'item'} |
||
287 | 5acc6853 | Vincent QUEMENER | ], |
288 | 'groups': [
|
||
289 | 3e3db819 | Aurelien BOMPARD | {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
290 | {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
||
291 | 5acc6853 | Vincent QUEMENER | ] |
292 | } |
||
293 | 63ab2c06 | Vincent QUEMENER | ) |
294 | |||
295 | 3ec8080a | Vincent QUEMENER | # Récupération des groupes d'hôtes
|
296 | # accessibles à l'utilisateur 'user'
|
||
297 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
298 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
299 | 63ab2c06 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'user'}) |
300 | json = response.json |
||
301 | |||
302 | # On s'assure que la liste de groupes
|
||
303 | 3ec8080a | Vincent QUEMENER | # d'hôtes retournée contient bien 'hg1'
|
304 | 131b409a | Francois POIROTTE | self.assertEqual(
|
305 | 5acc6853 | Vincent QUEMENER | json, { |
306 | 3e3db819 | Aurelien BOMPARD | 'items': [],
|
307 | 5acc6853 | Vincent QUEMENER | 'groups': [
|
308 | 3e3db819 | Aurelien BOMPARD | {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
309 | 5acc6853 | Vincent QUEMENER | ] |
310 | } |
||
311 | 63ab2c06 | Vincent QUEMENER | ) |
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 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'mhg').first()
|
321 | 63ab2c06 | Vincent QUEMENER | |
322 | # Récupération des groupes d'hôtes
|
||
323 | # accessibles à l'utilisateur 'visitor'
|
||
324 | response = self.app.post(
|
||
325 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
326 | 63ab2c06 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'visitor'}) |
327 | json = response.json |
||
328 | |||
329 | b6d2af46 | Vincent QUEMENER | # On s'assure que la liste de groupes d'hôtes retournée est bien vide
|
330 | 131b409a | Francois POIROTTE | self.assertEqual(
|
331 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
332 | 63ab2c06 | Vincent QUEMENER | ) |
333 | |||
334 | fae18e45 | Vincent QUEMENER | 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 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
348 | fae18e45 | Vincent QUEMENER | }, status=401)
|
349 | |||
350 | 63ab2c06 | Vincent QUEMENER | 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 | fae18e45 | Vincent QUEMENER | # 'manager' et appartenant à un groupe principal inexistant
|
357 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
358 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=6666666', {
|
359 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'manager'}) |
360 | 63ab2c06 | Vincent QUEMENER | json = response.json |
361 | |||
362 | 5acc6853 | Vincent QUEMENER | # On s'assure que la liste de groupes d'hôtes retournée est bien vide
|
363 | 131b409a | Francois POIROTTE | self.assertEqual(
|
364 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
365 | 63ab2c06 | Vincent QUEMENER | ) |
366 | |||
367 | 3ec8080a | Vincent QUEMENER | ##### Troisième onglet déroulant du formulaire #####
|
368 | 63ab2c06 | Vincent QUEMENER | |
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 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'mhg').first()
|
377 | 63ab2c06 | Vincent QUEMENER | |
378 | # Récupération du groupe d'hôtes 'hg1' dans la base de données
|
||
379 | hostgroup1 = DBSession.query(SupItemGroup).filter( |
||
380 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'hg1').first()
|
381 | |||
382 | b6d2af46 | Vincent QUEMENER | # 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 | 63ab2c06 | Vincent QUEMENER | # Récupération des hôtes du groupe 'mhg'
|
395 | fae18e45 | Vincent QUEMENER | # accessibles à l'utilisateur 'manager'
|
396 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
397 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
398 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'manager'}) |
399 | 63ab2c06 | Vincent QUEMENER | json = response.json |
400 | |||
401 | 3ec8080a | Vincent QUEMENER | # On s'assure que la liste d'hôtes retournée contient bien 'host1'
|
402 | 131b409a | Francois POIROTTE | self.assertEqual(
|
403 | b6d2af46 | Vincent QUEMENER | json, { |
404 | 3e3db819 | Aurelien BOMPARD | 'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}], |
405 | b6d2af46 | Vincent QUEMENER | 'groups': [
|
406 | 3e3db819 | Aurelien BOMPARD | {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
407 | {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'} |
||
408 | b6d2af46 | Vincent QUEMENER | ] |
409 | } |
||
410 | 63ab2c06 | Vincent QUEMENER | ) |
411 | |||
412 | 3ec8080a | Vincent QUEMENER | # Récupération des hôtes du groupe 'hg1'
|
413 | fae18e45 | Vincent QUEMENER | # accessibles à l'utilisateur 'manager'
|
414 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
415 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
416 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'manager'}) |
417 | 63ab2c06 | Vincent QUEMENER | json = response.json |
418 | |||
419 | 3ec8080a | Vincent QUEMENER | # On s'assure que la liste d'hotes retournée contient bien 'host2'
|
420 | 131b409a | Francois POIROTTE | self.assertEqual(
|
421 | b6d2af46 | Vincent QUEMENER | json, { |
422 | 3e3db819 | Aurelien BOMPARD | 'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
423 | b6d2af46 | Vincent QUEMENER | 'groups': []
|
424 | } |
||
425 | 63ab2c06 | Vincent QUEMENER | ) |
426 | |||
427 | fae18e45 | Vincent QUEMENER | # Récupération des hôtes du groupe 'mhg'
|
428 | # accessibles à l'utilisateur 'poweruser'
|
||
429 | response = self.app.post(
|
||
430 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
431 | fae18e45 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
436 | b6d2af46 | Vincent QUEMENER | json, { |
437 | 3e3db819 | Aurelien BOMPARD | 'items': [{'id': host1.idhost, 'name': host1.name, 'type': 'item'}], |
438 | b6d2af46 | Vincent QUEMENER | 'groups': [
|
439 | 3e3db819 | Aurelien BOMPARD | {'id': hostgroup1.idgroup, 'name': hostgroup1.name, 'type': 'group'}, |
440 | {'id': hostgroup2.idgroup, 'name': hostgroup2.name, 'type': 'group'}, |
||
441 | b6d2af46 | Vincent QUEMENER | ] |
442 | } |
||
443 | fae18e45 | Vincent QUEMENER | ) |
444 | |||
445 | 63ab2c06 | Vincent QUEMENER | # Récupération des hôtes du groupe 'hg1'
|
446 | fae18e45 | Vincent QUEMENER | # accessibles à l'utilisateur 'poweruser'
|
447 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
448 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
449 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'poweruser'}) |
450 | 63ab2c06 | Vincent QUEMENER | json = response.json |
451 | |||
452 | fae18e45 | Vincent QUEMENER | # On s'assure que la liste d'hotes retournée contient bien 'host2'
|
453 | 131b409a | Francois POIROTTE | self.assertEqual(
|
454 | b6d2af46 | Vincent QUEMENER | json, { |
455 | 3e3db819 | Aurelien BOMPARD | 'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
456 | b6d2af46 | Vincent QUEMENER | 'groups': []
|
457 | } |
||
458 | 63ab2c06 | Vincent QUEMENER | ) |
459 | |||
460 | fae18e45 | Vincent QUEMENER | # Récupération des hôtes du groupe 'hg1'
|
461 | # accessibles à l'utilisateur 'user'
|
||
462 | 3ec8080a | Vincent QUEMENER | response = self.app.post(
|
463 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
464 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'user'}) |
465 | 3ec8080a | Vincent QUEMENER | json = response.json |
466 | |||
467 | fae18e45 | Vincent QUEMENER | # On s'assure que la liste d'hôtes retournée contient bien 'host2'
|
468 | 131b409a | Francois POIROTTE | self.assertEqual(
|
469 | b6d2af46 | Vincent QUEMENER | json, { |
470 | 3e3db819 | Aurelien BOMPARD | 'items': [{'id': host2.idhost, 'name': host2.name, 'type': 'item'}], |
471 | b6d2af46 | Vincent QUEMENER | 'groups': []
|
472 | } |
||
473 | 3ec8080a | Vincent QUEMENER | ) |
474 | |||
475 | 63ab2c06 | Vincent QUEMENER | 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 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'mhg').first()
|
483 | 63ab2c06 | Vincent QUEMENER | |
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 | 3ec8080a | Vincent QUEMENER | SupItemGroup.name == u'hg1').first()
|
488 | 63ab2c06 | Vincent QUEMENER | |
489 | 3ec8080a | Vincent QUEMENER | # 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 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
497 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
498 | 3ec8080a | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'user'}) |
499 | 63ab2c06 | Vincent QUEMENER | json = response.json |
500 | |||
501 | b6d2af46 | Vincent QUEMENER | # On s'assure que la liste d'hôtes retournée est vide
|
502 | 131b409a | Francois POIROTTE | self.assertEqual(
|
503 | cc1a971a | Vincent QUEMENER | json, { |
504 | 3e3db819 | Aurelien BOMPARD | 'items': [],
|
505 | 'groups': [{'name': hostgroup1.name, 'id': hostgroup1.idgroup, 'type': 'group'}] |
||
506 | cc1a971a | Vincent QUEMENER | } |
507 | 3ec8080a | Vincent QUEMENER | ) |
508 | |||
509 | # Récupération des hôtes du groupe 'hg2'
|
||
510 | # accessibles à l'utilisateur 'user'
|
||
511 | response = self.app.post(
|
||
512 | 7e6517fe | Francois POIROTTE | '/rpc/hosttree?parent_id=%s' % (hostgroup2.idgroup, ), {
|
513 | }, extra_environ={'REMOTE_USER': 'user'}) |
||
514 | 3ec8080a | Vincent QUEMENER | json = response.json |
515 | |||
516 | b6d2af46 | Vincent QUEMENER | # On s'assure que la liste d'hôtes retournée est vide
|
517 | 131b409a | Francois POIROTTE | self.assertEqual(
|
518 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
519 | 3ec8080a | Vincent QUEMENER | ) |
520 | |||
521 | # Récupération des hôtes du groupe 'mhg'
|
||
522 | # accessibles à l'utilisateur 'visitor'
|
||
523 | response = self.app.post(
|
||
524 | 7e6517fe | Francois POIROTTE | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
525 | }, extra_environ={'REMOTE_USER': 'visitor'}) |
||
526 | 3ec8080a | Vincent QUEMENER | json = response.json |
527 | |||
528 | b6d2af46 | Vincent QUEMENER | # On s'assure que la liste d'hôtes retournée est vide
|
529 | 131b409a | Francois POIROTTE | self.assertEqual(
|
530 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
531 | 63ab2c06 | Vincent QUEMENER | ) |
532 | |||
533 | # Récupération des hôtes du groupe 'hg1'
|
||
534 | # accessibles à l'utilisateur 'visitor'
|
||
535 | response = self.app.post(
|
||
536 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (hostgroup1.idgroup, ), {
|
537 | 63ab2c06 | Vincent QUEMENER | }, 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 | 131b409a | Francois POIROTTE | self.assertEqual(
|
542 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
543 | 63ab2c06 | Vincent QUEMENER | ) |
544 | |||
545 | fae18e45 | Vincent QUEMENER | def test_get_hosts_as_anonymous(self): |
546 | """
|
||
547 | 8bdfad89 | Francois POIROTTE | Récupération des hôtes en tant qu'anonyme
|
548 | fae18e45 | Vincent QUEMENER | """
|
549 | 3ec8080a | Vincent QUEMENER | |
550 | fae18e45 | Vincent QUEMENER | # 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 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=%s' % (mainhostgroup.idgroup, ), {
|
559 | fae18e45 | Vincent QUEMENER | }, status=401)
|
560 | 3ec8080a | Vincent QUEMENER | |
561 | 63ab2c06 | Vincent QUEMENER | 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 | fae18e45 | Vincent QUEMENER | # 'manager' et appartenant à un groupe secondaire inexistant
|
568 | 63ab2c06 | Vincent QUEMENER | response = self.app.post(
|
569 | b6d2af46 | Vincent QUEMENER | '/rpc/hosttree?parent_id=6666666', {
|
570 | fae18e45 | Vincent QUEMENER | }, extra_environ={'REMOTE_USER': 'manager'}) |
571 | 63ab2c06 | Vincent QUEMENER | json = response.json |
572 | |||
573 | # On s'assure que la liste retournée est vide
|
||
574 | 131b409a | Francois POIROTTE | self.assertEqual(
|
575 | 3e3db819 | Aurelien BOMPARD | json, {'items': [], 'groups': []} |
576 | 63ab2c06 | Vincent QUEMENER | ) |