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