Project

General

Profile

Revision 268f526d

ID268f526d79ae41aebe50481759036c0dcd0e4e97
Parent 7b885e22
Child 67eb4593

Added by Francois POIROTTE about 14 years ago

Remplacement des tests unitaires sur les hostgroup/servicegroup par un test unique (supitemgroup).
Adaptation du test au nouveau code (qui manipule des identifiants de supitemgroups plutôt qu'un libellé).

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

View differences:

vigiboard/tests/functional/test_search_form_hostgroup.py
1
# -*- coding: utf-8 -*-
2
"""
3
Teste le formulaire de recherche avec un groupe d'hôtes.
4
"""
5
from nose.tools import assert_true, assert_equal
6
from datetime import datetime
7
import transaction
8

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

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

  
20
    hostgroup = SupItemGroup(
21
        name=u'foo',
22
    )
23
    DBSession.add(hostgroup)
24
    DBSession.flush()
25

  
26
    DBSession.add(GroupHierarchy(
27
        parent=hostgroup,
28
        child=hostgroup,
29
        hops=0,
30
    ))
31
    DBSession.flush()
32

  
33
    host = Host(
34
        name=u'bar',
35
        checkhostcmd=u'',
36
        description=u'',
37
        hosttpl=u'',
38
        mainip=u'127.0.0.1',
39
        snmpport=42,
40
        snmpcommunity=u'public',
41
        snmpversion=u'3',
42
        weight=42,
43
    )
44
    DBSession.add(host)
45
    DBSession.flush()
46

  
47
    hostgroup.supitems.append(host)
48
    DBSession.flush()
49

  
50
    event = Event(
51
        supitem=host,
52
        timestamp=timestamp,
53
        current_state=StateName.statename_to_value(u'WARNING'),
54
        message=u'Hello world',
55
    )
56
    DBSession.add(event)
57
    DBSession.flush()
58

  
59
    correvent = CorrEvent(
60
        impact=42,
61
        priority=42,
62
        trouble_ticket=None,
63
        status=u'None',
64
        occurrence=42,
65
        timestamp_active=timestamp,
66
        cause=event,
67
    )
68
    correvent.events.append(event)
69
    DBSession.add(correvent)
70
    DBSession.flush()
71
    return hostgroup
72

  
73
class TestSearchFormHostGroup(TestController):
74
    """Teste la récupération d'événements selon le groupe d'hôtes."""
75
    def setUp(self):
76
        super(TestSearchFormHostGroup, self).setUp()
77
        perm = Permission.by_permission_name(u'vigiboard-access')
78
        user = User(
79
            user_name=u'user',
80
            fullname=u'',
81
            email=u'some.random@us.er',
82
        )
83
        usergroup = UserGroup(
84
            group_name=u'users',
85
        )
86
        user.usergroups.append(usergroup)
87
        usergroup.permissions.append(perm)
88
        DBSession.add(user)
89
        DBSession.add(usergroup)
90
        DBSession.flush()
91

  
92
    def test_search_hostgroup_when_allowed(self):
93
        """Teste la recherche par hostgroup avec les bons droits d'accès."""
94
        # On crée un groupe d'hôte appelé 'foo',
95
        # contenant un hôte 'bar', ainsi qu'un événement
96
        # et un événement corrélé sur cet hôte.
97
        # De plus, on donne l'autorisation aux utilisateurs
98
        # ayant la permission 'edit' de voir cette alerte.
99
        hostgroup = insert_deps()
100
        usergroup = UserGroup.by_group_name(u'users')
101
        DBSession.add(DataPermission(
102
            group=hostgroup,
103
            usergroup=usergroup,
104
            access=u'r',
105
        ))
106
        DBSession.flush()
107
        transaction.commit()
108

  
109
        # On envoie une requête avec recherche sur le groupe d'hôtes créé,
110
        # on s'attend à recevoir 1 résultat.
111
        response = self.app.get('/?supitemgroup=foo',
112
            extra_environ={'REMOTE_USER': 'user'})
113

  
114
        # Il doit y avoir 1 seule ligne de résultats.
115
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
116
        print "There are %d rows in the result set" % len(rows)
117
        assert_equal(len(rows), 1)
118

  
119
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
120
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
121
        print "There are %d columns in the result set" % len(cols)
122
        assert_true(len(cols) > 1)
123

  
124
    def test_search_inexistent_hostgroup(self):
125
        """Teste la recherche par hostgroup sur un groupe inexistant."""
126
        # On envoie une requête avec recherche sur un groupe d'hôtes
127
        # qui n'existe pas, on s'attend à n'obtenir aucun résultat.
128
        transaction.commit()
129
        response = self.app.get('/?supitemgroup=foot',
130
            extra_environ={'REMOTE_USER': 'user'})
131

  
132
        # Il doit y avoir 1 seule ligne de résultats.
133
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
134
        print "There are %d rows in the result set" % len(rows)
135
        assert_equal(len(rows), 1)
136

  
137
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
138
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
139
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
140
        print "There are %d columns in the result set" % len(cols)
141
        assert_equal(len(cols), 1)
142

  
143
    def test_search_hostgroup_when_disallowed(self):
144
        """Teste la recherche par hostgroup SANS les droits d'accès."""
145
        # On crée un groupe d'hôte appelé 'foo',
146
        # contenant un hôte 'bar', ainsi qu'un événement
147
        # et un événement corrélé sur cet hôte.
148
        # MAIS, on NE DONNE PAS l'autorisation aux utilisateurs
149
        # de voir cette alerte, donc elle ne doit jamais apparaître.
150
        insert_deps()
151
        transaction.commit()
152

  
153
        # On envoie une requête avec recherche sur le groupe d'hôtes créé,
154
        # mais avec un utilisateur ne disposant pas des permissions adéquates.
155
        # On s'attend à n'obtenir aucun résultat.
156
        response = self.app.get('/?supitemgroup=foo',
157
            extra_environ={'REMOTE_USER': 'user'})
158

  
159
        # Il doit y avoir 1 seule ligne de résultats.
160
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
161
        print "There are %d rows in the result set" % len(rows)
162
        assert_equal(len(rows), 1)
163

  
164
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
165
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
166
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
167
        print "There are %d columns in the result set" % len(cols)
168
        assert_equal(len(cols), 1)
169

  
vigiboard/tests/functional/test_search_form_servicegroup.py
1
# -*- coding: utf-8 -*-
2
"""
3
Teste le formulaire de recherche avec un groupe de services.
4
"""
5
from nose.tools import assert_true, assert_equal
6
from datetime import datetime
7
import transaction
8

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

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

  
20
    host = Host(
21
        name=u'bar',
22
        checkhostcmd=u'',
23
        description=u'',
24
        hosttpl=u'',
25
        mainip=u'127.0.0.1',
26
        snmpport=42,
27
        snmpcommunity=u'public',
28
        snmpversion=u'3',
29
        weight=42,
30
    )
31
    DBSession.add(host)
32
    DBSession.flush()
33

  
34
    servicegroup = SupItemGroup(
35
        name=u'foo',
36
    )
37
    DBSession.add(servicegroup)
38

  
39
    DBSession.add(GroupHierarchy(
40
        parent=servicegroup,
41
        child=servicegroup,
42
        hops=0,
43
    ))
44
    DBSession.flush()
45

  
46
    service = LowLevelService(
47
        host=host,
48
        command=u'',
49
        weight=42,
50
        servicename=u'baz',
51
        op_dep=u'&',
52
    )
53
    DBSession.add(service)
54
    DBSession.flush()
55

  
56
    servicegroup.supitems.append(service)
57
    event = Event(
58
        supitem=service,
59
        timestamp=timestamp,
60
        current_state=StateName.statename_to_value(u'WARNING'),
61
        message=u'Hello world',
62
    )
63
    DBSession.add(event)
64
    DBSession.flush()
65

  
66
    correvent = CorrEvent(
67
        impact=42,
68
        priority=42,
69
        trouble_ticket=None,
70
        status=u'None',
71
        occurrence=42,
72
        timestamp_active=timestamp,
73
        cause=event,
74
    )
75
    correvent.events.append(event)
76
    DBSession.add(correvent)
77
    DBSession.flush()
78
    return servicegroup
79

  
80
class TestSearchFormServiceGroup(TestController):
81
    """Teste la récupération d'événements selon le groupe de services."""
82
    def setUp(self):
83
        super(TestSearchFormServiceGroup, self).setUp()
84
        perm = Permission.by_permission_name(u'vigiboard-access')
85
        user = User(
86
            user_name=u'user',
87
            fullname=u'',
88
            email=u'some.random@us.er',
89
        )
90
        usergroup = UserGroup(
91
            group_name=u'users',
92
        )
93
        user.usergroups.append(usergroup)
94
        usergroup.permissions.append(perm)
95
        DBSession.add(user)
96
        DBSession.add(usergroup)
97
        DBSession.flush()
98

  
99
    def test_search_servicegroup_when_allowed(self):
100
        """Teste la recherche par servicegroup avec les bons droits d'accès."""
101
        # On crée un groupe de services appelé 'foo',
102
        # contenant un service 'bar', ainsi qu'un événement
103
        # et un événement corrélé sur ce service.
104
        # De plus, on donne l'autorisation aux utilisateurs
105
        # ayant la permission 'edit' de voir cette alerte.
106
        servicegroup = insert_deps()
107
        usergroup = UserGroup.by_group_name(u'users')
108
        DBSession.add(DataPermission(
109
            group=servicegroup,
110
            usergroup=usergroup,
111
            access=u'r',
112
        ))
113
        DBSession.flush()
114
        transaction.commit()
115

  
116
        # On envoie une requête avec recherche sur le groupe
117
        # de services créé, on s'attend à recevoir 1 résultat.
118
        response = self.app.get('/?supitemgroup=foo',
119
            extra_environ={'REMOTE_USER': 'user'})
120

  
121
        # Il doit y avoir 1 seule ligne de résultats.
122
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
123
        print "There are %d rows in the result set" % len(rows)
124
        assert_equal(len(rows), 1)
125

  
126
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
127
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
128
        print "There are %d columns in the result set" % len(cols)
129
        assert_true(len(cols) > 1)
130

  
131
    def test_search_inexistent_servicegroup(self):
132
        """Teste la recherche par servicegroup sur un groupe inexistant."""
133
        transaction.commit()
134
        # On envoie une requête avec recherche sur un groupe de services
135
        # qui n'existe pas, on s'attend à n'obtenir aucun résultat.
136
        response = self.app.get('/?supitemgroup=foot',
137
            extra_environ={'REMOTE_USER': 'user'})
138

  
139
        # Il doit y avoir 1 seule ligne de résultats.
140
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
141
        print "There are %d rows in the result set" % len(rows)
142
        assert_equal(len(rows), 1)
143

  
144
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
145
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
146
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
147
        print "There are %d columns in the result set" % len(cols)
148
        assert_equal(len(cols), 1)
149

  
150
    def test_search_servicegroup_when_disallowed(self):
151
        """Teste la recherche par servicegroup SANS les droits d'accès."""
152
        # On crée un groupe de services appelé 'foo',
153
        # contenant un service 'bar', ainsi qu'un événement
154
        # et un événement corrélé sur cet hôte.
155
        # MAIS, on NE DONNE PAS l'autorisation aux utilisateurs
156
        # de voir cette alerte, donc elle ne doit jamais apparaître.
157
        insert_deps()
158
        transaction.commit()
159

  
160
        # On envoie une requête avec recherche sur le groupe de services
161
        # services créé, mais avec un utilisateur ne disposant pas des
162
        # permissions adéquates. On s'attend à n'obtenir aucun résultat.
163
        response = self.app.get('/?supitemgroup=foo',
164
            extra_environ={'REMOTE_USER': 'user'})
165

  
166
        # Il doit y avoir 1 seule ligne de résultats.
167
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
168
        print "There are %d rows in the result set" % len(rows)
169
        assert_equal(len(rows), 1)
170

  
171
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
172
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
173
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
174
        print "There are %d columns in the result set" % len(cols)
175
        assert_equal(len(cols), 1)
176

  
vigiboard/tests/functional/test_search_form_supitemgroup.py
1
# -*- coding: utf-8 -*-
2
"""
3
Teste le formulaire de recherche avec un groupe d'hôtes.
4
"""
5
from nose.tools import assert_true, assert_equal
6
from datetime import datetime
7
import transaction
8

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

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

  
20
    supitemgroup = SupItemGroup(
21
        name=u'foo',
22
    )
23
    DBSession.add(supitemgroup)
24
    DBSession.flush()
25

  
26
    DBSession.add(GroupHierarchy(
27
        parent=supitemgroup,
28
        child=supitemgroup,
29
        hops=0,
30
    ))
31
    DBSession.flush()
32

  
33
    host = Host(
34
        name=u'bar',
35
        checkhostcmd=u'',
36
        description=u'',
37
        hosttpl=u'',
38
        mainip=u'127.0.0.1',
39
        snmpport=42,
40
        snmpcommunity=u'public',
41
        snmpversion=u'3',
42
        weight=42,
43
    )
44
    DBSession.add(host)
45
    DBSession.flush()
46

  
47
    supitemgroup.supitems.append(host)
48
    DBSession.flush()
49

  
50
    event = Event(
51
        supitem=host,
52
        timestamp=timestamp,
53
        current_state=StateName.statename_to_value(u'WARNING'),
54
        message=u'Hello world',
55
    )
56
    DBSession.add(event)
57
    DBSession.flush()
58

  
59
    correvent = CorrEvent(
60
        impact=42,
61
        priority=42,
62
        trouble_ticket=None,
63
        status=u'None',
64
        occurrence=42,
65
        timestamp_active=timestamp,
66
        cause=event,
67
    )
68
    correvent.events.append(event)
69
    DBSession.add(correvent)
70
    DBSession.flush()
71
    return supitemgroup
72

  
73
class TestSearchFormSupItemGroup(TestController):
74
    """Teste la récupération d'événements selon le supitemgroup."""
75
    def setUp(self):
76
        super(TestSearchFormSupItemGroup, self).setUp()
77
        perm = Permission.by_permission_name(u'vigiboard-access')
78
        user = User(
79
            user_name=u'user',
80
            fullname=u'',
81
            email=u'some.random@us.er',
82
        )
83
        usergroup = UserGroup(
84
            group_name=u'users',
85
        )
86
        user.usergroups.append(usergroup)
87
        usergroup.permissions.append(perm)
88
        DBSession.add(user)
89
        DBSession.add(usergroup)
90
        DBSession.flush()
91

  
92
    def test_search_supitemgroup_when_allowed(self):
93
        """Teste la recherche par supitemgroup avec les bons droits d'accès."""
94
        # On crée un groupe d'hôte appelé 'foo',
95
        # contenant un hôte 'bar', ainsi qu'un événement
96
        # et un événement corrélé sur cet hôte.
97
        # De plus, on donne l'autorisation aux utilisateurs
98
        # ayant la permission 'edit' de voir cette alerte.
99
        supitemgroup = insert_deps()
100
        idgroup = supitemgroup.idgroup
101
        usergroup = UserGroup.by_group_name(u'users')
102
        DBSession.add(DataPermission(
103
            group=supitemgroup,
104
            usergroup=usergroup,
105
            access=u'r',
106
        ))
107
        DBSession.flush()
108
        transaction.commit()
109

  
110
        # On envoie une requête avec recherche sur le groupe d'hôtes créé,
111
        # on s'attend à recevoir 1 résultat.
112
        response = self.app.get('/?supitemgroup=%d' % idgroup,
113
            extra_environ={'REMOTE_USER': 'user'})
114

  
115
        # Il doit y avoir 1 seule ligne de résultats.
116
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
117
        print "There are %d rows in the result set" % len(rows)
118
        assert_equal(len(rows), 1)
119

  
120
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
121
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
122
        print "There are %d columns in the result set" % len(cols)
123
        assert_true(len(cols) > 1)
124

  
125
    def test_search_inexistent_supitemgroup(self):
126
        """Teste la recherche par supitemgroup sur un groupe inexistant."""
127
        # On envoie une requête avec recherche sur un groupe d'hôtes
128
        # qui n'existe pas, on s'attend à n'obtenir aucun résultat.
129
        transaction.commit()
130
        response = self.app.get('/?supitemgroup=%d' % -42,
131
            extra_environ={'REMOTE_USER': 'user'})
132

  
133
        # Il doit y avoir 1 seule ligne de résultats.
134
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
135
        print "There are %d rows in the result set" % len(rows)
136
        assert_equal(len(rows), 1)
137

  
138
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
139
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
140
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
141
        print "There are %d columns in the result set" % len(cols)
142
        assert_equal(len(cols), 1)
143

  
144
    def test_search_supitemgroup_when_disallowed(self):
145
        """Teste la recherche par supitemgroup SANS les droits d'accès."""
146
        # On crée un groupe d'hôte appelé 'foo',
147
        # contenant un hôte 'bar', ainsi qu'un événement
148
        # et un événement corrélé sur cet hôte.
149
        # MAIS, on NE DONNE PAS l'autorisation aux utilisateurs
150
        # de voir cette alerte, donc elle ne doit jamais apparaître.
151
        supitemgroup = insert_deps()
152
        idgroup = supitemgroup.idgroup
153
        transaction.commit()
154

  
155
        # On envoie une requête avec recherche sur le groupe d'hôtes créé,
156
        # mais avec un utilisateur ne disposant pas des permissions adéquates.
157
        # On s'attend à n'obtenir aucun résultat.
158
        response = self.app.get('/?supitemgroup=%d' % idgroup,
159
            extra_environ={'REMOTE_USER': 'user'})
160

  
161
        # Il doit y avoir 1 seule ligne de résultats.
162
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
163
        print "There are %d rows in the result set" % len(rows)
164
        assert_equal(len(rows), 1)
165

  
166
        # Il doit y avoir 1 seule colonne dans la ligne de résultats.
167
        # (la colonne contient le texte "Il n'y a aucun événément", traduit)
168
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
169
        print "There are %d columns in the result set" % len(cols)
170
        assert_equal(len(cols), 1)
171

  

Also available in: Unified diff