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 |
|