vigiboard / vigiboard / tests / functional / test_vigiboardrequest.py @ d3c47597
History | View | Annotate | Download (6.36 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, Events, EventHistory, Groups, \ |
9 |
Permission, GroupPermissions, Host, Service, HostGroups, ServiceGroups |
10 |
from vigiboard.tests import TestController |
11 |
from vigiboard.controllers.vigiboardrequest import VigiboardRequest |
12 |
from vigiboard.controllers.vigiboard_plugin.tests import MonPlugin |
13 |
from vigiboard.tests import teardown_db |
14 |
import tg |
15 |
import transaction |
16 |
from nose.plugins.skip import SkipTest |
17 |
|
18 |
class TestVigiboardRequest(TestController): |
19 |
"""Test de la classe Vigiboard Request"""
|
20 |
|
21 |
# def tearDown(self):
|
22 |
# """TearDown method for Nose"""
|
23 |
|
24 |
# DBSession.rollback()
|
25 |
# transaction.begin()
|
26 |
# teardown_db()
|
27 |
|
28 |
def test_creation_requete(self): |
29 |
"""
|
30 |
Génération d'une requête avec application d'un plugin et
|
31 |
des permissions
|
32 |
"""
|
33 |
|
34 |
# XXX This test has some issues, skip it until it gets fixed.
|
35 |
raise SkipTest
|
36 |
|
37 |
# On commence par peupler la base de donnée actuellement vide
|
38 |
|
39 |
# les groups et leurs dépendances
|
40 |
DBSession.add(Groups(name="hostmanagers"))
|
41 |
DBSession.add(Groups(name="hosteditors", parent = "hostmanagers")) |
42 |
idmanagers = DBSession.query(Permission).filter( |
43 |
Permission.permission_name == 'manage')[0].idpermission |
44 |
ideditors = DBSession.query(Permission |
45 |
).filter(Permission.permission_name == 'edit')[0].idpermission |
46 |
DBSession.add(GroupPermissions(groupname = "hostmanagers",
|
47 |
idpermission = idmanagers)) |
48 |
DBSession.add(GroupPermissions(groupname = "hosteditors",
|
49 |
idpermission = ideditors)) |
50 |
|
51 |
# Les évènements et leurs dépendances
|
52 |
DBSession.add(Host(name = "monhost"))
|
53 |
DBSession.add(Service(name = "monservice"))
|
54 |
DBSession.add(Host(name = "monhostuser"))
|
55 |
DBSession.add(Service(name = "monserviceuser"))
|
56 |
DBSession.flush() |
57 |
event1 = Events(hostname = "monhost", servicename = "monservice") |
58 |
event2 = Events(hostname = "monhostuser", servicename = "monservice") |
59 |
event3 = Events(hostname = "monhost", servicename = "monserviceuser") |
60 |
event4 = Events(hostname = "monhostuser",
|
61 |
servicename = "monserviceuser")
|
62 |
|
63 |
# Les historiques
|
64 |
DBSession.add(event1) |
65 |
DBSession.add(event2) |
66 |
DBSession.add(event3) |
67 |
DBSession.add(event4) |
68 |
DBSession.flush() |
69 |
DBSession.add(EventHistory(type_action = 'Nagios update state',
|
70 |
idevent = event1.idevent)) |
71 |
DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
|
72 |
idevent = event1.idevent)) |
73 |
DBSession.add(EventHistory(type_action = 'Nagios update state',
|
74 |
idevent = event2.idevent)) |
75 |
DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
|
76 |
idevent = event2.idevent)) |
77 |
DBSession.add(EventHistory(type_action = 'Nagios update state',
|
78 |
idevent = event3.idevent)) |
79 |
DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
|
80 |
idevent = event3.idevent)) |
81 |
DBSession.add(EventHistory(type_action = 'Nagios update state',
|
82 |
idevent = event4.idevent)) |
83 |
DBSession.add(EventHistory(type_action = 'Acknowlegement change state',
|
84 |
idevent = event4.idevent)) |
85 |
|
86 |
# Table de jointure entre les hôtes et services et les groups
|
87 |
DBSession.add(HostGroups(hostname = "monhost",
|
88 |
groupname = "hostmanagers"))
|
89 |
DBSession.add(HostGroups(hostname = "monhostuser",
|
90 |
groupname = "hosteditors"))
|
91 |
DBSession.add(ServiceGroups(servicename = "monservice",
|
92 |
groupname = "hostmanagers"))
|
93 |
DBSession.add(ServiceGroups(servicename = "monserviceuser",
|
94 |
groupname = "hosteditors"))
|
95 |
DBSession.flush() |
96 |
# On commit tout car app.get fait un rollback ou équivalent
|
97 |
transaction.commit() |
98 |
# On indique qui on est et on requête l'index pour obtenir
|
99 |
# toutes les variables de sessions
|
100 |
environ = {'REMOTE_USER': u'editor'} |
101 |
response = self.app.get('/', extra_environ=environ) |
102 |
tg.request = response.request |
103 |
|
104 |
vigi_req = VigiboardRequest() |
105 |
tg.config['vigiboard_plugins'] = [['tests','MonPlugin']] |
106 |
# Derrière, VigiboardRequest doit charger le plugin de test tout seul
|
107 |
|
108 |
# On effectue les tests suivants :
|
109 |
# le nombre de lignes (historique et évènements) doivent
|
110 |
# correspondre (vérification des droits imposés par les groupes)
|
111 |
# le plugin fonctionne correctement
|
112 |
|
113 |
num_rows = vigi_req.num_rows() |
114 |
assert_true(num_rows == 2, msg = "2 historiques devrait " +\ |
115 |
"être disponible pour l'utilisateur 'editor' mais il " +\
|
116 |
"y en a %d" % num_rows)
|
117 |
vigi_req.format_events(0, 10) |
118 |
vigi_req.format_history() |
119 |
assert_true(len(vigi_req.events) == 1 + 1, |
120 |
msg = "1 évènement devrait être disponible pour " +\
|
121 |
"l'utilisateur 'editor' mais il y en a %d" % \
|
122 |
len(vigi_req.events))
|
123 |
assert_true(vigi_req.events[1][6][0][0] != 'Error', |
124 |
msg = "Problème d'exécution des plugins ou de " +\
|
125 |
"formatage des évènements")
|
126 |
|
127 |
# On recommence les tests précédents avec l'utilisateur
|
128 |
# manager (plus de droits)
|
129 |
|
130 |
environ = {'REMOTE_USER': 'manager'} |
131 |
response = self.app.get('/', extra_environ=environ) |
132 |
tg.request = response.request |
133 |
|
134 |
vigi_req = VigiboardRequest() |
135 |
|
136 |
vigi_req.add_plugin(MonPlugin) |
137 |
|
138 |
num_rows = vigi_req.num_rows() |
139 |
assert_true(num_rows == 8,
|
140 |
msg = "8 historiques devrait être disponible pour " +\
|
141 |
"l'utilisateur 'manager' mais il y en a %d" % num_rows)
|
142 |
vigi_req.format_events(0, 10) |
143 |
vigi_req.format_history() |
144 |
assert_true(len(vigi_req.events) == 4 + 1, |
145 |
msg = "4 évènement devrait être disponible pour " +\
|
146 |
"l'utilisateur 'editor' mais il y en a %d" % \
|
147 |
len(vigi_req.events))
|
148 |
assert_true(vigi_req.events[1][6][0][0] != 'Error', |
149 |
msg = "Problème d'exécution des plugins")
|
150 |
|