Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / tests / functional / test_correvents_table.py @ 011743be

History | View | Annotate | Download (6.91 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
# Copyright (C) 2006-2020 CS GROUP - France
4
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
5

    
6
"""
7
Test du tableau d'événements de Vigiboard
8
"""
9

    
10
from __future__ import absolute_import, print_function
11

    
12
from nose.tools import assert_true, assert_equal
13

    
14
from vigiboard.tests import TestController
15

    
16
from .utils import populate_DB
17

    
18

    
19
class TestEventTable(TestController):
20
    """
21
    Test du tableau d'événements de Vigiboard
22
    """
23
    def setUp(self):
24
        super(TestEventTable, self).setUp()
25
        populate_DB()
26

    
27
    def test_homepage(self):
28
        """
29
        Tableau des événements (page d'accueil).
30
        """
31
        # L'utilisateur n'est pas authentifié.
32
        response = self.app.get('/', status=401)
33
        response = self.app.get('/index.csv', status=401)
34

    
35
        # L'utilisateur est authentifié avec des permissions réduites.
36
        environ = {'REMOTE_USER': 'limited_access'}
37
        response = self.app.get('/', extra_environ=environ)
38

    
39
        # Il doit y avoir 2 lignes de résultats.
40
        rows = self.get_rows(response)
41
        print("There are %d rows in the result set" % len(rows))
42
        assert_equal(len(rows), 2)
43

    
44
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
45
        cols = self.get_cells(response)
46
        print("There are %d columns in the result set" % len(cols))
47
        assert_true(len(cols) > 1)
48

    
49
        # Mêmes vérifications pour le CSV.
50
        response = self.app.get('/index.csv', extra_environ=environ)
51
        # 1 ligne d'en-tête + 2 lignes de données
52
        lines = response.body.strip().splitlines()
53
        assert_equal(3, len(lines))
54
        assert_true(len(lines[0].split(';')) > 1)
55

    
56

    
57
        # L'utilisateur est authentifié avec des permissions plus étendues.
58
        environ = {'REMOTE_USER': 'access'}
59
        response = self.app.get('/', extra_environ=environ)
60

    
61
        # Il doit y avoir 5 lignes de résultats.
62
        rows = self.get_rows(response)
63
        print("There are %d rows in the result set" % len(rows))
64
        assert_equal(len(rows), 5)
65

    
66
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
67
        cols = self.get_cells(response)
68
        print("There are %d columns in the result set" % len(cols))
69
        assert_true(len(cols) > 1)
70

    
71
        # Mêmes vérifications pour le CSV.
72
        response = self.app.get('/index.csv', extra_environ=environ)
73
        # 1 ligne d'en-tête + 5 lignes de données
74
        lines = response.body.strip().splitlines()
75
        assert_equal(6, len(lines))
76
        assert_true(len(lines[0].split(';')) > 1)
77

    
78

    
79
        # L'utilisateur fait partie du groupe 'managers'
80
        environ = {'REMOTE_USER': 'manager'}
81
        response = self.app.get('/', extra_environ=environ)
82

    
83
        # Il doit y avoir 5 lignes de résultats.
84
        rows = self.get_rows(response)
85
        print("There are %d rows in the result set" % len(rows))
86
        assert_equal(len(rows), 5)
87

    
88
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
89
        cols = self.get_cells(response)
90
        print("There are %d columns in the result set" % len(cols))
91
        assert_true(len(cols) > 1)
92

    
93
        # Mêmes vérifications pour le CSV.
94
        response = self.app.get('/index.csv', extra_environ=environ)
95
        # 1 ligne d'en-tête + 5 lignes de données
96
        lines = response.body.strip().splitlines()
97
        assert_equal(6, len(lines))
98
        assert_true(len(lines[0].split(';')) > 1)
99

    
100
    def test_correvents_table_for_LLS(self):
101
        """
102
        Tableau des événements corrélés pour un service de bas niveau.
103
        """
104
        url = '/item/1/group2_host/group2_service'
105

    
106
        # L'utilisateur n'est pas authentifié.
107
        response = self.app.get(url, status=401)
108

    
109
        # L'utilisateur dispose de permissions restreintes.
110
        # Il n'a pas accès aux événements corrélés sur le service donné.
111
        # Donc, on s'attend à être redirigé avec un message d'erreur.
112
        environ = {'REMOTE_USER': 'limited_access'}
113
        response = self.app.get(url, extra_environ=environ, status=302)
114
        response = response.follow(status = 200, extra_environ = environ)
115
        assert_true(len(response.lxml.xpath(
116
            '//div[@id="flash"]/div[@class="error"]')))
117

    
118
        # L'utilisateur dispose de permissions plus étendues.
119
        # Il doit avoir accès à l'historique.
120
        # Ici, il n'y a qu'un seul événement corrélé pour ce service.
121
        environ = {'REMOTE_USER': 'access'}
122
        response = self.app.get(url, extra_environ=environ, status=200)
123

    
124
        # Il doit y avoir 1 ligne de résultats.
125
        rows = self.get_rows(response)
126
        print("There are %d rows in the result set" % len(rows))
127
        assert_equal(len(rows), 1)
128

    
129
        # L'utilisateur fait partie du groupe 'managers'
130
        # Il doit avoir accès à l'historique.
131
        # Ici, il n'y a qu'un seul événement corrélé pour ce service.
132
        environ = {'REMOTE_USER': 'manager'}
133
        response = self.app.get(url, extra_environ=environ, status=200)
134

    
135
        # Il doit y avoir 1 ligne de résultats.
136
        rows = self.get_rows(response)
137
        print("There are %d rows in the result set" % len(rows))
138
        assert_equal(len(rows), 1)
139

    
140
    def test_correvents_table_for_host(self):
141
        """
142
        Tableau des événements corrélés pour un hôte.
143
        """
144
        url = '/item/1/group2_host/'
145

    
146
        # L'utilisateur n'est pas authentifié.
147
        response = self.app.get(url, status=401)
148

    
149
        # L'utilisateur dispose de permissions restreintes.
150
        # Il n'a pas accès aux événements corrélés sur le service donné.
151
        # Donc, on s'attend à être redirigé avec un message d'erreur.
152
        environ = {'REMOTE_USER': 'limited_access'}
153
        response = self.app.get(url, extra_environ=environ, status=302)
154
        response = response.follow(status = 200, extra_environ = environ)
155
        assert_true(len(response.lxml.xpath(
156
            '//div[@id="flash"]/div[@class="error"]')))
157

    
158
        # L'utilisateur dispose de permissions plus étendues.
159
        # Il doit avoir accès à l'historique.
160
        # Ici, il n'y a qu'un seul événement corrélé pour ce service.
161
        environ = {'REMOTE_USER': 'access'}
162
        response = self.app.get(url, extra_environ=environ, status=200)
163

    
164
        # Il doit y avoir 1 ligne de résultats.
165
        rows = self.get_rows(response)
166
        print("There are %d rows in the result set" % len(rows))
167
        assert_equal(len(rows), 1)
168

    
169
        # L'utilisateur fait partie du groupe 'managers'.
170
        # Il doit avoir accès à l'historique.
171
        # Ici, il n'y a qu'un seul événement corrélé pour ce service.
172
        environ = {'REMOTE_USER': 'manager'}
173
        response = self.app.get(url, extra_environ=environ, status=200)
174

    
175
        # Il doit y avoir 1 ligne de résultats.
176
        rows = self.get_rows(response)
177
        print("There are %d rows in the result set" % len(rows))
178
        assert_equal(len(rows), 1)