Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / tests / functional / test_userutils.py @ 20367931

History | View | Annotate | Download (2.35 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 * 
9
from vigiboard.tests import TestController
10
from vigiboard.controllers.vigiboard_ctl import GetUserGroups
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
    f = open('/home/tandreja/moimoi','a')
25
    try:
26
       f.write("%d\n" % DBSession.query(Group).count())
27
    except:
28
        pass
29
    f.close()
30

    
31
class TestUserUtils(TestController):
32

    
33
    def test_get_user_groups(self):
34
        """Manager est dans le group hostmanagers et hosteditors et Editor seulement dans hosteditors"""
35
        #On commence par peupler la base
36
        DBSession.add(Groups(name="hostmanagers"))
37
        DBSession.add(Groups(name="hosteditors",parent="hostmanagers"))
38
        idmanagers = DBSession.query(Permission).filter(Permission.permission_name=='manage')[0].permission_id
39
        ideditors = DBSession.query(Permission).filter(Permission.permission_name=='edit')[0].permission_id
40
        DBSession.add(GroupPermissions(groupname="hostmanagers",idpermission=idmanagers))
41
        DBSession.add(GroupPermissions(groupname="hosteditors",idpermission=ideditors))
42

    
43
        # On commit car app.get fait un rollback ou équivalent
44
        transaction.commit()
45

    
46
        # On obtient les variables de sessions comme si on était loggué en tant que manager
47
        environ = {'REMOTE_USER': 'manager'}
48
        response = self.app.get('/', extra_environ=environ)
49
        tg.request = response.request
50

    
51
        #On récupère la liste des groups auquel on appartient
52
        grp = GetUserGroups()
53

    
54
        #On vérifi que la liste est correcte (vérifi la gestion des groupes sous forme d'arbre)
55
        assert_true( 'hostmanagers' in grp and 'hosteditors' in grp)
56

    
57
        #On recommence pour l'utilisateur editor
58
        environ = {'REMOTE_USER': 'editor'}
59
        response = self.app.get('/', extra_environ=environ)
60
        tg.request = response.request
61
        grp = GetUserGroups()
62
        assert_true( not('hostmanagers' in grp) and 'hosteditors' in grp)