vigiboard / vigiboard / tests / functional / test_userutils.py @ 35cea70e
History | View | Annotate | Download (2.45 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 |
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 |
#Create an empty database before we start our tests for this module
|
16 |
def setup(): |
17 |
"""Function called by nose on module load"""
|
18 |
setup_db() |
19 |
|
20 |
#Teardown that database
|
21 |
def teardown(): |
22 |
"""Function called by nose after all tests in this module ran"""
|
23 |
teardown_db() |
24 |
|
25 |
class TestUserUtils(TestController): |
26 |
"""Test de la classe User Utils"""
|
27 |
|
28 |
def test_get_user_groups(self): |
29 |
"""
|
30 |
Manager est dans le group hostmanagers et hosteditors
|
31 |
et Editor seulement dans hosteditors
|
32 |
"""
|
33 |
|
34 |
# On commence par peupler la base
|
35 |
|
36 |
DBSession.add(Groups(name="hostmanagers"))
|
37 |
DBSession.add(Groups(name="hosteditors", parent="hostmanagers")) |
38 |
idmanagers = DBSession.query(Permission).filter( |
39 |
Permission.permission_name == 'manage')[0].permission_id |
40 |
ideditors = DBSession.query(Permission |
41 |
).filter(Permission.permission_name == 'edit')[0].permission_id |
42 |
DBSession.add(GroupPermissions(groupname = "hostmanagers",
|
43 |
idpermission = idmanagers)) |
44 |
DBSession.add(GroupPermissions(groupname = "hosteditors",
|
45 |
idpermission = ideditors)) |
46 |
|
47 |
# On commit car app.get fait un rollback ou équivalent
|
48 |
|
49 |
transaction.commit() |
50 |
|
51 |
# On obtient les variables de sessions comme si on était loggué
|
52 |
# en tant que manager
|
53 |
|
54 |
environ = {'REMOTE_USER': 'manager'} |
55 |
response = self.app.get('/', extra_environ=environ) |
56 |
tg.request = response.request |
57 |
|
58 |
# On récupère la liste des groups auquel on appartient
|
59 |
|
60 |
grp = get_user_groups() |
61 |
|
62 |
# On vérifi que la liste est correcte (vérifi la gestion des
|
63 |
# groupes sous forme d'arbre)
|
64 |
|
65 |
assert_true( 'hostmanagers' in grp and 'hosteditors' in grp) |
66 |
|
67 |
# On recommence pour l'utilisateur editor
|
68 |
|
69 |
environ = {'REMOTE_USER': 'editor'} |
70 |
response = self.app.get('/', extra_environ=environ) |
71 |
tg.request = response.request |
72 |
grp = get_user_groups() |
73 |
assert_true( not('hostmanagers' in grp) and 'hosteditors' in grp) |