Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigigraph / vigigraph / tests / functional / test_fullhostpage.py @ 77b7746d

History | View | Annotate | Download (3.33 KB)

1
# -*- coding: utf-8 -*-
2
# Copyright (C) 2006-2016 CS-SI
3
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
4

    
5
"""
6
Tests les accès à la page rpc/fullHostPage
7
permettant d'afficher tous les graphes
8
associés à un hôte.
9
"""
10
import transaction
11
import urllib
12

    
13
from vigigraph.tests import TestController
14
from vigilo.models.session import DBSession
15
from vigigraph.tests.functional.helpers import populateDB, addGraphs
16

    
17

    
18
class TestFullHostPage(TestController):
19
    """
20
    Teste la page d'affichage de tous les graphs d'un hôte.
21
    """
22

    
23
    def setUp(self):
24
        """Préparation de la base de données de tests."""
25

    
26
        # Initialisation de la base
27
        super(TestFullHostPage, self).setUp()
28

    
29
        # Ajout de données de tests dans la base
30
        (host1, host2, host3) = populateDB()
31

    
32
        # Ajout de graphes dans la base
33
        addGraphs(host1, host2, host3)
34

    
35
        # Validation des ajouts dans la base
36
        DBSession.flush()
37
        transaction.commit()
38

    
39
    def _check_results(self, user, hosts):
40
        for host in hosts:
41
            if hosts[host]:
42
                response = self.app.get(
43
                    '/rpc/fullHostPage?host=%s' %
44
                        urllib.quote_plus(host.encode('utf-8')),
45
                    extra_environ={"REMOTE_USER": user}
46
                )
47
                index = int(host[4])
48
                self.assertTrue(
49
                    '/vigirrd/%s/index?graphtemplate=%s' % (
50
                        urllib.quote((u'host%d éà' % index).encode('utf-8')),
51
                        urllib.quote_plus((u'graph%d éà' % index).encode('utf-8')),
52
                    ) in response.unicode_body
53
                )
54
            else:
55
                response = self.app.get(
56
                    '/rpc/fullHostPage?host=%s' %
57
                        urllib.quote_plus(host.encode('utf-8')),
58
                    extra_environ={"REMOTE_USER": user},
59
                    status = 403
60
                )
61

    
62
    def test_direct_permission(self):
63
        """Accès à rpc/fullHostPage avec permission sur le groupe"""
64
        hosts = {
65
            u'host1 éà': False,
66
            u'host2 éà': True,
67
            u'host3 éà': False,
68
        }
69
        self._check_results('user', hosts)
70

    
71
    def test_permission_on_parent(self):
72
        """Accès à rpc/fullHostPage avec permission sur le parent du groupe"""
73
        hosts = {
74
            u'host1 éà': True,
75
            u'host2 éà': True,
76
            u'host3 éà': True,
77
        }
78
        self._check_results('poweruser', hosts)
79

    
80
    def test_no_permission(self):
81
        """Accès à rpc/fullHostPage sans permissions"""
82
        hosts = {
83
            u'host1 éà': False,
84
            u'host2 éà': False,
85
            u'host3 éà': False,
86
        }
87
        self._check_results('visitor', hosts)
88

    
89
    def test_anonymous(self):
90
        """Accès à rpc/fullHostPage en anonyme"""
91
        for host in (u'host1 éà', u'host2 éà', u'host3 éà'):
92
            self.app.get(
93
                '/rpc/fullHostPage?host=%s' %
94
                    urllib.quote_plus(host.encode('utf-8'), ''),
95
                status=401
96
            )
97

    
98
    def test_managers(self):
99
        """Accès à rpc/fullHostPage depuis le compte manager"""
100
        hosts = {
101
            u'host1 éà': True,
102
            u'host2 éà': True,
103
            u'host3 éà': True,
104
        }
105
        self._check_results('manager', hosts)