vigiboard / vigiboard / tests / functional / test_userutils.py @ 20367931
History | View | Annotate | Download (2.35 KB)
1 | 20367931 | Thomas ANDREJAK | # -*- 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) |