Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / tests / functional / test_userutils.py @ 348eec2c

History | View | Annotate | Download (2.22 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, Group, Permission
9
from vigiboard.tests import TestController
10
from vigiboard.tests import teardown_db
11
import tg
12
import transaction
13
from nose.plugins.skip import SkipTest
14

    
15
class TestUserUtils(TestController):
16
    """Test retrieval of groups of hosts/services."""
17

    
18
    def test_get_user_groups(self):
19
        """
20
        Manager est dans le group hostmanagers et hosteditors
21
        et Editor seulement dans hosteditors
22
        """
23

    
24
#        # XXX This test has some issues, skip it until it gets fixed.
25
        raise SkipTest
26
#        
27
        # On commence par peupler la base
28
        hostmanagers = Group(name=u'hostmanagers', parent=None)
29
        DBSession.add(hostmanagers)
30

    
31
        hosteditors = Group(name=u'hosteditors', parent=hostmanagers)
32
        DBSession.add(hosteditors)
33

    
34
        manage_perm = Permission.by_permission_name(u'manage')
35
        edit_perm = Permission.by_permission_name(u'edit')
36

    
37
        manage_perm.groups.append(hostmanagers)
38
        edit_perm.groups.append(hosteditors)
39
        DBSession.flush()
40
        transaction.commit()
41
        
42
        # On obtient les variables de sessions comme si on était loggué
43
        # en tant que manager
44

    
45
        environ = {'REMOTE_USER': u'manager'}
46
        response = self.app.get('/', extra_environ=environ)
47
        
48
        # On récupère la liste des groups auquel on appartient
49
        
50
        user = response.request.environ.get('repoze.who.identity')
51
        grp = user.groups()
52
        print grp
53
        # On vérifie que la liste est correcte (vérifie la gestion des
54
        # groupes sous forme d'arbre)
55

    
56
        assert_true( u'hostmanagers' in grp and u'hosteditors' in grp ,
57
            msg = "il est dans %s" % grp)
58

    
59
        # On recommence pour l'utilisateur editor
60
        
61
        environ = {'REMOTE_USER': u'editor'}
62
        response = self.app.get('/', extra_environ=environ)
63
        
64
        user = response.request.environ.get('repoze.who.identity')
65
        grp = user.groups()
66
        
67
        assert_true( not(u'hostmanagers' in grp) and u'hosteditors' in grp,
68
            msg = "il est dans %s" % grp)
69