vigiboard / vigiboard / tests / functional / test_search_form_host.py @ c94dc931
History | View | Annotate | Download (5.24 KB)
1 | 64ed9170 | Vincent QUEMENER | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | c94dc931 | Francois POIROTTE | # Copyright (C) 2006-2020 CS-SI
|
3 | b373a5de | Aurelien BOMPARD | # License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
|
4 | |||
5 | 64ed9170 | Vincent QUEMENER | """
|
6 | Teste le formulaire de recherche avec un nom d'hôte.
|
||
7 | """
|
||
8 | 0dff1e21 | Francois POIROTTE | from __future__ import print_function |
9 | 64ed9170 | Vincent QUEMENER | from nose.tools import assert_true, assert_equal |
10 | from datetime import datetime |
||
11 | import transaction |
||
12 | |||
13 | from vigiboard.tests import TestController |
||
14 | e7e3d45e | Francois POIROTTE | from vigilo.models.session import DBSession |
15 | 0bd9c069 | Francois POIROTTE | from vigilo.models.tables import SupItemGroup, Host, Permission, \ |
16 | 60d02e7f | Francois POIROTTE | Event, CorrEvent, StateName, \ |
17 | User, UserGroup, DataPermission |
||
18 | 64ed9170 | Vincent QUEMENER | |
19 | def insert_deps(): |
||
20 | """Insère les dépendances nécessaires aux tests."""
|
||
21 | 1c5486c7 | Francois POIROTTE | timestamp = datetime.utcnow() |
22 | 64ed9170 | Vincent QUEMENER | |
23 | 03059edd | Francois POIROTTE | hostgroup = SupItemGroup(name=u'foo', parent=None) |
24 | 0bd9c069 | Francois POIROTTE | DBSession.add(hostgroup) |
25 | DBSession.flush() |
||
26 | 64ed9170 | Vincent QUEMENER | |
27 | host = Host( |
||
28 | name=u'bar',
|
||
29 | description=u'',
|
||
30 | hosttpl=u'',
|
||
31 | 0dcb87f7 | Francois POIROTTE | address=u'127.0.0.1',
|
32 | 64ed9170 | Vincent QUEMENER | snmpport=42,
|
33 | snmpcommunity=u'public',
|
||
34 | snmpversion=u'3',
|
||
35 | ) |
||
36 | DBSession.add(host) |
||
37 | DBSession.flush() |
||
38 | |||
39 | 24d74687 | Francois POIROTTE | hostgroup.supitems.append(host) |
40 | 64ed9170 | Vincent QUEMENER | DBSession.flush() |
41 | |||
42 | event = Event( |
||
43 | supitem=host, |
||
44 | timestamp=timestamp, |
||
45 | current_state=StateName.statename_to_value(u'WARNING'),
|
||
46 | message=u'Hello world',
|
||
47 | ) |
||
48 | DBSession.add(event) |
||
49 | DBSession.flush() |
||
50 | |||
51 | correvent = CorrEvent( |
||
52 | priority=42,
|
||
53 | trouble_ticket=None,
|
||
54 | 8ba2de75 | Francois POIROTTE | ack=CorrEvent.ACK_NONE, |
55 | 64ed9170 | Vincent QUEMENER | occurrence=42,
|
56 | timestamp_active=timestamp, |
||
57 | cause=event, |
||
58 | ) |
||
59 | correvent.events.append(event) |
||
60 | DBSession.add(correvent) |
||
61 | DBSession.flush() |
||
62 | return hostgroup
|
||
63 | |||
64 | class TestSearchFormHost(TestController): |
||
65 | """Teste la récupération d'événements selon le nom d'hôte."""
|
||
66 | 60d02e7f | Francois POIROTTE | def setUp(self): |
67 | super(TestSearchFormHost, self).setUp() |
||
68 | perm = Permission.by_permission_name(u'vigiboard-access')
|
||
69 | user = User( |
||
70 | user_name=u'user',
|
||
71 | fullname=u'',
|
||
72 | email=u'some.random@us.er',
|
||
73 | ) |
||
74 | 03059edd | Francois POIROTTE | usergroup = UserGroup(group_name=u'users')
|
75 | 60d02e7f | Francois POIROTTE | user.usergroups.append(usergroup) |
76 | usergroup.permissions.append(perm) |
||
77 | DBSession.add(user) |
||
78 | DBSession.add(usergroup) |
||
79 | DBSession.flush() |
||
80 | 64ed9170 | Vincent QUEMENER | |
81 | def test_search_host_when_allowed(self): |
||
82 | """Teste la recherche par hôte avec les bons droits."""
|
||
83 | # On crée un hôte avec une alerte.
|
||
84 | # L'hôte est rattaché à un groupe d'hôtes
|
||
85 | # pour lesquel l'utilisateur a les permissions.
|
||
86 | hostgroup = insert_deps() |
||
87 | 60d02e7f | Francois POIROTTE | usergroup = UserGroup.by_group_name(u'users')
|
88 | DBSession.add(DataPermission( |
||
89 | group=hostgroup, |
||
90 | usergroup=usergroup, |
||
91 | access=u'r',
|
||
92 | )) |
||
93 | 64ed9170 | Vincent QUEMENER | DBSession.flush() |
94 | transaction.commit() |
||
95 | |||
96 | # On envoie une requête avec recherche sur l'hôte créé,
|
||
97 | # on s'attend à recevoir 1 résultat.
|
||
98 | response = self.app.get('/?host=bar', |
||
99 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
100 | 64ed9170 | Vincent QUEMENER | |
101 | # Il doit y avoir 1 seule ligne de résultats.
|
||
102 | 7bde24ad | Francois POIROTTE | rows = self.get_rows(response)
|
103 | 0dff1e21 | Francois POIROTTE | print("There are %d rows in the result set" % len(rows)) |
104 | 64ed9170 | Vincent QUEMENER | assert_equal(len(rows), 1) |
105 | |||
106 | # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
|
||
107 | 7bde24ad | Francois POIROTTE | cols = self.get_cells(response)
|
108 | 0dff1e21 | Francois POIROTTE | print("There are %d columns in the result set" % len(cols)) |
109 | 64ed9170 | Vincent QUEMENER | assert_true(len(cols) > 1) |
110 | |||
111 | def test_search_inexistent_host(self): |
||
112 | """Teste la recherche par hôte sur un hôte inexistant."""
|
||
113 | # On envoie une requête avec recherche sur un hôte
|
||
114 | # qui n'existe pas, on s'attend à n'obtenir aucun résultat.
|
||
115 | 60d02e7f | Francois POIROTTE | transaction.commit() |
116 | 64ed9170 | Vincent QUEMENER | response = self.app.get('/?host=bad', |
117 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
118 | 64ed9170 | Vincent QUEMENER | |
119 | # Il doit y avoir 1 seule ligne de résultats.
|
||
120 | 7bde24ad | Francois POIROTTE | rows = self.get_rows(response)
|
121 | 0dff1e21 | Francois POIROTTE | print("There are %d rows in the result set" % len(rows)) |
122 | 64ed9170 | Vincent QUEMENER | assert_equal(len(rows), 1) |
123 | |||
124 | # Il doit y avoir 1 seule colonne dans la ligne de résultats.
|
||
125 | # (la colonne contient le texte "Il n'y a aucun événément", traduit)
|
||
126 | 7bde24ad | Francois POIROTTE | cols = self.get_cells(response)
|
127 | 0dff1e21 | Francois POIROTTE | print("There are %d columns in the result set" % len(cols)) |
128 | 64ed9170 | Vincent QUEMENER | assert_equal(len(cols), 1) |
129 | |||
130 | def test_search_host_when_disallowed(self): |
||
131 | """Teste la recherche par hôte SANS les droits."""
|
||
132 | # On NE DONNE PAS l'autorisation aux utilisateurs
|
||
133 | # de voir l'alerte, donc elle ne doit jamais apparaître.
|
||
134 | insert_deps() |
||
135 | transaction.commit() |
||
136 | |||
137 | # On envoie une requête avec recherche sur l'hôte créé,
|
||
138 | # mais avec un utilisateur ne disposant pas des permissions adéquates.
|
||
139 | # On s'attend à n'obtenir aucun résultat.
|
||
140 | response = self.app.get('/?host=bar', |
||
141 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
142 | 64ed9170 | Vincent QUEMENER | |
143 | # Il doit y avoir 1 seule ligne de résultats.
|
||
144 | 7bde24ad | Francois POIROTTE | rows = self.get_rows(response)
|
145 | 0dff1e21 | Francois POIROTTE | print("There are %d rows in the result set" % len(rows)) |
146 | 64ed9170 | Vincent QUEMENER | assert_equal(len(rows), 1) |
147 | |||
148 | # Il doit y avoir 1 seule colonne dans la ligne de résultats.
|
||
149 | # (la colonne contient le texte "Il n'y a aucun événément", traduit)
|
||
150 | 7bde24ad | Francois POIROTTE | cols = self.get_cells(response)
|
151 | 0dff1e21 | Francois POIROTTE | print("There are %d columns in the result set" % len(cols)) |
152 | 64ed9170 | Vincent QUEMENER | assert_equal(len(cols), 1) |