Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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)