Project

General

Profile

Revision 3da1d030

ID3da1d030a5e54cecb855d362656baba0e3863be7
Parent d43086aa
Child ebac18b8

Added by Vincent QUEMENER over 14 years ago

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

View differences:

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