Project

General

Profile

Revision e6984a7f

IDe6984a7f2cb9f9a1ea648e5a64d7c3718fe6b837
Parent df25ac35
Child f744bc14

Added by Francois POIROTTE about 14 years ago

Mise à jour des tests de VigiBoard pour prendre en compte le fait que la table GroupHierarchy n'est plus exposée directement.
Déplacement du test sur le plugin "details" dans le dossier des tests sur les plugins.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@2704 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

vigiboard/tests/functional/plugins/test_details_plugin.py
1
# -*- coding: utf-8 -*-
2
"""
3
Teste le formulaire donnant les liens vers les outils extérieurs
4
et les données de l'historique.
5
"""
6
from nose.tools import assert_true, assert_equal
7
from datetime import datetime
8
import transaction
9

  
10
from vigiboard.tests import TestController
11
from vigilo.models.session import DBSession
12
from vigilo.models.tables import SupItemGroup, \
13
                            Host, Permission, StateName, \
14
                            LowLevelService, Event, CorrEvent
15
from vigilo.models.tables.grouphierarchy import GroupHierarchy
16

  
17
def insert_deps(return_service):
18
    """
19
    Insère les dépendances nécessaires aux tests.
20

  
21
    @param return_service: Indique si les événements générés
22
        concernent un hôte (False) ou un service de bas niveau (True).
23
    @type return_service: C{bool}
24
    @return: Renvoie un tuple avec le groupe d'hôte créé,
25
        l'identifiant du L{CorrEvent} généré et enfin,
26
        l'identifiant de l'L{Event} généré.
27
    @rtype: C{tuple}
28
    """
29
    timestamp = datetime.now()
30

  
31
    hostgroup = SupItemGroup(name=u'foo')
32
    DBSession.add(hostgroup)
33

  
34
    DBSession.add(GroupHierarchy(
35
        parent=hostgroup,
36
        child=hostgroup,
37
        hops=0,
38
    ))
39

  
40
    host = Host(
41
        name=u'bar',
42
        checkhostcmd=u'',
43
        description=u'',
44
        hosttpl=u'',
45
        mainip=u'127.0.0.1',
46
        snmpport=42,
47
        snmpcommunity=u'public',
48
        snmpversion=u'3',
49
        weight=42,
50
    )
51
    DBSession.add(host)
52
    DBSession.flush()
53

  
54
    hostgroup.supitems.append(host)
55
    DBSession.flush()
56

  
57
    servicegroup = SupItemGroup(name=u'bar')
58
    DBSession.add(servicegroup)
59

  
60
    DBSession.add(GroupHierarchy(
61
        parent=servicegroup,
62
        child=servicegroup,
63
        hops=0,
64
    ))
65

  
66
    service = LowLevelService(
67
        host=host,
68
        command=u'',
69
        weight=42,
70
        servicename=u'baz',
71
        op_dep=u'&',
72
    )
73
    DBSession.add(service)
74
    DBSession.flush()
75

  
76
    servicegroup.supitems.append(service)
77
    DBSession.flush()
78

  
79
    event = Event(
80
        timestamp=timestamp,
81
        current_state=StateName.statename_to_value(u'WARNING'),
82
        message=u'Hello world',
83
    )
84
    if return_service:
85
        event.supitem = service
86
    else:
87
        event.supitem = host
88
    DBSession.add(event)
89
    DBSession.flush()
90

  
91
    correvent = CorrEvent(
92
        impact=42,
93
        priority=42,
94
        trouble_ticket=None,
95
        status=u'None',
96
        occurrence=42,
97
        timestamp_active=timestamp,
98
        cause=event,
99
    )
100
    correvent.events.append(event)
101
    DBSession.add(correvent)
102
    DBSession.flush()
103

  
104
    return (hostgroup, correvent.idcorrevent, event.idevent)
105

  
106
class TestDetailsPlugin(TestController):
107
    """Teste le dialogue pour l'accès aux historiques."""
108

  
109
    def test_details_plugin_LLS_alert_when_allowed(self):
110
        """Dialogue des détails avec un LLS et les bons droits."""
111
        hostgroup, idcorrevent, idcause = insert_deps(True)
112
        manage = Permission.by_permission_name(u'manage')
113
        manage.supitemgroups.append(hostgroup)
114
        DBSession.flush()
115
        transaction.commit()
116

  
117
        response = self.app.post('/get_plugin_value', {
118
                'idcorrevent': idcorrevent,
119
                'plugin_name': 'details',
120
            }, extra_environ={'REMOTE_USER': 'manager'})
121
        json = response.json
122

  
123
        # Le contenu de "eventdetails" varie facilement.
124
        # On le teste séparément.
125
        json.pop('eventdetails', None)
126
        assert_true('eventdetails' in response.json)
127

  
128
        assert_equal(json, {
129
            "idcorrevent": idcorrevent,
130
            "idcause": idcause,
131
            "service": "baz",
132
            "peak_state": "WARNING",
133
            "current_state": "WARNING",
134
            "host": "bar",
135
            "initial_state": "WARNING"
136
        })
137

  
138
    def test_details_plugin_host_alert_when_allowed(self):
139
        """Dialogue des détails avec un hôte et les bons droits."""
140
        hostgroup, idcorrevent, idcause = insert_deps(False)
141
        manage = Permission.by_permission_name(u'manage')
142
        manage.supitemgroups.append(hostgroup)
143
        DBSession.flush()
144
        transaction.commit()
145

  
146
        response = self.app.post('/get_plugin_value', {
147
                'idcorrevent': idcorrevent,
148
                'plugin_name': 'details',
149
            }, extra_environ={'REMOTE_USER': 'manager'})
150
        json = response.json
151

  
152
        # Le contenu de "eventdetails" varie facilement.
153
        # On le teste séparément.
154
        json.pop('eventdetails', None)
155
        assert_true('eventdetails' in response.json)
156

  
157
        assert_equal(json, {
158
            "idcorrevent": idcorrevent,
159
            "idcause": idcause,
160
            "service": None,
161
            "peak_state": "WARNING",
162
            "current_state": "WARNING",
163
            "host": "bar",
164
            "initial_state": "WARNING"
165
        })
166

  
167

  
168
    def test_details_plugin_LLS_when_forbidden(self):
169
        """Dialogue des détails avec un LLS et des droits insuffisants."""
170
        idcorrevent = insert_deps(True)[1]
171
        DBSession.flush()
172
        transaction.commit()
173

  
174
        # Le contrôleur renvoie une erreur 404 (HTTPNotFound)
175
        # lorsque l'utilisateur n'a pas les permissions nécessaires sur
176
        # les données ou qu'aucun événement correspondant n'est trouvé.
177
        self.app.post('/get_plugin_value', {
178
                'idcorrevent': idcorrevent,
179
                'plugin_name': 'details',
180
            }, extra_environ={'REMOTE_USER': 'manager'},
181
            status=404)
182

  
183
    def test_details_plugin_host_when_forbidden(self):
184
        """Dialogue des détails avec un hôte et des droits insuffisants."""
185
        idcorrevent = insert_deps(False)[1]
186
        DBSession.flush()
187
        transaction.commit()
188

  
189
        # Le contrôleur renvoie une erreur 404 (HTTPNotFound)
190
        # lorsque l'utilisateur n'a pas les permissions nécessaires sur
191
        # les données ou qu'aucun événement correspondant n'est trouvé.
192
        self.app.post('/get_plugin_value', {
193
                'idcorrevent': idcorrevent,
194
                'plugin_name': 'details',
195
            }, extra_environ={'REMOTE_USER': 'manager'},
196
            status=404)
197

  
198
    def test_details_plugin_LLS_anonymous(self):
199
        """Dialogue des détails avec un LLS et en anonyme."""
200
        idcorrevent = insert_deps(True)[1]
201
        DBSession.flush()
202
        transaction.commit()
203

  
204
        # Le contrôleur renvoie une erreur 401 (HTTPUnauthorized)
205
        # lorsque l'utilisateur n'est pas authentifié.
206
        self.app.post('/get_plugin_value', {
207
                'idcorrevent': idcorrevent,
208
                'plugin_name': 'details',
209
            }, status=401)
210

  
211
    def test_details_plugin_host_anonymous(self):
212
        """Dialogue des détails avec un hôte et en anonyme."""
213
        idcorrevent = insert_deps(False)[1]
214
        DBSession.flush()
215
        transaction.commit()
216

  
217
        # Le contrôleur renvoie une erreur 401 (HTTPUnauthorized)
218
        # lorsque l'utilisateur n'est pas authentifié.
219
        self.app.post('/get_plugin_value', {
220
                'idcorrevent': idcorrevent,
221
                'plugin_name': 'details',
222
            }, status=401)
223

  
vigiboard/tests/functional/plugins/test_plugin_hls.py
6 6
from nose.tools import assert_equal
7 7

  
8 8
from vigilo.models.session import DBSession
9
from vigilo.models.tables import Permission, StateName, GroupHierarchy, \
9
from vigilo.models.tables import Permission, StateName, \
10 10
                            SupItemGroup, Host, HighLevelService, \
11 11
                            Event, CorrEvent, ImpactedPath, ImpactedHLS
12
from vigilo.models.tables.grouphierarchy import GroupHierarchy
12 13
from vigiboard.tests import TestController
13 14

  
14 15
def populate_DB():
vigiboard/tests/functional/test_correvents_table.py
9 9
import transaction
10 10

  
11 11
from vigilo.models.session import DBSession
12
from vigilo.models.tables import Event, CorrEvent, GroupHierarchy, \
12
from vigilo.models.tables import Event, CorrEvent, \
13 13
                            Permission, StateName, Host, SupItemGroup, \
14 14
                            LowLevelService
15
from vigilo.models.tables.grouphierarchy import GroupHierarchy
15 16
from vigiboard.tests import TestController
16 17

  
17 18
def populate_DB():
vigiboard/tests/functional/test_details_plugin.py
1
# -*- coding: utf-8 -*-
2
"""
3
Teste le formulaire donnant les liens vers les outils extérieurs
4
et les données de l'historique.
5
"""
6
from nose.tools import assert_true, assert_equal
7
from datetime import datetime
8
import transaction
9

  
10
from vigiboard.tests import TestController
11
from vigilo.models.session import DBSession
12
from vigilo.models.tables import SupItemGroup, GroupHierarchy, \
13
                            Host, Permission, StateName, \
14
                            LowLevelService, Event, CorrEvent
15

  
16
def insert_deps(return_service):
17
    """
18
    Insère les dépendances nécessaires aux tests.
19

  
20
    @param return_service: Indique si les événements générés
21
        concernent un hôte (False) ou un service de bas niveau (True).
22
    @type return_service: C{bool}
23
    @return: Renvoie un tuple avec le groupe d'hôte créé,
24
        l'identifiant du L{CorrEvent} généré et enfin,
25
        l'identifiant de l'L{Event} généré.
26
    @rtype: C{tuple}
27
    """
28
    timestamp = datetime.now()
29

  
30
    hostgroup = SupItemGroup(name=u'foo')
31
    DBSession.add(hostgroup)
32

  
33
    DBSession.add(GroupHierarchy(
34
        parent=hostgroup,
35
        child=hostgroup,
36
        hops=0,
37
    ))
38

  
39
    host = Host(
40
        name=u'bar',
41
        checkhostcmd=u'',
42
        description=u'',
43
        hosttpl=u'',
44
        mainip=u'127.0.0.1',
45
        snmpport=42,
46
        snmpcommunity=u'public',
47
        snmpversion=u'3',
48
        weight=42,
49
    )
50
    DBSession.add(host)
51
    DBSession.flush()
52

  
53
    hostgroup.supitems.append(host)
54
    DBSession.flush()
55

  
56
    servicegroup = SupItemGroup(name=u'bar')
57
    DBSession.add(servicegroup)
58

  
59
    DBSession.add(GroupHierarchy(
60
        parent=servicegroup,
61
        child=servicegroup,
62
        hops=0,
63
    ))
64

  
65
    service = LowLevelService(
66
        host=host,
67
        command=u'',
68
        weight=42,
69
        servicename=u'baz',
70
        op_dep=u'&',
71
    )
72
    DBSession.add(service)
73
    DBSession.flush()
74

  
75
    servicegroup.supitems.append(service)
76
    DBSession.flush()
77

  
78
    event = Event(
79
        timestamp=timestamp,
80
        current_state=StateName.statename_to_value(u'WARNING'),
81
        message=u'Hello world',
82
    )
83
    if return_service:
84
        event.supitem = service
85
    else:
86
        event.supitem = host
87
    DBSession.add(event)
88
    DBSession.flush()
89

  
90
    correvent = CorrEvent(
91
        impact=42,
92
        priority=42,
93
        trouble_ticket=None,
94
        status=u'None',
95
        occurrence=42,
96
        timestamp_active=timestamp,
97
        cause=event,
98
    )
99
    correvent.events.append(event)
100
    DBSession.add(correvent)
101
    DBSession.flush()
102

  
103
    return (hostgroup, correvent.idcorrevent, event.idevent)
104

  
105
class TestDetailsPlugin(TestController):
106
    """Teste le dialogue pour l'accès aux historiques."""
107

  
108
    def test_details_plugin_LLS_alert_when_allowed(self):
109
        """Dialogue des détails avec un LLS et les bons droits."""
110
        hostgroup, idcorrevent, idcause = insert_deps(True)
111
        manage = Permission.by_permission_name(u'manage')
112
        manage.supitemgroups.append(hostgroup)
113
        DBSession.flush()
114
        transaction.commit()
115

  
116
        response = self.app.post('/get_plugin_value', {
117
                'idcorrevent': idcorrevent,
118
                'plugin_name': 'details',
119
            }, extra_environ={'REMOTE_USER': 'manager'})
120
        json = response.json
121

  
122
        # Le contenu de "eventdetails" varie facilement.
123
        # On le teste séparément.
124
        json.pop('eventdetails', None)
125
        assert_true('eventdetails' in response.json)
126

  
127
        assert_equal(json, {
128
            "idcorrevent": idcorrevent,
129
            "idcause": idcause,
130
            "service": "baz",
131
            "peak_state": "WARNING",
132
            "current_state": "WARNING",
133
            "host": "bar",
134
            "initial_state": "WARNING"
135
        })
136

  
137
    def test_details_plugin_host_alert_when_allowed(self):
138
        """Dialogue des détails avec un hôte et les bons droits."""
139
        hostgroup, idcorrevent, idcause = insert_deps(False)
140
        manage = Permission.by_permission_name(u'manage')
141
        manage.supitemgroups.append(hostgroup)
142
        DBSession.flush()
143
        transaction.commit()
144

  
145
        response = self.app.post('/get_plugin_value', {
146
                'idcorrevent': idcorrevent,
147
                'plugin_name': 'details',
148
            }, extra_environ={'REMOTE_USER': 'manager'})
149
        json = response.json
150

  
151
        # Le contenu de "eventdetails" varie facilement.
152
        # On le teste séparément.
153
        json.pop('eventdetails', None)
154
        assert_true('eventdetails' in response.json)
155

  
156
        assert_equal(json, {
157
            "idcorrevent": idcorrevent,
158
            "idcause": idcause,
159
            "service": None,
160
            "peak_state": "WARNING",
161
            "current_state": "WARNING",
162
            "host": "bar",
163
            "initial_state": "WARNING"
164
        })
165

  
166

  
167
    def test_details_plugin_LLS_when_forbidden(self):
168
        """Dialogue des détails avec un LLS et des droits insuffisants."""
169
        idcorrevent = insert_deps(True)[1]
170
        DBSession.flush()
171
        transaction.commit()
172

  
173
        # Le contrôleur renvoie une erreur 404 (HTTPNotFound)
174
        # lorsque l'utilisateur n'a pas les permissions nécessaires sur
175
        # les données ou qu'aucun événement correspondant n'est trouvé.
176
        self.app.post('/get_plugin_value', {
177
                'idcorrevent': idcorrevent,
178
                'plugin_name': 'details',
179
            }, extra_environ={'REMOTE_USER': 'manager'},
180
            status=404)
181

  
182
    def test_details_plugin_host_when_forbidden(self):
183
        """Dialogue des détails avec un hôte et des droits insuffisants."""
184
        idcorrevent = insert_deps(False)[1]
185
        DBSession.flush()
186
        transaction.commit()
187

  
188
        # Le contrôleur renvoie une erreur 404 (HTTPNotFound)
189
        # lorsque l'utilisateur n'a pas les permissions nécessaires sur
190
        # les données ou qu'aucun événement correspondant n'est trouvé.
191
        self.app.post('/get_plugin_value', {
192
                'idcorrevent': idcorrevent,
193
                'plugin_name': 'details',
194
            }, extra_environ={'REMOTE_USER': 'manager'},
195
            status=404)
196

  
197
    def test_details_plugin_LLS_anonymous(self):
198
        """Dialogue des détails avec un LLS et en anonyme."""
199
        idcorrevent = insert_deps(True)[1]
200
        DBSession.flush()
201
        transaction.commit()
202

  
203
        # Le contrôleur renvoie une erreur 401 (HTTPUnauthorized)
204
        # lorsque l'utilisateur n'est pas authentifié.
205
        self.app.post('/get_plugin_value', {
206
                'idcorrevent': idcorrevent,
207
                'plugin_name': 'details',
208
            }, status=401)
209

  
210
    def test_details_plugin_host_anonymous(self):
211
        """Dialogue des détails avec un hôte et en anonyme."""
212
        idcorrevent = insert_deps(False)[1]
213
        DBSession.flush()
214
        transaction.commit()
215

  
216
        # Le contrôleur renvoie une erreur 401 (HTTPUnauthorized)
217
        # lorsque l'utilisateur n'est pas authentifié.
218
        self.app.post('/get_plugin_value', {
219
                'idcorrevent': idcorrevent,
220
                'plugin_name': 'details',
221
            }, status=401)
222

  
vigiboard/tests/functional/test_history_table.py
11 11

  
12 12
from vigilo.models.session import DBSession
13 13
from vigilo.models.tables import Event, EventHistory, CorrEvent, \
14
                            Permission, StateName, GroupHierarchy, \
15
                            Host, SupItemGroup, LowLevelService
14
                            Permission, StateName, Host, \
15
                            SupItemGroup, LowLevelService
16
from vigilo.models.tables.grouphierarchy import GroupHierarchy
16 17
from vigiboard.tests import TestController
17 18

  
18 19
def populate_DB():
vigiboard/tests/functional/test_raw_events_table.py
10 10

  
11 11
from vigilo.models.session import DBSession
12 12
from vigilo.models.tables import Event, EventHistory, CorrEvent, \
13
                            Permission, StateName, GroupHierarchy, \
14
                            Host, LowLevelService, SupItemGroup
13
                            Permission, StateName, Host, \
14
                            LowLevelService, SupItemGroup
15
from vigilo.models.tables.grouphierarchy import GroupHierarchy
15 16
from vigiboard.tests import TestController
16 17

  
17 18
def populate_DB(caused_by_service):
vigiboard/tests/functional/test_root.py
17 17

  
18 18
from vigilo.models.session import DBSession
19 19
from vigilo.models.tables import Event, EventHistory, CorrEvent, \
20
                            Permission, StateName, GroupHierarchy, \
21
                            Host, SupItemGroup, LowLevelService
22

  
20
                            Permission, StateName, Host, \
21
                            SupItemGroup, LowLevelService
22
from vigilo.models.tables.grouphierarchy import GroupHierarchy
23 23
from vigiboard.tests import TestController
24 24

  
25 25
def populate_DB():
vigiboard/tests/functional/test_search_form_host.py
9 9
from vigiboard.tests import TestController
10 10
from vigilo.models.session import DBSession
11 11
from vigilo.models.tables import SupItemGroup, Host, Permission, \
12
                                    Event, CorrEvent, StateName, \
13
                                    GroupHierarchy
12
                                    Event, CorrEvent, StateName
13
from vigilo.models.tables.grouphierarchy import GroupHierarchy
14 14

  
15 15
def insert_deps():
16 16
    """Insère les dépendances nécessaires aux tests."""
vigiboard/tests/functional/test_search_form_hostgroup.py
9 9
from vigiboard.tests import TestController
10 10
from vigilo.models.session import DBSession
11 11
from vigilo.models.tables import SupItemGroup, Host, Permission, StateName, \
12
                                    Event, CorrEvent, GroupHierarchy
12
                                    Event, CorrEvent
13
from vigilo.models.tables.grouphierarchy import GroupHierarchy
13 14

  
14 15
def insert_deps():
15 16
    """Insère les dépendances nécessaires aux tests."""
vigiboard/tests/functional/test_search_form_misc.py
10 10
from vigiboard.tests import TestController
11 11
from vigilo.models.session import DBSession
12 12
from vigilo.models.tables import SupItemGroup, Host, Permission, \
13
                                   Event, CorrEvent, StateName, GroupHierarchy
13
                                   Event, CorrEvent, StateName
14
from vigilo.models.tables.grouphierarchy import GroupHierarchy
14 15

  
15 16
def insert_deps():
16 17
    """Insère les dépendances nécessaires aux tests."""
vigiboard/tests/functional/test_search_form_service.py
8 8

  
9 9
from vigiboard.tests import TestController
10 10
from vigilo.models.session import DBSession
11
from vigilo.models.tables import SupItemGroup, GroupHierarchy, \
12
                                    Host, Permission, StateName, \
13
                                    LowLevelService, Event, CorrEvent
11
from vigilo.models.tables import SupItemGroup, Host, Permission, \
12
                                    StateName, LowLevelService, \
13
                                    Event, CorrEvent
14
from vigilo.models.tables.grouphierarchy import GroupHierarchy
14 15

  
15 16
def insert_deps():
16 17
    """Insère les dépendances nécessaires aux tests."""
vigiboard/tests/functional/test_search_form_servicegroup.py
9 9
from vigiboard.tests import TestController
10 10
from vigilo.models.session import DBSession
11 11
from vigilo.models.tables import SupItemGroup, Host, Permission, Event, \
12
                                    LowLevelService, CorrEvent, StateName, \
13
                                    GroupHierarchy
12
                                    LowLevelService, CorrEvent, StateName
13
from vigilo.models.tables.grouphierarchy import GroupHierarchy
14 14

  
15 15
def insert_deps():
16 16
    """Insère les dépendances nécessaires aux tests."""
vigiboard/tests/functional/test_userutils.py
7 7
from nose.tools import assert_true
8 8

  
9 9
from vigilo.models.session import DBSession
10
from vigilo.models.tables import SupItemGroup, Permission, User, GroupHierarchy
10
from vigilo.models.tables import SupItemGroup, Permission, User
11
from vigilo.models.tables.grouphierarchy import GroupHierarchy
11 12
from vigiboard.tests import TestController
12 13

  
13 14
class TestGroupPermissionsInheritance(TestController):

Also available in: Unified diff