Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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)