vigiboard / vigiboard / tests / functional / test_userutils.py @ 9c0dbb6a
History | View | Annotate | Download (2.58 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4:
|
3 |
"""
|
4 |
Test de la classe User Utils
|
5 |
"""
|
6 |
from nose.tools import assert_true |
7 |
|
8 |
from vigiboard.model import DBSession, Groups, Permission, GroupPermissions, Events |
9 |
from vigiboard.tests import TestController |
10 |
from vigiboard.controllers.vigiboard_ctl import get_user_groups |
11 |
from vigiboard.tests import setup_db, teardown_db |
12 |
import tg |
13 |
import transaction |
14 |
|
15 |
|
16 |
class TestUserUtils(TestController): |
17 |
"""Test de la classe User Utils"""
|
18 |
|
19 |
def tearDown(self): |
20 |
DBSession.rollback() |
21 |
teardown_db() |
22 |
transaction.begin() |
23 |
|
24 |
def test_get_user_groups(self): |
25 |
"""
|
26 |
Manager est dans le group hostmanagers et hosteditors
|
27 |
et Editor seulement dans hosteditors
|
28 |
"""
|
29 |
|
30 |
# On commence par peupler la base
|
31 |
|
32 |
DBSession.add(Groups(name = "hostmanagers"))
|
33 |
DBSession.add(Groups(name = "hosteditors", parent="hostmanagers")) |
34 |
DBSession.query(Permission).filter( |
35 |
Permission.permission_name == u'manage')[0].permission_id |
36 |
idmanagers = DBSession.query(Permission).filter( |
37 |
Permission.permission_name == u'manage')[0].permission_id |
38 |
ideditors = DBSession.query(Permission |
39 |
).filter(Permission.permission_name == u'edit')[0].permission_id |
40 |
DBSession.add(GroupPermissions(groupname = "hostmanagers",
|
41 |
idpermission = idmanagers)) |
42 |
DBSession.add(GroupPermissions(groupname = "hosteditors",
|
43 |
idpermission = ideditors)) |
44 |
|
45 |
# On commit car app.get fait un rollback ou équivalent
|
46 |
|
47 |
transaction.commit() |
48 |
|
49 |
# On obtient les variables de sessions comme si on était loggué
|
50 |
# en tant que manager
|
51 |
|
52 |
environ = {'REMOTE_USER': 'manager'} |
53 |
response = self.app.get('/', extra_environ=environ) |
54 |
tg.request = response.request |
55 |
|
56 |
# On récupère la liste des groups auquel on appartient
|
57 |
|
58 |
grp = get_user_groups() |
59 |
|
60 |
# On vérifi que la liste est correcte (vérifi la gestion des
|
61 |
# groupes sous forme d'arbre)
|
62 |
|
63 |
assert_true( 'hostmanagers' in grp and 'hosteditors' in grp , |
64 |
msg = "il est dans %s" % grp)
|
65 |
|
66 |
# On recommence pour l'utilisateur editor
|
67 |
|
68 |
environ = {'REMOTE_USER': 'editor'} |
69 |
response = self.app.get('/', extra_environ=environ) |
70 |
tg.request = response.request |
71 |
|
72 |
grp = get_user_groups() |
73 |
|
74 |
assert_true( not('hostmanagers' in grp) and 'hosteditors' in grp, |
75 |
msg = "il est dans %s" % grp)
|