Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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)