vigiboard / vigiboard / tests / functional / test_correvents_table.py @ c25a3200
History | View | Annotate | Download (6.91 KB)
1 | 2d2d2c1a | Vincent QUEMENER | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | # vim:set expandtab tabstop=4 shiftwidth=4:
|
||
3 | c25a3200 | 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) |