Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / tests / functional / test_vigiboardrequest.py @ 348eec2c

History | View | Annotate | Download (5.85 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
"""
4
Test de la classe Vigiboard Request
5
"""
6
from nose.tools import assert_true
7

    
8
from vigiboard.model import DBSession, \
9
    Event, EventHistory, Permission, \
10
    Group, Host, HostGroup, Service, ServiceGroup
11
from vigiboard.tests import TestController
12
from vigiboard.controllers.vigiboardrequest import VigiboardRequest
13
from vigiboard.controllers.vigiboard_plugin.tests import MonPlugin
14
import tg
15
from nose.plugins.skip import SkipTest
16

    
17
class TestVigiboardRequest(TestController):
18
    """Test de la classe Vigiboard Request"""
19

    
20
    def test_creation_requete(self):
21
        """
22
        Génération d'une requête avec application d'un plugin et
23
        des permissions
24
        """
25

    
26
        # XXX This test has some issues, skip it until it gets fixed.
27
        raise SkipTest
28

    
29
        # On commence par peupler la base de donnée actuellement vide
30

    
31
        # les groups et leurs dépendances
32
        hostmanagers = Group(name=u'hostmanagers')
33
        hosteditors = Group(name=u'hosteditors', parent=hostmanagers)
34
        DBSession.add(hostmanagers)
35
        DBSession.add(hosteditors)
36

    
37
        manage_perm = Permission.by_name(u'manage')
38
        edit_perm = Permission.by_name(u'edit')
39

    
40
        manage_perm.groups.append(hostmanagers)
41
        edit_perm.groups.append(hosteditors)
42
        DBSession.flush()
43

    
44
        # Les évènements et leurs dépendances
45
        DBSession.add(Host(name = "monhost"))
46
        DBSession.add(Service(name = "monservice"))
47
        DBSession.add(Host(name = "monhostuser"))
48
        DBSession.add(Service(name = "monserviceuser"))
49
        DBSession.flush()
50
        event1 = Event(hostname = "monhost", servicename = "monservice")
51
        event2 = Event(hostname = "monhostuser", servicename = "monservice")
52
        event3 = Event(hostname = "monhost", servicename = "monserviceuser")
53
        event4 = Event(hostname = "monhostuser",
54
                servicename = "monserviceuser")
55

    
56
        # Les historiques
57
        DBSession.add(event1)
58
        DBSession.add(event2)
59
        DBSession.add(event3)
60
        DBSession.add(event4)
61
        DBSession.flush()
62
        DBSession.add(EventHistory(type_action = 'Nagios update state',
63
            idevent = event1.idevent))
64
        DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
65
            idevent = event1.idevent))
66
        DBSession.add(EventHistory(type_action = 'Nagios update state',
67
            idevent = event2.idevent))
68
        DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
69
            idevent = event2.idevent))
70
        DBSession.add(EventHistory(type_action = 'Nagios update state',
71
            idevent = event3.idevent))
72
        DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
73
            idevent = event3.idevent))
74
        DBSession.add(EventHistory(type_action = 'Nagios update state',
75
            idevent = event4.idevent))
76
        DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
77
            idevent = event4.idevent))
78
        
79
        # Table de jointure entre les hôtes et services et les groups
80
        DBSession.add(HostGroup(hostname = "monhost",
81
            groupname = "hostmanagers"))
82
        DBSession.add(HostGroup(hostname = "monhostuser",
83
            groupname = "hosteditors"))
84
        DBSession.add(ServiceGroup(servicename = "monservice",
85
            groupname = "hostmanagers"))
86
        DBSession.add(ServiceGroup(servicename = "monserviceuser",
87
            groupname = "hosteditors"))
88
        DBSession.flush()
89

    
90
        # On indique qui on est et on requête l'index pour obtenir
91
        # toutes les variables de sessions
92
        environ = {'REMOTE_USER': u'editor'}
93
        response = self.app.get('/', extra_environ=environ)
94
        tg.request = response.request
95

    
96
        vigi_req = VigiboardRequest()
97
        tg.config['vigiboard_plugins'] = [['tests', 'MonPlugin']]
98
        # Derrière, VigiboardRequest doit charger le plugin de test tout seul
99
        
100
        # On effectue les tests suivants :
101
        #   le nombre de lignes (historique et évènements) doivent
102
        #       correspondre (vérification des droits imposés par les groupes)
103
        #   le plugin fonctionne correctement
104

    
105
        num_rows = vigi_req.num_rows() 
106
        assert_true(num_rows == 2, msg = "2 historiques devrait " +\
107
                "être disponible pour l'utilisateur 'editor' mais il " +\
108
                "y en a %d" % num_rows)
109
        vigi_req.format_events(0, 10)
110
        vigi_req.format_history()
111
        assert_true(len(vigi_req.events) == 1 + 1, 
112
                msg = "1 évènement devrait être disponible pour " +\
113
                        "l'utilisateur 'editor' mais il y en a %d" % \
114
                        len(vigi_req.events))
115
        assert_true(vigi_req.events[1][6][0][0] != 'Error', 
116
                msg = "Problème d'exécution des plugins ou de " +\
117
                        "formatage des évènements") 
118

    
119
        # On recommence les tests précédents avec l'utilisateur
120
        # manager (plus de droits)
121

    
122
        environ = {'REMOTE_USER': u'manager'}
123
        response = self.app.get('/', extra_environ=environ)
124
        tg.request = response.request
125
        
126
        vigi_req = VigiboardRequest()
127
        
128
        vigi_req.add_plugin(MonPlugin)
129

    
130
        num_rows = vigi_req.num_rows()
131
        assert_true(num_rows == 8, 
132
                msg = "8 historiques devrait être disponible pour " +\
133
                        "l'utilisateur 'manager' mais il y en a %d" % num_rows)
134
        vigi_req.format_events(0, 10)
135
        vigi_req.format_history()
136
        assert_true(len(vigi_req.events) == 4 + 1, 
137
                msg = "4 évènement devrait être disponible pour " +\
138
                        "l'utilisateur 'editor' mais il y en a %d" % \
139
                        len(vigi_req.events))
140
        assert_true(vigi_req.events[1][6][0][0] != 'Error', 
141
                msg = "Problème d'exécution des plugins")
142