Revision 6f6efdcd
Fusion du travail fait dans la branche 'nested_sets' vers le trunk.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6116 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/tests/functional/test_history_table.py | ||
---|---|---|
12 | 12 |
from vigilo.models.session import DBSession |
13 | 13 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
14 | 14 |
Permission, StateName, Host, \ |
15 |
SupItemGroup, LowLevelService, \ |
|
16 | 15 |
Permission, DataPermission, User, \ |
17 |
UserGroup |
|
16 |
LowLevelService, UserGroup |
|
17 |
from vigilo.models.demo.functions import * |
|
18 | 18 |
from vigiboard.tests import TestController |
19 | 19 |
|
20 | 20 |
def populate_DB(): |
21 | 21 |
""" Peuple la base de données. """ |
22 | 22 |
# On ajoute un groupe d'hôtes et un groupe de services. |
23 |
supitemmanagers = SupItemGroup(name=u'managersgroup') |
|
24 |
DBSession.add(supitemmanagers) |
|
25 |
DBSession.flush() |
|
23 |
supitemmanagers = add_supitemgroup('managersgroup') |
|
26 | 24 |
|
27 | 25 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
28 | 26 |
DBSession.add(DataPermission( |
... | ... | |
34 | 32 |
|
35 | 33 |
# On crée un hôte de test, et on l'ajoute au groupe d'hôtes. |
36 | 34 |
managerhost = Host( |
37 |
name = u'managerhost',
|
|
35 |
name = u'managerhost', |
|
38 | 36 |
checkhostcmd = u'halt', |
39 | 37 |
snmpcommunity = u'public', |
40 | 38 |
hosttpl = u'/dev/null', |
... | ... | |
56 | 54 |
DBSession.add(managerservice) |
57 | 55 |
supitemmanagers.supitems.append(managerservice) |
58 | 56 |
DBSession.flush() |
59 |
|
|
57 |
|
|
60 | 58 |
return (managerhost, managerservice) |
61 | 59 |
|
62 | 60 |
def add_correvent_caused_by(supitem): |
63 | 61 |
""" |
64 |
Ajoute dans la base de données un évènement corrélé causé
|
|
62 |
Ajoute dans la base de données un évènement corrélé causé |
|
65 | 63 |
par un incident survenu sur l'item passé en paramètre. |
66 | 64 |
Génère un historique pour les tests. |
67 | 65 |
""" |
68 | 66 |
|
69 | 67 |
# Ajout d'un événement |
70 | 68 |
event = Event( |
71 |
supitem = supitem,
|
|
69 |
supitem = supitem, |
|
72 | 70 |
message = u'foo', |
73 | 71 |
current_state = StateName.statename_to_value(u"WARNING"), |
74 | 72 |
timestamp = datetime.now(), |
... | ... | |
79 | 77 |
# Ajout des historiques |
80 | 78 |
DBSession.add(EventHistory( |
81 | 79 |
type_action=u'Nagios update state', |
82 |
idevent=event.idevent,
|
|
80 |
idevent=event.idevent, |
|
83 | 81 |
timestamp=datetime.now())) |
84 | 82 |
DBSession.add(EventHistory( |
85 | 83 |
type_action=u'Acknowlegement change state', |
86 |
idevent=event.idevent,
|
|
84 |
idevent=event.idevent, |
|
87 | 85 |
timestamp=datetime.now())) |
88 | 86 |
DBSession.flush() |
89 | 87 |
|
90 | 88 |
# Ajout d'un événement corrélé |
91 | 89 |
aggregate = CorrEvent( |
92 |
idcause = event.idevent,
|
|
90 |
idcause = event.idevent, |
|
93 | 91 |
timestamp_active = datetime.now(), |
94 | 92 |
priority = 1, |
95 | 93 |
status = u"None") |
96 | 94 |
aggregate.events.append(event) |
97 | 95 |
DBSession.add(aggregate) |
98 | 96 |
DBSession.flush() |
99 |
|
|
97 |
|
|
100 | 98 |
return event.idevent |
101 |
|
|
99 |
|
|
102 | 100 |
|
103 | 101 |
class TestHistoryTable(TestController): |
104 | 102 |
""" |
... | ... | |
144 | 142 |
# On peuple la BDD avec un hôte, un service de bas niveau, |
145 | 143 |
# et un groupe d'hôtes et de services associés à ces items. |
146 | 144 |
(managerhost, managerservice) = populate_DB() |
147 |
|
|
145 |
|
|
148 | 146 |
# On ajoute un évènement corrélé causé par l'hôte |
149 | 147 |
idevent = add_correvent_caused_by(managerhost) |
150 | 148 |
transaction.commit() |
... | ... | |
158 | 156 |
|
159 | 157 |
# L'utilisateur N'A PAS les bonnes permissions. |
160 | 158 |
environ = {'REMOTE_USER': 'limited_access'} |
161 |
|
|
159 |
|
|
162 | 160 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
163 | 161 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
164 | 162 |
# n'a pas accès aux informations concernant cet évènement. |
165 | 163 |
response = self.app.get( |
166 | 164 |
'/event/%d' % idevent, |
167 |
status = 302,
|
|
165 |
status = 302, |
|
168 | 166 |
extra_environ = environ) |
169 | 167 |
|
170 | 168 |
# On suit la redirection. |
... | ... | |
174 | 172 |
|
175 | 173 |
# L'utilisateur a les bonnes permissions. |
176 | 174 |
environ = {'REMOTE_USER': 'access'} |
177 |
|
|
175 |
|
|
178 | 176 |
# On s'attend à ce que le statut de la requête soit 200. |
179 | 177 |
response = self.app.get( |
180 | 178 |
'/event/%d' % idevent, |
181 |
status = 200,
|
|
179 |
status = 200, |
|
182 | 180 |
extra_environ = environ) |
183 | 181 |
|
184 | 182 |
# Il doit y avoir 2 lignes de résultats. |
... | ... | |
195 | 193 |
# On peuple la BDD avec un hôte, un service de bas niveau, |
196 | 194 |
# et un groupe d'hôtes et de services associés à ces items. |
197 | 195 |
(managerhost, managerservice) = populate_DB() |
198 |
|
|
196 |
|
|
199 | 197 |
# On ajoute un évènement corrélé causé par le service |
200 | 198 |
idevent = add_correvent_caused_by(managerservice) |
201 |
|
|
199 |
|
|
202 | 200 |
transaction.commit() |
203 | 201 |
|
204 | 202 |
# L'utilisateur n'est pas authentifié. |
... | ... | |
210 | 208 |
|
211 | 209 |
# L'utilisateur N'A PAS les bonnes permissions. |
212 | 210 |
environ = {'REMOTE_USER': 'limited_access'} |
213 |
|
|
211 |
|
|
214 | 212 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
215 | 213 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
216 | 214 |
# n'a pas accès aux informations concernant cet évènement. |
217 | 215 |
response = self.app.get( |
218 | 216 |
'/event/%d' % idevent, |
219 |
status = 302,
|
|
217 |
status = 302, |
|
220 | 218 |
extra_environ = environ) |
221 | 219 |
|
222 | 220 |
# On suit la redirection. |
... | ... | |
226 | 224 |
|
227 | 225 |
# L'utilisateur a les bonnes permissions. |
228 | 226 |
environ = {'REMOTE_USER': 'access'} |
229 |
|
|
227 |
|
|
230 | 228 |
# On s'attend à ce que le statut de la requête soit 200. |
231 | 229 |
response = self.app.get( |
232 | 230 |
'/event/%d' % idevent, |
233 |
status = 200,
|
|
231 |
status = 200, |
|
234 | 232 |
extra_environ = environ) |
235 | 233 |
|
236 | 234 |
# Il doit y avoir 2 lignes de résultats. |
... | ... | |
240 | 238 |
rows = response.lxml.xpath( |
241 | 239 |
'//table[contains(@class,"vigitable")]/tbody/tr') |
242 | 240 |
assert_equal(len(rows), 2) |
243 |
|
Also available in: Unified diff