vigiboard / vigiboard / tests / functional / test_search_form_misc.py @ b373a5de
History | View | Annotate | Download (5.24 KB)
1 | 64ed9170 | Vincent QUEMENER | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | b373a5de | Aurelien BOMPARD | # Copyright (C) 2006-2011 CS-SI
|
3 | # License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
|
||
4 | |||
5 | 64ed9170 | Vincent QUEMENER | """
|
6 | Teste le formulaire de recherche avec divers champs.
|
||
7 | """
|
||
8 | 9211ef65 | Francois POIROTTE | from pylons.i18n import ugettext as _ |
9 | 64ed9170 | Vincent QUEMENER | from nose.tools import assert_true, assert_equal |
10 | from datetime import datetime |
||
11 | import transaction |
||
12 | |||
13 | from vigiboard.tests import TestController |
||
14 | e7e3d45e | Francois POIROTTE | from vigilo.models.session import DBSession |
15 | 0bd9c069 | Francois POIROTTE | from vigilo.models.tables import SupItemGroup, Host, Permission, \ |
16 | 60d02e7f | Francois POIROTTE | Event, CorrEvent, StateName, \ |
17 | User, UserGroup, DataPermission |
||
18 | 64ed9170 | Vincent QUEMENER | |
19 | def insert_deps(): |
||
20 | """Insère les dépendances nécessaires aux tests."""
|
||
21 | timestamp = datetime.now() |
||
22 | |||
23 | host = Host( |
||
24 | name=u'bar',
|
||
25 | checkhostcmd=u'',
|
||
26 | description=u'',
|
||
27 | hosttpl=u'',
|
||
28 | 0dcb87f7 | Francois POIROTTE | address=u'127.0.0.1',
|
29 | 64ed9170 | Vincent QUEMENER | snmpport=42,
|
30 | snmpcommunity=u'public',
|
||
31 | snmpversion=u'3',
|
||
32 | weight=42,
|
||
33 | ) |
||
34 | DBSession.add(host) |
||
35 | DBSession.flush() |
||
36 | |||
37 | 03059edd | Francois POIROTTE | hostgroup = SupItemGroup(name=u'foo', parent=None) |
38 | 24d74687 | Francois POIROTTE | hostgroup.supitems.append(host) |
39 | 0bd9c069 | Francois POIROTTE | DBSession.add(hostgroup) |
40 | DBSession.flush() |
||
41 | 64ed9170 | Vincent QUEMENER | |
42 | event = Event( |
||
43 | supitem=host, |
||
44 | timestamp=timestamp, |
||
45 | current_state=StateName.statename_to_value(u'WARNING'),
|
||
46 | message=u'Hello world',
|
||
47 | ) |
||
48 | DBSession.add(event) |
||
49 | DBSession.flush() |
||
50 | |||
51 | correvent = CorrEvent( |
||
52 | impact=42,
|
||
53 | priority=42,
|
||
54 | trouble_ticket=u'FOO BAR BAZ',
|
||
55 | status=u'None',
|
||
56 | occurrence=42,
|
||
57 | timestamp_active=timestamp, |
||
58 | cause=event, |
||
59 | ) |
||
60 | correvent.events.append(event) |
||
61 | DBSession.add(correvent) |
||
62 | DBSession.flush() |
||
63 | |||
64 | 60d02e7f | Francois POIROTTE | # On donne l'accès aux données.
|
65 | usergroup = UserGroup.by_group_name(u'users')
|
||
66 | DBSession.add(DataPermission( |
||
67 | group=hostgroup, |
||
68 | usergroup=usergroup, |
||
69 | access=u'r',
|
||
70 | )) |
||
71 | 64ed9170 | Vincent QUEMENER | DBSession.flush() |
72 | return timestamp
|
||
73 | |||
74 | |||
75 | class TestSearchFormMisc(TestController): |
||
76 | """Teste la récupération d'événements selon le nom d'hôte."""
|
||
77 | 60d02e7f | Francois POIROTTE | def setUp(self): |
78 | super(TestSearchFormMisc, self).setUp() |
||
79 | perm = Permission.by_permission_name(u'vigiboard-access')
|
||
80 | user = User( |
||
81 | user_name=u'user',
|
||
82 | fullname=u'',
|
||
83 | email=u'some.random@us.er',
|
||
84 | ) |
||
85 | 03059edd | Francois POIROTTE | usergroup = UserGroup(group_name=u'users')
|
86 | 60d02e7f | Francois POIROTTE | user.usergroups.append(usergroup) |
87 | usergroup.permissions.append(perm) |
||
88 | DBSession.add(user) |
||
89 | DBSession.add(usergroup) |
||
90 | DBSession.flush() |
||
91 | |||
92 | 64ed9170 | Vincent QUEMENER | def test_search_by_output(self): |
93 | """Teste la recherche sur le message issu de Nagios."""
|
||
94 | insert_deps() |
||
95 | transaction.commit() |
||
96 | |||
97 | # Permet également de vérifier que la recherche est
|
||
98 | # insensible à la casse.
|
||
99 | d36c37eb | Francois POIROTTE | response = self.app.get('/?output=hello*', |
100 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
101 | 64ed9170 | Vincent QUEMENER | |
102 | # Il doit y avoir 1 seule ligne de résultats.
|
||
103 | rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
|
||
104 | print "There are %d rows in the result set" % len(rows) |
||
105 | assert_equal(len(rows), 1) |
||
106 | |||
107 | # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
|
||
108 | cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
|
||
109 | print "There are %d columns in the result set" % len(cols) |
||
110 | assert_true(len(cols) > 1) |
||
111 | |||
112 | def test_search_by_trouble_ticket(self): |
||
113 | """Teste la recherche sur le ticket d'incident."""
|
||
114 | insert_deps() |
||
115 | transaction.commit() |
||
116 | |||
117 | # Permet également de vérifier que la recherche est
|
||
118 | # insensible à la casse.
|
||
119 | d36c37eb | Francois POIROTTE | response = self.app.get('/?trouble_ticket=*bar*', |
120 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
121 | 64ed9170 | Vincent QUEMENER | transaction.commit() |
122 | |||
123 | # Il doit y avoir 1 seule ligne de résultats.
|
||
124 | rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
|
||
125 | print "There are %d rows in the result set" % len(rows) |
||
126 | assert_equal(len(rows), 1) |
||
127 | |||
128 | # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
|
||
129 | cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
|
||
130 | print "There are %d columns in the result set" % len(cols) |
||
131 | assert_true(len(cols) > 1) |
||
132 | |||
133 | def test_search_by_dates(self): |
||
134 | """Teste la recherche par dates."""
|
||
135 | timestamp = insert_deps() |
||
136 | transaction.commit() |
||
137 | 9211ef65 | Francois POIROTTE | |
138 | # Préparation des dates/heures.
|
||
139 | 27140946 | Francois POIROTTE | from_date = timestamp.strftime("%Y-%m-%d %I:%M:%S %p")
|
140 | to_date = datetime.max.strftime("%Y-%m-%d %I:%M:%S %p")
|
||
141 | 64ed9170 | Vincent QUEMENER | |
142 | # Permet également de vérifier que la recherche
|
||
143 | # par date est inclusive.
|
||
144 | response = self.app.get(
|
||
145 | '/?from_date=%(from_date)s&to_date=%(to_date)s' % {
|
||
146 | 'from_date': from_date,
|
||
147 | 'to_date': to_date,
|
||
148 | }, |
||
149 | 60d02e7f | Francois POIROTTE | extra_environ={'REMOTE_USER': 'user'}) |
150 | 64ed9170 | Vincent QUEMENER | |
151 | # Il doit y avoir 1 seule ligne de résultats.
|
||
152 | rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
|
||
153 | print "There are %d rows in the result set" % len(rows) |
||
154 | assert_equal(len(rows), 1) |
||
155 | |||
156 | # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
|
||
157 | cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
|
||
158 | print "There are %d columns in the result set" % len(cols) |
||
159 | assert_true(len(cols) > 1) |