Revision 3da1d030
Ajout d'un test fonctionnel vérifiant que Vigiboard empêche bien l'utilisateur d'opérer une mise à jour sur un évènements corrélé alors que celui-ci a été modifié depuis le chargement de la page.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@1962 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/tests/functional/test_root.py | ||
---|---|---|
12 | 12 |
""" |
13 | 13 |
from nose.tools import assert_true, assert_false, assert_equal |
14 | 14 |
from datetime import datetime |
15 |
from time import mktime |
|
15 | 16 |
import transaction |
16 | 17 |
|
17 | 18 |
from vigilo.models.configure import DBSession |
18 |
from vigilo.models import Event, CorrEvent, \ |
|
19 |
from vigilo.models import Event, EventHistory, CorrEvent, \
|
|
19 | 20 |
Permission, StateName, \ |
20 | 21 |
Host, HostGroup, ServiceGroup, LowLevelService |
21 | 22 |
|
... | ... | |
425 | 426 |
assert_equal(correvents[0].status, u'Acknowledged') |
426 | 427 |
assert_equal(correvents[1].status, u'Acknowledged') |
427 | 428 |
|
429 |
def test_update_while_data_have_changed(self): |
|
430 |
"""Màj d'un évènement corrélé modifié entretemps""" |
|
431 |
|
|
432 |
# On peuple la BDD avec 2 hôtes, 2 services de bas niveau, |
|
433 |
# et un groupe d'hôtes et de services associés à ces items. |
|
434 |
(hosts, services) = populate_DB() |
|
435 |
|
|
436 |
# On ajoute 2 évènements corrélés causés par ces hôtes |
|
437 |
correvent1_id = add_correvent_caused_by(services[0]) |
|
438 |
correvent2_id = add_correvent_caused_by(services[1]) |
|
439 |
|
|
440 |
# Date de modification du premier évènement corrélé |
|
441 |
later_date = datetime.now() |
|
442 |
# Date du chargement de la page |
|
443 |
date = mktime(later_date.timetuple()) - 42 |
|
444 |
|
|
445 |
# On ajoute une entrée dans l'historique de l'évènement brut |
|
446 |
# causant le premier évènement corrélé, portant pour timestamp |
|
447 |
# une date postérieure à celle du chargement de la page. |
|
448 |
correvent1 = DBSession.query( |
|
449 |
CorrEvent.idcause |
|
450 |
).filter(CorrEvent.idcorrevent == correvent1_id).one() |
|
451 |
DBSession.add(EventHistory( |
|
452 |
type_action = u'Nagios update state', |
|
453 |
idevent = correvent1.idcause, |
|
454 |
timestamp = later_date)) |
|
455 |
DBSession.flush() |
|
456 |
|
|
457 |
transaction.commit() |
|
458 |
|
|
459 |
# L'utilisateur utilisé pour se connecter à Vigiboard est 'manager'. |
|
460 |
environ = {'REMOTE_USER': 'manager'} |
|
461 |
|
|
462 |
# On s'attend à ce que le statut de la requête soit 302, et |
|
463 |
# à ce qu'un message d'erreur avise l'utilisateur que des |
|
464 |
# changements sont intervenus depuis le chargement de la page. |
|
465 |
response = self.app.post( |
|
466 |
'/update', |
|
467 |
{"id" : str(correvent1_id), |
|
468 |
"ack" : u'Acknowledged', |
|
469 |
"trouble_ticket" : "", |
|
470 |
"last_modification" : date}, |
|
471 |
status = 302, |
|
472 |
extra_environ = environ) |
|
473 |
|
|
474 |
response = response.follow( |
|
475 |
status=200, |
|
476 |
extra_environ = environ) |
|
477 |
assert_true(response.lxml.xpath( |
|
478 |
'//div[@id="flash"]/div[@class="warning"]')) |
|
479 |
|
|
480 |
# On s'assure que le statut de l'évènement corrélé |
|
481 |
# n'a pas été modifié dans la base de données. |
|
482 |
status = DBSession.query( |
|
483 |
CorrEvent.status |
|
484 |
).filter(CorrEvent.idcorrevent == correvent1_id |
|
485 |
).scalar() |
|
486 |
assert_equal(status, u'None') |
|
487 |
|
Also available in: Unified diff