vigiboard / vigiboard / tests / functional / test_userutils.py @ 7365fb51
History | View | Annotate | Download (2.7 KB)
1 | 57f7cb3f | Gabriel DE PERTHUIS | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | # vim:set expandtab tabstop=4 shiftwidth=4:
|
||
3 | """
|
||
4 | 3ee2b81b | Francois POIROTTE | Teste l'héritage des permissions sur les groupes d'hôtes/services.
|
5 | 57f7cb3f | Gabriel DE PERTHUIS | """
|
6 | c1ce3d6a | Francois POIROTTE | import tg |
7 | import transaction |
||
8 | 57f7cb3f | Gabriel DE PERTHUIS | from nose.tools import assert_true |
9 | |||
10 | 7365fb51 | Francois POIROTTE | from vigilo.models.session import DBSession |
11 | from vigilo.models import HostGroup, Permission, User |
||
12 | 57f7cb3f | Gabriel DE PERTHUIS | from vigiboard.tests import TestController |
13 | |||
14 | 3ee2b81b | Francois POIROTTE | class TestGroupPermissionsInheritance(TestController): |
15 | aa0788a2 | Francois POIROTTE | """Test retrieval of groups of hosts/services."""
|
16 | 47acbffb | Francois POIROTTE | def test_groups_inheritance(self): |
17 | """
|
||
18 | S'assure que les groupes sont correctement hérités.
|
||
19 | """
|
||
20 | d3c47597 | Francois POIROTTE | |
21 | 47acbffb | Francois POIROTTE | # Création de 2 groupes d'utilisateurs.
|
22 | 86c3ae23 | Francois POIROTTE | hosteditors = HostGroup(name=u'hosteditors', parent=None) |
23 | 47acbffb | Francois POIROTTE | DBSession.add(hosteditors) |
24 | 57f7cb3f | Gabriel DE PERTHUIS | |
25 | 86c3ae23 | Francois POIROTTE | hostmanagers = HostGroup(name=u'hostmanagers', parent=hosteditors)
|
26 | 47acbffb | Francois POIROTTE | DBSession.add(hostmanagers) |
27 | aa0788a2 | Francois POIROTTE | |
28 | bc94248f | Francois POIROTTE | # L'attribution des permissions.
|
29 | aa0788a2 | Francois POIROTTE | manage_perm = Permission.by_permission_name(u'manage')
|
30 | edit_perm = Permission.by_permission_name(u'edit')
|
||
31 | |||
32 | 86c3ae23 | Francois POIROTTE | manage_perm.hostgroups.append(hostmanagers) |
33 | edit_perm.hostgroups.append(hosteditors) |
||
34 | aa0788a2 | Francois POIROTTE | DBSession.flush() |
35 | transaction.commit() |
||
36 | 57f7cb3f | Gabriel DE PERTHUIS | |
37 | bc94248f | Francois POIROTTE | # On obtient les variables de session comme si on était loggué
|
38 | # en tant que manager.
|
||
39 | environ = {'REMOTE_USER': 'manager'} |
||
40 | 57f7cb3f | Gabriel DE PERTHUIS | response = self.app.get('/', extra_environ=environ) |
41 | |||
42 | bc94248f | Francois POIROTTE | # On récupère la liste des groups auxquels l'utilisateur appartient.
|
43 | c1ce3d6a | Francois POIROTTE | username = response.request.environ \ |
44 | ['repoze.who.identity'] \
|
||
45 | ['repoze.who.userid']
|
||
46 | bc94248f | Francois POIROTTE | grp = User.by_user_name(username).groups |
47 | aa0788a2 | Francois POIROTTE | |
48 | 47acbffb | Francois POIROTTE | # Permet de rafraîchir les instances.
|
49 | 86c3ae23 | Francois POIROTTE | hostmanagers = DBSession.query(HostGroup).filter( |
50 | HostGroup.name==u'hostmanagers').one()
|
||
51 | hosteditors = DBSession.query(HostGroup).filter( |
||
52 | HostGroup.name==u'hosteditors').one()
|
||
53 | 47acbffb | Francois POIROTTE | |
54 | bc94248f | Francois POIROTTE | # On vérifie que la liste est correcte : le manager doit avoir accès
|
55 | # aux groupes 'hostmanagers' & 'hosteditors' (dont il hérite).
|
||
56 | 47acbffb | Francois POIROTTE | assert_true(hostmanagers.idgroup in grp and |
57 | hosteditors.idgroup in grp,
|
||
58 | 57f7cb3f | Gabriel DE PERTHUIS | msg = "il est dans %s" % grp)
|
59 | aa0788a2 | Francois POIROTTE | |
60 | bc94248f | Francois POIROTTE | # On recommence avec l'utilisateur editor.
|
61 | environ = {'REMOTE_USER': 'editor'} |
||
62 | 57f7cb3f | Gabriel DE PERTHUIS | response = self.app.get('/', extra_environ=environ) |
63 | bc94248f | Francois POIROTTE | |
64 | c1ce3d6a | Francois POIROTTE | username = response.request.environ \ |
65 | ['repoze.who.identity'] \
|
||
66 | ['repoze.who.userid']
|
||
67 | bc94248f | Francois POIROTTE | grp = User.by_user_name(username).groups |
68 | |||
69 | # L'utilisateur editor ne doit avoir accès qu'au groupe 'hosteditors'.
|
||
70 | 47acbffb | Francois POIROTTE | assert_true(not(hostmanagers.idgroup in grp) and |
71 | hosteditors.idgroup in grp,
|
||
72 | 57f7cb3f | Gabriel DE PERTHUIS | msg = "il est dans %s" % grp)
|