Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (6.91 KB)

1 2d2d2c1a Vincent QUEMENER
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3 011743be Francois POIROTTE
# Copyright (C) 2006-2020 CS GROUP - France
4 b373a5de Aurelien BOMPARD
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
5
6 2d2d2c1a Vincent QUEMENER
"""
7
Test du tableau d'événements de Vigiboard
8
"""
9
10 0dff1e21 Francois POIROTTE
from __future__ import absolute_import, print_function
11 8b2edebe Aurelien BOMPARD
12 2d2d2c1a Vincent QUEMENER
from nose.tools import assert_true, assert_equal
13
14
from vigiboard.tests import TestController
15
16 8b2edebe Aurelien BOMPARD
from .utils import populate_DB
17
18 2d2d2c1a Vincent QUEMENER
19 7365fb51 Francois POIROTTE
class TestEventTable(TestController):
20
    """
21
    Test du tableau d'événements de Vigiboard
22
    """
23 60d02e7f Francois POIROTTE
    def setUp(self):
24
        super(TestEventTable, self).setUp()
25
        populate_DB()
26
27 0c8b0e15 Francois POIROTTE
    def test_homepage(self):
28 2d2d2c1a Vincent QUEMENER
        """
29 0c8b0e15 Francois POIROTTE
        Tableau des événements (page d'accueil).
30 2d2d2c1a Vincent QUEMENER
        """
31 0c8b0e15 Francois POIROTTE
        # L'utilisateur n'est pas authentifié.
32
        response = self.app.get('/', status=401)
33 a2fa6a5b Francois POIROTTE
        response = self.app.get('/index.csv', status=401)
34 2d2d2c1a Vincent QUEMENER
35 0c8b0e15 Francois POIROTTE
        # L'utilisateur est authentifié avec des permissions réduites.
36 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'limited_access'}
37 2d2d2c1a Vincent QUEMENER
        response = self.app.get('/', extra_environ=environ)
38
39
        # Il doit y avoir 2 lignes de résultats.
40 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
41 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
42 2d2d2c1a Vincent QUEMENER
        assert_equal(len(rows), 2)
43
44
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
45 7bde24ad Francois POIROTTE
        cols = self.get_cells(response)
46 0dff1e21 Francois POIROTTE
        print("There are %d columns in the result set" % len(cols))
47 2d2d2c1a Vincent QUEMENER
        assert_true(len(cols) > 1)
48
49 a2fa6a5b Francois POIROTTE
        # 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 0c8b0e15 Francois POIROTTE
        # L'utilisateur est authentifié avec des permissions plus étendues.
58 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'access'}
59 2d2d2c1a Vincent QUEMENER
        response = self.app.get('/', extra_environ=environ)
60
61 1e30ffbb Vincent QUEMENER
        # Il doit y avoir 5 lignes de résultats.
62 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
63 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
64 1e30ffbb Vincent QUEMENER
        assert_equal(len(rows), 5)
65
66
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
67 7bde24ad Francois POIROTTE
        cols = self.get_cells(response)
68 0dff1e21 Francois POIROTTE
        print("There are %d columns in the result set" % len(cols))
69 1e30ffbb Vincent QUEMENER
        assert_true(len(cols) > 1)
70
71 a2fa6a5b Francois POIROTTE
        # 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 1e30ffbb Vincent QUEMENER
        # 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 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
85 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
86 1e30ffbb Vincent QUEMENER
        assert_equal(len(rows), 5)
87 2d2d2c1a Vincent QUEMENER
88
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
89 7bde24ad Francois POIROTTE
        cols = self.get_cells(response)
90 0dff1e21 Francois POIROTTE
        print("There are %d columns in the result set" % len(cols))
91 2d2d2c1a Vincent QUEMENER
        assert_true(len(cols) > 1)
92
93 a2fa6a5b Francois POIROTTE
        # 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 0c8b0e15 Francois POIROTTE
    def test_correvents_table_for_LLS(self):
101
        """
102
        Tableau des événements corrélés pour un service de bas niveau.
103
        """
104 02c4a1e7 Francois POIROTTE
        url = '/item/1/group2_host/group2_service'
105 0c8b0e15 Francois POIROTTE
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 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'limited_access'}
113 0c8b0e15 Francois POIROTTE
        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 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'access'}
122 0c8b0e15 Francois POIROTTE
        response = self.app.get(url, extra_environ=environ, status=200)
123
124
        # Il doit y avoir 1 ligne de résultats.
125 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
126 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
127 0c8b0e15 Francois POIROTTE
        assert_equal(len(rows), 1)
128
129 1e30ffbb Vincent QUEMENER
        # 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 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
137 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
138 1e30ffbb Vincent QUEMENER
        assert_equal(len(rows), 1)
139
140 0c8b0e15 Francois POIROTTE
    def test_correvents_table_for_host(self):
141
        """
142
        Tableau des événements corrélés pour un hôte.
143
        """
144 02c4a1e7 Francois POIROTTE
        url = '/item/1/group2_host/'
145 0c8b0e15 Francois POIROTTE
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 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'limited_access'}
153 0c8b0e15 Francois POIROTTE
        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 60d02e7f Francois POIROTTE
        environ = {'REMOTE_USER': 'access'}
162 0c8b0e15 Francois POIROTTE
        response = self.app.get(url, extra_environ=environ, status=200)
163
164
        # Il doit y avoir 1 ligne de résultats.
165 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
166 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
167 0c8b0e15 Francois POIROTTE
        assert_equal(len(rows), 1)
168 1e30ffbb Vincent QUEMENER
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 7bde24ad Francois POIROTTE
        rows = self.get_rows(response)
177 0dff1e21 Francois POIROTTE
        print("There are %d rows in the result set" % len(rows))
178 1e30ffbb Vincent QUEMENER
        assert_equal(len(rows), 1)