Revision 60d02e7f
Correction des tests unitaires de VigiBoard.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@3114 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/tests/__init__.py | ||
---|---|---|
58 | 58 |
cmd = SetupCommand('setup-app') |
59 | 59 |
cmd.run([test_file]) |
60 | 60 |
|
61 |
# Ajout de l'utilisateur 'editor' et de ses permissions limitées. |
|
62 |
# Utilisé pour vérifier la gestion des permissions. |
|
63 |
from vigilo.models import tables |
|
64 |
editor = tables.User() |
|
65 |
editor.user_name = u'editor' |
|
66 |
editor.email = u'editor@somedomain.com' |
|
67 |
editor.fullname = u'Editor' |
|
68 |
editor.password = u'editpass' |
|
69 |
DBSession.add(editor) |
|
70 |
DBSession.flush() |
|
71 |
|
|
72 |
group = tables.UserGroup() |
|
73 |
group.group_name = u'editors' |
|
74 |
group.users.append(editor) |
|
75 |
DBSession.add(group) |
|
76 |
DBSession.flush() |
|
77 |
|
|
78 |
permission = tables.Permission() |
|
79 |
permission.permission_name = u'edit' |
|
80 |
permission.usergroups.append(group) |
|
81 |
DBSession.add(permission) |
|
82 |
DBSession.flush() |
|
83 |
|
|
84 |
permission = tables.Permission.by_permission_name(u'vigiboard-read') |
|
85 |
permission.usergroups.append(group) |
|
86 |
DBSession.flush() |
|
87 |
|
|
88 |
permission = tables.Permission.by_permission_name(u'vigiboard-write') |
|
89 |
permission.usergroups.append(group) |
|
90 |
DBSession.flush() |
|
91 |
|
|
92 |
import transaction |
|
93 |
transaction.commit() |
|
94 |
|
|
95 |
|
|
96 | 61 |
def tearDown(self): |
97 | 62 |
"""Method called by nose after running each test""" |
98 | 63 |
# Cleaning up the database: |
vigiboard/tests/functional/plugins/test_details_plugin.py | ||
---|---|---|
9 | 9 |
|
10 | 10 |
from vigiboard.tests import TestController |
11 | 11 |
from vigilo.models.session import DBSession |
12 |
from vigilo.models.tables import SupItemGroup, \ |
|
13 |
Host, Permission, StateName, \
|
|
14 |
LowLevelService, Event, CorrEvent |
|
12 |
from vigilo.models.tables import SupItemGroup, User, UserGroup, \
|
|
13 |
Permission, DataPermission, StateName, \
|
|
14 |
LowLevelService, Event, CorrEvent, Host
|
|
15 | 15 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
16 | 16 |
|
17 | 17 |
def insert_deps(return_service): |
... | ... | |
101 | 101 |
DBSession.add(correvent) |
102 | 102 |
DBSession.flush() |
103 | 103 |
|
104 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
105 |
DBSession.add(DataPermission( |
|
106 |
usergroup=usergroup, |
|
107 |
group=hostgroup, |
|
108 |
access=u'r', |
|
109 |
)) |
|
110 |
DBSession.flush() |
|
111 |
|
|
112 |
transaction.commit() |
|
113 |
correvent = DBSession.query(CorrEvent).first() |
|
114 |
event = DBSession.query(Event).first() |
|
115 |
|
|
104 | 116 |
return (hostgroup, correvent.idcorrevent, event.idevent) |
105 | 117 |
|
106 | 118 |
class TestDetailsPlugin(TestController): |
107 | 119 |
"""Teste le dialogue pour l'accès aux historiques.""" |
120 |
def setUp(self): |
|
121 |
super(TestDetailsPlugin, self).setUp() |
|
122 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
123 |
|
|
124 |
user = User( |
|
125 |
user_name=u'access', |
|
126 |
fullname=u'', |
|
127 |
email=u'user.has@access', |
|
128 |
) |
|
129 |
usergroup = UserGroup( |
|
130 |
group_name=u'users_with_access', |
|
131 |
) |
|
132 |
usergroup.permissions.append(perm) |
|
133 |
user.usergroups.append(usergroup) |
|
134 |
DBSession.add(user) |
|
135 |
DBSession.add(usergroup) |
|
136 |
DBSession.flush() |
|
137 |
|
|
138 |
user = User( |
|
139 |
user_name=u'no_access', |
|
140 |
fullname=u'', |
|
141 |
email=u'user.has.no@access', |
|
142 |
) |
|
143 |
usergroup = UserGroup( |
|
144 |
group_name=u'users_without_access', |
|
145 |
) |
|
146 |
usergroup.permissions.append(perm) |
|
147 |
user.usergroups.append(usergroup) |
|
148 |
DBSession.add(user) |
|
149 |
DBSession.add(usergroup) |
|
150 |
DBSession.flush() |
|
151 |
|
|
152 |
transaction.commit() |
|
108 | 153 |
|
109 | 154 |
def test_details_plugin_LLS_alert_when_allowed(self): |
110 | 155 |
"""Dialogue des détails avec un LLS et les bons droits.""" |
111 | 156 |
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 | 157 |
|
117 | 158 |
response = self.app.post('/get_plugin_value', { |
118 | 159 |
'idcorrevent': idcorrevent, |
119 | 160 |
'plugin_name': 'details', |
120 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
161 |
}, extra_environ={'REMOTE_USER': 'access'})
|
|
121 | 162 |
json = response.json |
122 | 163 |
|
123 | 164 |
# Le contenu de "eventdetails" varie facilement. |
... | ... | |
138 | 179 |
def test_details_plugin_host_alert_when_allowed(self): |
139 | 180 |
"""Dialogue des détails avec un hôte et les bons droits.""" |
140 | 181 |
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 | 182 |
|
146 | 183 |
response = self.app.post('/get_plugin_value', { |
147 | 184 |
'idcorrevent': idcorrevent, |
148 | 185 |
'plugin_name': 'details', |
149 |
}, extra_environ={'REMOTE_USER': 'manager'})
|
|
186 |
}, extra_environ={'REMOTE_USER': 'access'})
|
|
150 | 187 |
json = response.json |
151 | 188 |
|
152 | 189 |
# Le contenu de "eventdetails" varie facilement. |
... | ... | |
168 | 205 |
def test_details_plugin_LLS_when_forbidden(self): |
169 | 206 |
"""Dialogue des détails avec un LLS et des droits insuffisants.""" |
170 | 207 |
idcorrevent = insert_deps(True)[1] |
171 |
DBSession.flush() |
|
172 |
transaction.commit() |
|
173 | 208 |
|
174 | 209 |
# Le contrôleur renvoie une erreur 404 (HTTPNotFound) |
175 | 210 |
# lorsque l'utilisateur n'a pas les permissions nécessaires sur |
... | ... | |
177 | 212 |
self.app.post('/get_plugin_value', { |
178 | 213 |
'idcorrevent': idcorrevent, |
179 | 214 |
'plugin_name': 'details', |
180 |
}, extra_environ={'REMOTE_USER': 'editor'},
|
|
215 |
}, extra_environ={'REMOTE_USER': 'no_access'},
|
|
181 | 216 |
status=404) |
182 | 217 |
|
183 | 218 |
def test_details_plugin_host_when_forbidden(self): |
184 | 219 |
"""Dialogue des détails avec un hôte et des droits insuffisants.""" |
185 | 220 |
idcorrevent = insert_deps(False)[1] |
186 |
DBSession.flush() |
|
187 |
transaction.commit() |
|
188 | 221 |
|
189 | 222 |
# Le contrôleur renvoie une erreur 404 (HTTPNotFound) |
190 | 223 |
# lorsque l'utilisateur n'a pas les permissions nécessaires sur |
... | ... | |
192 | 225 |
self.app.post('/get_plugin_value', { |
193 | 226 |
'idcorrevent': idcorrevent, |
194 | 227 |
'plugin_name': 'details', |
195 |
}, extra_environ={'REMOTE_USER': 'editor'},
|
|
228 |
}, extra_environ={'REMOTE_USER': 'no_access'},
|
|
196 | 229 |
status=404) |
197 | 230 |
|
198 | 231 |
def test_details_plugin_LLS_anonymous(self): |
199 | 232 |
"""Dialogue des détails avec un LLS et en anonyme.""" |
200 | 233 |
idcorrevent = insert_deps(True)[1] |
201 |
DBSession.flush() |
|
202 |
transaction.commit() |
|
203 | 234 |
|
204 | 235 |
# Le contrôleur renvoie une erreur 401 (HTTPUnauthorized) |
205 | 236 |
# lorsque l'utilisateur n'est pas authentifié. |
... | ... | |
211 | 242 |
def test_details_plugin_host_anonymous(self): |
212 | 243 |
"""Dialogue des détails avec un hôte et en anonyme.""" |
213 | 244 |
idcorrevent = insert_deps(False)[1] |
214 |
DBSession.flush() |
|
215 |
transaction.commit() |
|
216 | 245 |
|
217 | 246 |
# Le contrôleur renvoie une erreur 401 (HTTPUnauthorized) |
218 | 247 |
# lorsque l'utilisateur n'est pas authentifié. |
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, \ |
|
9 |
from vigilo.models.tables import Permission, DataPermission, StateName, \
|
|
10 | 10 |
SupItemGroup, Host, HighLevelService, \ |
11 |
Event, CorrEvent, ImpactedPath, ImpactedHLS |
|
11 |
Event, CorrEvent, ImpactedPath, ImpactedHLS, \ |
|
12 |
User, UserGroup |
|
12 | 13 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
13 | 14 |
from vigiboard.tests import TestController |
14 | 15 |
|
... | ... | |
27 | 28 |
)) |
28 | 29 |
|
29 | 30 |
# On lui octroie les permissions |
30 |
manage_perm = Permission.by_permission_name(u'manage') |
|
31 |
hostmanagers.permissions.append(manage_perm) |
|
31 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
32 |
DBSession.add(DataPermission( |
|
33 |
group=hostmanagers, |
|
34 |
usergroup=usergroup, |
|
35 |
access=u'r', |
|
36 |
)) |
|
32 | 37 |
DBSession.flush() |
33 | 38 |
|
34 | 39 |
# On crée un hôte de test. |
... | ... | |
68 | 73 |
DBSession.flush() |
69 | 74 |
|
70 | 75 |
transaction.commit() |
71 |
|
|
72 | 76 |
return aggregate |
73 | 77 |
|
74 | 78 |
def add_paths(path_number, path_length, idsupitem): |
... | ... | |
123 | 127 |
Classe de test du contrôleur listant les services |
124 | 128 |
de haut niveau impactés par un évènement corrélé. |
125 | 129 |
""" |
126 |
|
|
130 |
def setUp(self): |
|
131 |
super(TestHLSPlugin, self).setUp() |
|
132 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
133 |
|
|
134 |
user = User( |
|
135 |
user_name=u'access', |
|
136 |
fullname=u'', |
|
137 |
email=u'user.has@access', |
|
138 |
) |
|
139 |
usergroup = UserGroup( |
|
140 |
group_name=u'users_with_access', |
|
141 |
) |
|
142 |
usergroup.permissions.append(perm) |
|
143 |
user.usergroups.append(usergroup) |
|
144 |
DBSession.add(user) |
|
145 |
DBSession.add(usergroup) |
|
146 |
DBSession.flush() |
|
147 |
|
|
148 |
user = User( |
|
149 |
user_name=u'no_access', |
|
150 |
fullname=u'', |
|
151 |
email=u'user.has.no@access', |
|
152 |
) |
|
153 |
usergroup = UserGroup( |
|
154 |
group_name=u'users_without_access', |
|
155 |
) |
|
156 |
usergroup.permissions.append(perm) |
|
157 |
user.usergroups.append(usergroup) |
|
158 |
DBSession.add(user) |
|
159 |
DBSession.add(usergroup) |
|
160 |
DBSession.flush() |
|
161 |
|
|
162 |
self.aggregate = populate_DB() |
|
163 |
|
|
127 | 164 |
def test_no_impacted_hls(self): |
128 | 165 |
""" |
129 | 166 |
Retour du plugin HLS pour 0 HLS impacté |
... | ... | |
132 | 169 |
""" |
133 | 170 |
|
134 | 171 |
# On peuple la base de données avant le test. |
135 |
aggregate = populate_DB() |
|
136 |
DBSession.add(aggregate) |
|
137 |
add_paths(0, 0, aggregate.events[0].idsupitem) |
|
138 |
DBSession.add(aggregate) |
|
172 |
DBSession.add(self.aggregate) |
|
173 |
add_paths(0, 0, self.aggregate.events[0].idsupitem) |
|
174 |
DBSession.add(self.aggregate) |
|
139 | 175 |
|
140 | 176 |
### 1er cas : l'utilisateur n'est pas connecté. |
141 | 177 |
# On vérifie que le plugin retourne bien une erreur 401. |
142 | 178 |
resp = self.app.post( |
143 | 179 |
'/get_plugin_value', |
144 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
180 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
145 | 181 |
"plugin_name" : "hls"}, |
146 | 182 |
status = 401,) |
147 | 183 |
|
... | ... | |
150 | 186 |
# On vérifie que le plugin retourne bien une erreur 404. |
151 | 187 |
resp = self.app.post( |
152 | 188 |
'/get_plugin_value', |
153 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
189 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
154 | 190 |
"plugin_name" : "hls"}, |
155 | 191 |
status = 404, |
156 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
192 |
extra_environ={'REMOTE_USER': 'no_access'})
|
|
157 | 193 |
|
158 | 194 |
### 3ème cas : l'utilisateur a cette fois les droits. |
159 | 195 |
resp = self.app.post( |
160 | 196 |
'/get_plugin_value', |
161 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
197 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
162 | 198 |
"plugin_name" : "hls"}, |
163 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
199 |
extra_environ={'REMOTE_USER': 'access'})
|
|
164 | 200 |
# On vérifie que le plugin ne retourne toujours rien. |
165 | 201 |
assert_equal(resp.json, {"services": []}) |
166 | 202 |
|
... | ... | |
172 | 208 |
""" |
173 | 209 |
|
174 | 210 |
# On peuple la base de données avant le test. |
175 |
aggregate = populate_DB() |
|
176 |
DBSession.add(aggregate) |
|
177 |
add_paths(1, 2, aggregate.events[0].idsupitem) |
|
178 |
DBSession.add(aggregate) |
|
211 |
DBSession.add(self.aggregate) |
|
212 |
add_paths(1, 2, self.aggregate.events[0].idsupitem) |
|
213 |
DBSession.add(self.aggregate) |
|
179 | 214 |
|
180 | 215 |
### 1er cas : l'utilisateur n'est pas connecté. |
181 | 216 |
# On vérifie que le plugin retourne bien une erreur 401. |
182 | 217 |
resp = self.app.post( |
183 | 218 |
'/get_plugin_value', |
184 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
219 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
185 | 220 |
"plugin_name" : "hls"}, |
186 | 221 |
status = 401,) |
187 | 222 |
|
... | ... | |
191 | 226 |
### avec les informations liées à cet utilisateur). |
192 | 227 |
resp = self.app.post( |
193 | 228 |
'/get_plugin_value', |
194 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
229 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
195 | 230 |
"plugin_name" : "hls"}, |
196 | 231 |
status = 404, |
197 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
232 |
extra_environ={'REMOTE_USER': 'no_access'})
|
|
198 | 233 |
|
199 | 234 |
### 3ème cas : l'utilisateur a cette fois les droits. |
200 | 235 |
resp = self.app.post( |
201 | 236 |
'/get_plugin_value', |
202 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
237 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
203 | 238 |
"plugin_name" : "hls"}, |
204 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
239 |
extra_environ={'REMOTE_USER': 'access'})
|
|
205 | 240 |
# On vérifie que le plugin retourne bien les 2 HLS impactés. |
206 | 241 |
assert_equal(resp.json, {"services": ['HLS12']}) |
207 | 242 |
|
... | ... | |
213 | 248 |
""" |
214 | 249 |
|
215 | 250 |
# On peuple la base de données avant le test. |
216 |
aggregate = populate_DB() |
|
217 |
DBSession.add(aggregate) |
|
218 |
add_paths(2, 2, aggregate.events[0].idsupitem) |
|
219 |
DBSession.add(aggregate) |
|
251 |
DBSession.add(self.aggregate) |
|
252 |
add_paths(2, 2, self.aggregate.events[0].idsupitem) |
|
253 |
DBSession.add(self.aggregate) |
|
220 | 254 |
|
221 | 255 |
### 1er cas : l'utilisateur n'est pas connecté. |
222 | 256 |
# On vérifie que le plugin retourne bien une erreur 401. |
223 | 257 |
resp = self.app.post( |
224 | 258 |
'/get_plugin_value', |
225 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
259 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
226 | 260 |
"plugin_name" : "hls"}, |
227 | 261 |
status = 401,) |
228 | 262 |
|
... | ... | |
230 | 264 |
### droits sur l'hôte ayant causé le correvent. |
231 | 265 |
resp = self.app.post( |
232 | 266 |
'/get_plugin_value', |
233 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
267 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
234 | 268 |
"plugin_name" : "hls"}, |
235 | 269 |
status = 404, |
236 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
270 |
extra_environ={'REMOTE_USER': 'no_access'})
|
|
237 | 271 |
|
238 | 272 |
### 3ème cas : l'utilisateur a cette fois les droits. |
239 | 273 |
resp = self.app.post( |
240 | 274 |
'/get_plugin_value', |
241 |
{"idcorrevent" : str(aggregate.idcorrevent), |
|
275 |
{"idcorrevent" : str(self.aggregate.idcorrevent),
|
|
242 | 276 |
"plugin_name" : "hls"}, |
243 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
277 |
extra_environ={'REMOTE_USER': 'access'})
|
|
244 | 278 |
# On vérifie que le plugin retourne bien les 4 HLS impactés. |
245 | 279 |
assert_equal(resp.json, {"services": ['HLS12', 'HLS22']}) |
246 | 280 |
|
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, \ |
|
12 |
from vigilo.models.tables import Event, CorrEvent, DataPermission, \
|
|
13 | 13 |
Permission, StateName, Host, SupItemGroup, \ |
14 |
LowLevelService |
|
14 |
LowLevelService, User, UserGroup, Permission
|
|
15 | 15 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
16 | 16 |
from vigiboard.tests import TestController |
17 | 17 |
|
... | ... | |
41 | 41 |
)) |
42 | 42 |
DBSession.flush() |
43 | 43 |
|
44 |
manage_perm = Permission.by_permission_name(u'manage') |
|
45 |
edit_perm = Permission.by_permission_name(u'edit') |
|
44 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
45 |
DBSession.add(DataPermission( |
|
46 |
group=hostmanagers, |
|
47 |
usergroup=usergroup, |
|
48 |
access=u'r', |
|
49 |
)) |
|
50 |
DBSession.add(DataPermission( |
|
51 |
group=hosteditors, |
|
52 |
usergroup=usergroup, |
|
53 |
access=u'r', |
|
54 |
)) |
|
46 | 55 |
|
47 |
hostmanagers.permissions.append(manage_perm) |
|
48 |
hosteditors.permissions.append(edit_perm) |
|
56 |
usergroup = UserGroup.by_group_name(u'users_with_limited_access') |
|
57 |
DBSession.add(DataPermission( |
|
58 |
group=hosteditors, |
|
59 |
usergroup=usergroup, |
|
60 |
access=u'r', |
|
61 |
)) |
|
49 | 62 |
DBSession.flush() |
50 | 63 |
|
51 | 64 |
# Création des hôtes de test. |
... | ... | |
161 | 174 |
""" |
162 | 175 |
Test du tableau d'événements de Vigiboard |
163 | 176 |
""" |
177 |
def setUp(self): |
|
178 |
super(TestEventTable, self).setUp() |
|
179 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
180 |
|
|
181 |
user = User( |
|
182 |
user_name=u'access', |
|
183 |
fullname=u'', |
|
184 |
email=u'user.has@access', |
|
185 |
) |
|
186 |
usergroup = UserGroup( |
|
187 |
group_name=u'users_with_access', |
|
188 |
) |
|
189 |
usergroup.permissions.append(perm) |
|
190 |
user.usergroups.append(usergroup) |
|
191 |
DBSession.add(user) |
|
192 |
DBSession.add(usergroup) |
|
193 |
DBSession.flush() |
|
194 |
|
|
195 |
user = User( |
|
196 |
user_name=u'limited_access', |
|
197 |
fullname=u'', |
|
198 |
email=u'user.has.no@access', |
|
199 |
) |
|
200 |
usergroup = UserGroup( |
|
201 |
group_name=u'users_with_limited_access', |
|
202 |
) |
|
203 |
usergroup.permissions.append(perm) |
|
204 |
user.usergroups.append(usergroup) |
|
205 |
DBSession.add(user) |
|
206 |
DBSession.add(usergroup) |
|
207 |
DBSession.flush() |
|
208 |
|
|
209 |
populate_DB() |
|
210 |
|
|
164 | 211 |
|
165 | 212 |
def test_homepage(self): |
166 | 213 |
""" |
167 | 214 |
Tableau des événements (page d'accueil). |
168 | 215 |
""" |
169 |
populate_DB() |
|
170 |
|
|
171 | 216 |
# L'utilisateur n'est pas authentifié. |
172 | 217 |
response = self.app.get('/', status=401) |
173 | 218 |
|
174 | 219 |
# L'utilisateur est authentifié avec des permissions réduites. |
175 |
environ = {'REMOTE_USER': 'editor'}
|
|
220 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
176 | 221 |
response = self.app.get('/', extra_environ=environ) |
177 | 222 |
|
178 | 223 |
# Il doit y avoir 2 lignes de résultats. |
... | ... | |
186 | 231 |
assert_true(len(cols) > 1) |
187 | 232 |
|
188 | 233 |
# L'utilisateur est authentifié avec des permissions plus étendues. |
189 |
environ = {'REMOTE_USER': 'manager'}
|
|
234 |
environ = {'REMOTE_USER': 'access'}
|
|
190 | 235 |
response = self.app.get('/', extra_environ=environ) |
191 | 236 |
|
192 | 237 |
# Il doit y avoir 4 lignes de résultats. |
... | ... | |
203 | 248 |
""" |
204 | 249 |
Tableau des événements corrélés pour un service de bas niveau. |
205 | 250 |
""" |
206 |
populate_DB() |
|
207 | 251 |
url = '/item/1/%s/%s' % ('managerhost', 'managerservice') |
208 | 252 |
|
209 | 253 |
# L'utilisateur n'est pas authentifié. |
... | ... | |
212 | 256 |
# L'utilisateur dispose de permissions restreintes. |
213 | 257 |
# Il n'a pas accès aux événements corrélés sur le service donné. |
214 | 258 |
# Donc, on s'attend à être redirigé avec un message d'erreur. |
215 |
environ = {'REMOTE_USER': 'editor'}
|
|
259 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
216 | 260 |
response = self.app.get(url, extra_environ=environ, status=302) |
217 | 261 |
response = response.follow(status = 200, extra_environ = environ) |
218 | 262 |
assert_true(len(response.lxml.xpath( |
... | ... | |
221 | 265 |
# L'utilisateur dispose de permissions plus étendues. |
222 | 266 |
# Il doit avoir accès à l'historique. |
223 | 267 |
# Ici, il n'y a qu'un seul événement corrélé pour ce service. |
224 |
environ = {'REMOTE_USER': 'manager'}
|
|
268 |
environ = {'REMOTE_USER': 'access'}
|
|
225 | 269 |
response = self.app.get(url, extra_environ=environ, status=200) |
226 | 270 |
|
227 | 271 |
# Il doit y avoir 1 ligne de résultats. |
... | ... | |
233 | 277 |
""" |
234 | 278 |
Tableau des événements corrélés pour un hôte. |
235 | 279 |
""" |
236 |
populate_DB() |
|
237 | 280 |
url = '/item/1/%s/' % ('managerhost', ) |
238 | 281 |
|
239 | 282 |
# L'utilisateur n'est pas authentifié. |
... | ... | |
242 | 285 |
# L'utilisateur dispose de permissions restreintes. |
243 | 286 |
# Il n'a pas accès aux événements corrélés sur le service donné. |
244 | 287 |
# Donc, on s'attend à être redirigé avec un message d'erreur. |
245 |
environ = {'REMOTE_USER': 'editor'}
|
|
288 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
246 | 289 |
response = self.app.get(url, extra_environ=environ, status=302) |
247 | 290 |
response = response.follow(status = 200, extra_environ = environ) |
248 | 291 |
assert_true(len(response.lxml.xpath( |
... | ... | |
251 | 294 |
# L'utilisateur dispose de permissions plus étendues. |
252 | 295 |
# Il doit avoir accès à l'historique. |
253 | 296 |
# Ici, il n'y a qu'un seul événement corrélé pour ce service. |
254 |
environ = {'REMOTE_USER': 'manager'}
|
|
297 |
environ = {'REMOTE_USER': 'access'}
|
|
255 | 298 |
response = self.app.get(url, extra_environ=environ, status=200) |
256 | 299 |
|
257 | 300 |
# Il doit y avoir 1 ligne de résultats. |
vigiboard/tests/functional/test_history_table.py | ||
---|---|---|
12 | 12 |
from vigilo.models.session import DBSession |
13 | 13 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
14 | 14 |
Permission, StateName, Host, \ |
15 |
SupItemGroup, LowLevelService |
|
15 |
SupItemGroup, LowLevelService, \ |
|
16 |
Permission, DataPermission, User, \ |
|
17 |
UserGroup |
|
16 | 18 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
17 | 19 |
from vigiboard.tests import TestController |
18 | 20 |
|
... | ... | |
29 | 31 |
hops=0, |
30 | 32 |
)) |
31 | 33 |
|
32 |
# On ajoute la permission 'manage' à ces deux groupes. |
|
33 |
manage_perm = Permission.by_permission_name(u'manage') |
|
34 |
supitemmanagers.permissions.append(manage_perm) |
|
34 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
35 |
DBSession.add(DataPermission( |
|
36 |
group=supitemmanagers, |
|
37 |
usergroup=usergroup, |
|
38 |
access=u'r', |
|
39 |
)) |
|
35 | 40 |
DBSession.flush() |
36 | 41 |
|
37 | 42 |
# On crée un hôte de test, et on l'ajoute au groupe d'hôtes. |
... | ... | |
108 | 113 |
Teste la table qui affiche l'historique des actions |
109 | 114 |
sur un événement brut. |
110 | 115 |
""" |
116 |
def setUp(self): |
|
117 |
super(TestHistoryTable, self).setUp() |
|
118 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
119 |
|
|
120 |
user = User( |
|
121 |
user_name=u'access', |
|
122 |
fullname=u'', |
|
123 |
email=u'user.has@access', |
|
124 |
) |
|
125 |
usergroup = UserGroup( |
|
126 |
group_name=u'users_with_access', |
|
127 |
) |
|
128 |
usergroup.permissions.append(perm) |
|
129 |
user.usergroups.append(usergroup) |
|
130 |
DBSession.add(user) |
|
131 |
DBSession.add(usergroup) |
|
132 |
DBSession.flush() |
|
133 |
|
|
134 |
user = User( |
|
135 |
user_name=u'limited_access', |
|
136 |
fullname=u'', |
|
137 |
email=u'user.has.no@access', |
|
138 |
) |
|
139 |
usergroup = UserGroup( |
|
140 |
group_name=u'users_with_limited_access', |
|
141 |
) |
|
142 |
usergroup.permissions.append(perm) |
|
143 |
user.usergroups.append(usergroup) |
|
144 |
DBSession.add(user) |
|
145 |
DBSession.add(usergroup) |
|
146 |
DBSession.flush() |
|
147 |
|
|
111 | 148 |
|
112 | 149 |
def test_cause_host_history(self): |
113 | 150 |
"""Historique de la cause d'un événement corrélé sur un hôte.""" |
... | ... | |
128 | 165 |
status = 401) |
129 | 166 |
|
130 | 167 |
# L'utilisateur N'A PAS les bonnes permissions. |
131 |
environ = {'REMOTE_USER': 'editor'}
|
|
168 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
132 | 169 |
|
133 | 170 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
134 | 171 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
144 | 181 |
'//div[@id="flash"]/div[@class="error"]'))) |
145 | 182 |
|
146 | 183 |
# L'utilisateur a les bonnes permissions. |
147 |
environ = {'REMOTE_USER': 'manager'}
|
|
184 |
environ = {'REMOTE_USER': 'access'}
|
|
148 | 185 |
|
149 | 186 |
# On s'attend à ce que le statut de la requête soit 200. |
150 | 187 |
response = self.app.get( |
... | ... | |
180 | 217 |
status = 401) |
181 | 218 |
|
182 | 219 |
# L'utilisateur N'A PAS les bonnes permissions. |
183 |
environ = {'REMOTE_USER': 'editor'}
|
|
220 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
184 | 221 |
|
185 | 222 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
186 | 223 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
196 | 233 |
'//div[@id="flash"]/div[@class="error"]'))) |
197 | 234 |
|
198 | 235 |
# L'utilisateur a les bonnes permissions. |
199 |
environ = {'REMOTE_USER': 'manager'}
|
|
236 |
environ = {'REMOTE_USER': 'access'}
|
|
200 | 237 |
|
201 | 238 |
# On s'attend à ce que le statut de la requête soit 200. |
202 | 239 |
response = self.app.get( |
vigiboard/tests/functional/test_raw_events_table.py | ||
---|---|---|
9 | 9 |
import transaction |
10 | 10 |
|
11 | 11 |
from vigilo.models.session import DBSession |
12 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
|
13 |
Permission, StateName, Host, \ |
|
14 |
LowLevelService, SupItemGroup |
|
12 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, User, \
|
|
13 |
Permission, StateName, Host, UserGroup, \
|
|
14 |
LowLevelService, SupItemGroup, DataPermission
|
|
15 | 15 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
16 | 16 |
from vigiboard.tests import TestController |
17 | 17 |
|
18 |
def populate_accounts(): |
|
19 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
20 |
|
|
21 |
user = User( |
|
22 |
user_name=u'access', |
|
23 |
fullname=u'', |
|
24 |
email=u'user.has@access', |
|
25 |
) |
|
26 |
usergroup = UserGroup( |
|
27 |
group_name=u'users_with_access', |
|
28 |
) |
|
29 |
usergroup.permissions.append(perm) |
|
30 |
user.usergroups.append(usergroup) |
|
31 |
DBSession.add(user) |
|
32 |
DBSession.add(usergroup) |
|
33 |
DBSession.flush() |
|
34 |
|
|
35 |
user = User( |
|
36 |
user_name=u'limited_access', |
|
37 |
fullname=u'', |
|
38 |
email=u'user.has.no@access', |
|
39 |
) |
|
40 |
usergroup = UserGroup( |
|
41 |
group_name=u'users_with_limited_access', |
|
42 |
) |
|
43 |
usergroup.permissions.append(perm) |
|
44 |
user.usergroups.append(usergroup) |
|
45 |
DBSession.add(user) |
|
46 |
DBSession.add(usergroup) |
|
47 |
DBSession.flush() |
|
48 |
transaction.commit() |
|
49 |
|
|
18 | 50 |
def populate_DB(caused_by_service): |
19 | 51 |
""" Peuple la base de données. """ |
20 | 52 |
# On ajoute un groupe d'hôtes et un groupe de services. |
... | ... | |
29 | 61 |
)) |
30 | 62 |
DBSession.flush() |
31 | 63 |
|
32 |
# On ajoute la permission 'manage' à ces deux groupes. |
|
33 |
manage_perm = Permission.by_permission_name(u'manage') |
|
34 |
supitemmanagers.permissions.append(manage_perm) |
|
64 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
65 |
DBSession.add(DataPermission( |
|
66 |
group=supitemmanagers, |
|
67 |
usergroup=usergroup, |
|
68 |
access=u'r', |
|
69 |
)) |
|
35 | 70 |
DBSession.flush() |
36 | 71 |
|
37 | 72 |
# On crée un hôte de test, et on l'ajoute au groupe d'hôtes. |
... | ... | |
141 | 176 |
""" |
142 | 177 |
test_service = True |
143 | 178 |
|
179 |
def setUp(self): |
|
180 |
super(TestRawEventsTableAnonymousLLS, self).setUp() |
|
181 |
populate_accounts() |
|
182 |
|
|
144 | 183 |
def test_table(self): |
145 | 184 |
"""Événements masqués d'un agrégat sur un LLS en anonyme.""" |
146 | 185 |
# On peuple la BDD avec un hôte, un service de bas niveau, |
... | ... | |
172 | 211 |
""" |
173 | 212 |
test_service = True |
174 | 213 |
|
214 |
def setUp(self): |
|
215 |
super(TestRawEventsTableWithoutPermsLLS, self).setUp() |
|
216 |
populate_accounts() |
|
217 |
|
|
175 | 218 |
def test_table(self): |
176 | 219 |
"""Événements masqués d'un agrégat sur un LLS sans permissions.""" |
177 | 220 |
# On peuple la BDD avec un hôte, un service de bas niveau, |
... | ... | |
179 | 222 |
idcorrevent = populate_DB(self.test_service) |
180 | 223 |
transaction.commit() |
181 | 224 |
|
182 |
environ = {'REMOTE_USER': 'editor'}
|
|
225 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
183 | 226 |
|
184 | 227 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
185 | 228 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
221 | 264 |
""" |
222 | 265 |
test_service = True |
223 | 266 |
|
267 |
def setUp(self): |
|
268 |
super(TestRawEventsTableWithPermsLLS, self).setUp() |
|
269 |
populate_accounts() |
|
270 |
|
|
224 | 271 |
def test_table(self): |
225 | 272 |
"""Événements masqués d'un agrégat sur un LLS avec permissions.""" |
226 | 273 |
# On peuple la BDD avec un hôte, un service de bas niveau, |
... | ... | |
228 | 275 |
idcorrevent = populate_DB(True) |
229 | 276 |
transaction.commit() |
230 | 277 |
|
231 |
environ = {'REMOTE_USER': 'manager'}
|
|
278 |
environ = {'REMOTE_USER': 'access'}
|
|
232 | 279 |
|
233 | 280 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
234 | 281 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
vigiboard/tests/functional/test_root.py | ||
---|---|---|
16 | 16 |
import transaction |
17 | 17 |
|
18 | 18 |
from vigilo.models.session import DBSession |
19 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, \ |
|
20 |
Permission, StateName, Host, \ |
|
21 |
SupItemGroup, LowLevelService |
|
19 |
from vigilo.models.tables import Event, EventHistory, CorrEvent, User, \
|
|
20 |
Permission, StateName, Host, UserGroup, \
|
|
21 |
SupItemGroup, LowLevelService, DataPermission
|
|
22 | 22 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
23 | 23 |
from vigiboard.tests import TestController |
24 | 24 |
|
... | ... | |
36 | 36 |
)) |
37 | 37 |
DBSession.flush() |
38 | 38 |
|
39 |
# On ajoute la permission 'manage' à ces deux groupes. |
|
40 |
manage_perm = Permission.by_permission_name(u'manage') |
|
41 |
supitemmanagers.permissions.append(manage_perm) |
|
39 |
usergroup = UserGroup.by_group_name(u'users_with_access') |
|
40 |
DBSession.add(DataPermission( |
|
41 |
group=supitemmanagers, |
|
42 |
usergroup=usergroup, |
|
43 |
access=u'w', |
|
44 |
)) |
|
42 | 45 |
DBSession.flush() |
43 | 46 |
|
44 | 47 |
# On crée un 2 hôtes, et on les ajoute au groupe d'hôtes. |
... | ... | |
122 | 125 |
|
123 | 126 |
class TestRootController(TestController): |
124 | 127 |
""" Classe de test du root controller """ |
128 |
def setUp(self): |
|
129 |
super(TestRootController, self).setUp() |
|
130 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
131 |
perm2 = Permission.by_permission_name(u'vigiboard-update') |
|
132 |
|
|
133 |
user = User( |
|
134 |
user_name=u'access', |
|
135 |
fullname=u'', |
|
136 |
email=u'user.has@access', |
|
137 |
) |
|
138 |
usergroup = UserGroup( |
|
139 |
group_name=u'users_with_access', |
|
140 |
) |
|
141 |
usergroup.permissions.append(perm) |
|
142 |
usergroup.permissions.append(perm2) |
|
143 |
user.usergroups.append(usergroup) |
|
144 |
DBSession.add(user) |
|
145 |
DBSession.add(usergroup) |
|
146 |
DBSession.flush() |
|
147 |
|
|
148 |
user = User( |
|
149 |
user_name=u'limited_access', |
|
150 |
fullname=u'', |
|
151 |
email=u'user.has.no@access', |
|
152 |
) |
|
153 |
usergroup = UserGroup( |
|
154 |
group_name=u'users_with_limited_access', |
|
155 |
) |
|
156 |
usergroup.permissions.append(perm) |
|
157 |
usergroup.permissions.append(perm2) |
|
158 |
user.usergroups.append(usergroup) |
|
159 |
DBSession.add(user) |
|
160 |
DBSession.add(usergroup) |
|
161 |
DBSession.flush() |
|
162 |
|
|
125 | 163 |
def test_index(self): |
126 | 164 |
"""Test that access to the root webpage is restricted.""" |
127 | 165 |
|
... | ... | |
153 | 191 |
}, status = 401) |
154 | 192 |
|
155 | 193 |
### 2ème cas : L'utilisateur utilisé pour |
156 |
# se connecter à Vigiboard est 'editor'.
|
|
157 |
environ = {'REMOTE_USER': 'editor'}
|
|
194 |
# se connecter à Vigiboard est 'limited_access'.
|
|
195 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
158 | 196 |
|
159 | 197 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
160 | 198 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
172 | 210 |
'//div[@id="flash"]/div[@class="error"]')) |
173 | 211 |
|
174 | 212 |
### 3ème cas : L'utilisateur utilisé pour |
175 |
# se connecter à Vigiboard est 'manager'.
|
|
176 |
environ = {'REMOTE_USER': 'manager'}
|
|
213 |
# se connecter à Vigiboard est 'access'.
|
|
214 |
environ = {'REMOTE_USER': 'access'}
|
|
177 | 215 |
|
178 | 216 |
# On s'attend à ce que le statut de la requête soit 302, |
179 | 217 |
# et à ce qu'un message informe l'utilisateur que les |
... | ... | |
227 | 265 |
}, status = 401) |
228 | 266 |
|
229 | 267 |
### 2ème cas : L'utilisateur utilisé pour |
230 |
# se connecter à Vigiboard est 'editor'.
|
|
231 |
environ = {'REMOTE_USER': 'editor'}
|
|
268 |
# se connecter à Vigiboard est 'limited_access'.
|
|
269 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
232 | 270 |
|
233 | 271 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
234 | 272 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
246 | 284 |
'//div[@id="flash"]/div[@class="error"]')) |
247 | 285 |
|
248 | 286 |
### 3ème cas : L'utilisateur utilisé pour |
249 |
# se connecter à Vigiboard est 'manager'.
|
|
250 |
environ = {'REMOTE_USER': 'manager'}
|
|
287 |
# se connecter à Vigiboard est 'access'.
|
|
288 |
environ = {'REMOTE_USER': 'access'}
|
|
251 | 289 |
|
252 | 290 |
# On s'attend à ce que le statut de la requête soit 302, |
253 | 291 |
# et à ce qu'un message informe l'utilisateur que les |
... | ... | |
299 | 337 |
}, status = 401) |
300 | 338 |
|
301 | 339 |
### 2ème cas : L'utilisateur utilisé pour |
302 |
# se connecter à Vigiboard est 'editor'.
|
|
303 |
environ = {'REMOTE_USER': 'editor'}
|
|
340 |
# se connecter à Vigiboard est 'limited_access'.
|
|
341 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
304 | 342 |
|
305 | 343 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
306 | 344 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
318 | 356 |
'//div[@id="flash"]/div[@class="error"]')) |
319 | 357 |
|
320 | 358 |
### 3ème cas : L'utilisateur utilisé pour |
321 |
# se connecter à Vigiboard est 'manager'.
|
|
322 |
environ = {'REMOTE_USER': 'manager'}
|
|
359 |
# se connecter à Vigiboard est 'access'.
|
|
360 |
environ = {'REMOTE_USER': 'access'}
|
|
323 | 361 |
|
324 | 362 |
# On s'attend à ce que le statut de la requête soit 302, |
325 | 363 |
# et à ce qu'un message informe l'utilisateur que les |
... | ... | |
373 | 411 |
}, status = 401) |
374 | 412 |
|
375 | 413 |
### 2ème cas : L'utilisateur utilisé pour |
376 |
# se connecter à Vigiboard est 'editor'.
|
|
377 |
environ = {'REMOTE_USER': 'editor'}
|
|
414 |
# se connecter à Vigiboard est 'limited_access'.
|
|
415 |
environ = {'REMOTE_USER': 'limited_access'}
|
|
378 | 416 |
|
379 | 417 |
# On s'attend à ce qu'une erreur 302 soit renvoyée, et à |
380 | 418 |
# ce qu'un message d'erreur précise à l'utilisateur qu'il |
... | ... | |
392 | 430 |
'//div[@id="flash"]/div[@class="error"]')) |
393 | 431 |
|
394 | 432 |
### 3ème cas : L'utilisateur utilisé pour |
395 |
# se connecter à Vigiboard est 'manager'.
|
|
396 |
environ = {'REMOTE_USER': 'manager'}
|
|
433 |
# se connecter à Vigiboard est 'access'.
|
|
434 |
environ = {'REMOTE_USER': 'access'}
|
|
397 | 435 |
|
398 | 436 |
# On s'attend à ce que le statut de la requête soit 302, |
399 | 437 |
# et à ce qu'un message informe l'utilisateur que les |
... | ... | |
452 | 490 |
|
453 | 491 |
transaction.commit() |
454 | 492 |
|
455 |
# L'utilisateur utilisé pour se connecter à Vigiboard est 'manager'.
|
|
456 |
environ = {'REMOTE_USER': 'manager'}
|
|
493 |
# L'utilisateur utilisé pour se connecter à Vigiboard est 'access'.
|
|
494 |
environ = {'REMOTE_USER': 'access'}
|
|
457 | 495 |
|
458 | 496 |
# On s'attend à ce que le statut de la requête soit 302, et |
459 | 497 |
# à ce qu'un message d'erreur avise l'utilisateur que des |
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 |
|
12 |
Event, CorrEvent, StateName, \ |
|
13 |
User, UserGroup, DataPermission |
|
13 | 14 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
14 | 15 |
|
15 | 16 |
def insert_deps(): |
... | ... | |
71 | 72 |
|
72 | 73 |
class TestSearchFormHost(TestController): |
73 | 74 |
"""Teste la récupération d'événements selon le nom d'hôte.""" |
75 |
def setUp(self): |
|
76 |
super(TestSearchFormHost, 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() |
|
74 | 91 |
|
75 | 92 |
def test_search_host_when_allowed(self): |
76 | 93 |
"""Teste la recherche par hôte avec les bons droits.""" |
... | ... | |
78 | 95 |
# L'hôte est rattaché à un groupe d'hôtes |
79 | 96 |
# pour lesquel l'utilisateur a les permissions. |
80 | 97 |
hostgroup = insert_deps() |
81 |
edit = Permission.by_permission_name(u'edit') |
|
82 |
edit.supitemgroups.append(hostgroup) |
|
98 |
usergroup = UserGroup.by_group_name(u'users') |
|
99 |
DBSession.add(DataPermission( |
|
100 |
group=hostgroup, |
|
101 |
usergroup=usergroup, |
|
102 |
access=u'r', |
|
103 |
)) |
|
83 | 104 |
DBSession.flush() |
84 | 105 |
transaction.commit() |
85 | 106 |
|
86 | 107 |
# On envoie une requête avec recherche sur l'hôte créé, |
87 | 108 |
# on s'attend à recevoir 1 résultat. |
88 | 109 |
response = self.app.get('/?host=bar', |
89 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
110 |
extra_environ={'REMOTE_USER': 'user'})
|
|
90 | 111 |
|
91 | 112 |
# Il doit y avoir 1 seule ligne de résultats. |
92 | 113 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
102 | 123 |
"""Teste la recherche par hôte sur un hôte inexistant.""" |
103 | 124 |
# On envoie une requête avec recherche sur un hôte |
104 | 125 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
126 |
transaction.commit() |
|
105 | 127 |
response = self.app.get('/?host=bad', |
106 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
128 |
extra_environ={'REMOTE_USER': 'user'})
|
|
107 | 129 |
|
108 | 130 |
# Il doit y avoir 1 seule ligne de résultats. |
109 | 131 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
127 | 149 |
# mais avec un utilisateur ne disposant pas des permissions adéquates. |
128 | 150 |
# On s'attend à n'obtenir aucun résultat. |
129 | 151 |
response = self.app.get('/?host=bar', |
130 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
152 |
extra_environ={'REMOTE_USER': 'user'})
|
|
131 | 153 |
|
132 | 154 |
# Il doit y avoir 1 seule ligne de résultats. |
133 | 155 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
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 |
|
12 |
Event, CorrEvent, User, UserGroup, \ |
|
13 |
DataPermission |
|
13 | 14 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
14 | 15 |
|
15 | 16 |
def insert_deps(): |
... | ... | |
71 | 72 |
|
72 | 73 |
class TestSearchFormHostGroup(TestController): |
73 | 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() |
|
74 | 91 |
|
75 | 92 |
def test_search_hostgroup_when_allowed(self): |
76 | 93 |
"""Teste la recherche par hostgroup avec les bons droits d'accès.""" |
... | ... | |
80 | 97 |
# De plus, on donne l'autorisation aux utilisateurs |
81 | 98 |
# ayant la permission 'edit' de voir cette alerte. |
82 | 99 |
hostgroup = insert_deps() |
83 |
edit = Permission.by_permission_name(u'edit') |
|
84 |
edit.supitemgroups.append(hostgroup) |
|
100 |
usergroup = UserGroup.by_group_name(u'users') |
|
101 |
DBSession.add(DataPermission( |
|
102 |
group=hostgroup, |
|
103 |
usergroup=usergroup, |
|
104 |
access=u'r', |
|
105 |
)) |
|
85 | 106 |
DBSession.flush() |
86 | 107 |
transaction.commit() |
87 | 108 |
|
88 | 109 |
# On envoie une requête avec recherche sur le groupe d'hôtes créé, |
89 | 110 |
# on s'attend à recevoir 1 résultat. |
90 | 111 |
response = self.app.get('/?supitemgroup=foo', |
91 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
112 |
extra_environ={'REMOTE_USER': 'user'})
|
|
92 | 113 |
|
93 | 114 |
# Il doit y avoir 1 seule ligne de résultats. |
94 | 115 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
104 | 125 |
"""Teste la recherche par hostgroup sur un groupe inexistant.""" |
105 | 126 |
# On envoie une requête avec recherche sur un groupe d'hôtes |
106 | 127 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
128 |
transaction.commit() |
|
107 | 129 |
response = self.app.get('/?supitemgroup=foot', |
108 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
130 |
extra_environ={'REMOTE_USER': 'user'})
|
|
109 | 131 |
|
110 | 132 |
# Il doit y avoir 1 seule ligne de résultats. |
111 | 133 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
132 | 154 |
# mais avec un utilisateur ne disposant pas des permissions adéquates. |
133 | 155 |
# On s'attend à n'obtenir aucun résultat. |
134 | 156 |
response = self.app.get('/?supitemgroup=foo', |
135 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
157 |
extra_environ={'REMOTE_USER': 'user'})
|
|
136 | 158 |
|
137 | 159 |
# Il doit y avoir 1 seule ligne de résultats. |
138 | 160 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
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 |
|
13 |
Event, CorrEvent, StateName, \ |
|
14 |
User, UserGroup, DataPermission |
|
14 | 15 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
15 | 16 |
|
16 | 17 |
def insert_deps(): |
... | ... | |
65 | 66 |
DBSession.add(correvent) |
66 | 67 |
DBSession.flush() |
67 | 68 |
|
68 |
# On attribut les permissions. |
|
69 |
manage = Permission.by_permission_name(u'manage') |
|
70 |
manage.supitemgroups.append(hostgroup) |
|
69 |
# On donne l'accès aux données. |
|
70 |
usergroup = UserGroup.by_group_name(u'users') |
|
71 |
DBSession.add(DataPermission( |
|
72 |
group=hostgroup, |
|
73 |
usergroup=usergroup, |
|
74 |
access=u'r', |
|
75 |
)) |
|
71 | 76 |
DBSession.flush() |
72 | 77 |
return timestamp |
73 | 78 |
|
74 | 79 |
|
75 | 80 |
class TestSearchFormMisc(TestController): |
76 | 81 |
"""Teste la récupération d'événements selon le nom d'hôte.""" |
82 |
def setUp(self): |
|
83 |
super(TestSearchFormMisc, 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 |
|
|
77 | 99 |
def test_search_by_output(self): |
78 | 100 |
"""Teste la recherche sur le message issu de Nagios.""" |
79 | 101 |
insert_deps() |
... | ... | |
82 | 104 |
# Permet également de vérifier que la recherche est |
83 | 105 |
# insensible à la casse. |
84 | 106 |
response = self.app.get('/?output=hello', |
85 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
107 |
extra_environ={'REMOTE_USER': 'user'})
|
|
86 | 108 |
|
87 | 109 |
# Il doit y avoir 1 seule ligne de résultats. |
88 | 110 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
102 | 124 |
# Permet également de vérifier que la recherche est |
103 | 125 |
# insensible à la casse. |
104 | 126 |
response = self.app.get('/?trouble_ticket=bar', |
105 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
127 |
extra_environ={'REMOTE_USER': 'user'})
|
|
106 | 128 |
transaction.commit() |
107 | 129 |
|
108 | 130 |
# Il doit y avoir 1 seule ligne de résultats. |
... | ... | |
135 | 157 |
'from_date': from_date, |
136 | 158 |
'to_date': to_date, |
137 | 159 |
}, |
138 |
extra_environ={'REMOTE_USER': 'manager'})
|
|
160 |
extra_environ={'REMOTE_USER': 'user'})
|
|
139 | 161 |
transaction.commit() |
140 | 162 |
|
141 | 163 |
# Il doit y avoir 1 seule ligne de résultats. |
vigiboard/tests/functional/test_search_form_service.py | ||
---|---|---|
10 | 10 |
from vigilo.models.session import DBSession |
11 | 11 |
from vigilo.models.tables import SupItemGroup, Host, Permission, \ |
12 | 12 |
StateName, LowLevelService, \ |
13 |
Event, CorrEvent |
|
13 |
Event, CorrEvent, User, UserGroup, \ |
|
14 |
DataPermission |
|
14 | 15 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
15 | 16 |
|
16 | 17 |
def insert_deps(): |
... | ... | |
92 | 93 |
|
93 | 94 |
class TestSearchFormService(TestController): |
94 | 95 |
"""Teste la récupération d'événements selon le groupe de services.""" |
96 |
def setUp(self): |
|
97 |
super(TestSearchFormService, self).setUp() |
|
98 |
perm = Permission.by_permission_name(u'vigiboard-access') |
|
99 |
user = User( |
|
100 |
user_name=u'user', |
|
101 |
fullname=u'', |
|
102 |
email=u'some.random@us.er', |
|
103 |
) |
|
104 |
usergroup = UserGroup( |
|
105 |
group_name=u'users', |
|
106 |
) |
|
107 |
user.usergroups.append(usergroup) |
|
108 |
usergroup.permissions.append(perm) |
|
109 |
DBSession.add(user) |
|
110 |
DBSession.add(usergroup) |
|
111 |
DBSession.flush() |
|
95 | 112 |
|
96 | 113 |
def test_search_service_when_allowed_by_host(self): |
97 | 114 |
""" |
... | ... | |
103 | 120 |
# à un groupe d'hôtes pour lesquels l'utilisateur |
104 | 121 |
# a les permissions. |
105 | 122 |
hostgroup = insert_deps()[0] |
106 |
print "Adding permission for 'editor' on host group '%s'" % \ |
|
107 |
hostgroup.name |
|
108 |
edit = Permission.by_permission_name(u'edit') |
|
109 |
edit.supitemgroups.append(hostgroup) |
|
123 |
usergroup = UserGroup.by_group_name(u'users') |
|
124 |
DBSession.add(DataPermission( |
|
125 |
group=hostgroup, |
|
126 |
usergroup=usergroup, |
|
127 |
access=u'r', |
|
128 |
)) |
|
110 | 129 |
DBSession.flush() |
111 | 130 |
transaction.commit() |
112 | 131 |
|
113 | 132 |
# On envoie une requête avec recherche sur le service créé, |
114 | 133 |
# on s'attend à recevoir 1 résultat. |
115 | 134 |
response = self.app.get('/?service=baz', |
116 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
135 |
extra_environ={'REMOTE_USER': 'user'})
|
|
117 | 136 |
|
118 | 137 |
# Il doit y avoir 1 seule ligne de résultats. |
119 | 138 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
135 | 154 |
# Le service est rattaché à un groupe de services |
136 | 155 |
# pour lesquel l'utilisateur a les permissions. |
137 | 156 |
servicegroup = insert_deps()[1] |
138 |
print "Adding permission for 'editor' on service group '%s'" % \ |
|
139 |
servicegroup.name |
|
140 |
edit = Permission.by_permission_name(u'edit') |
|
141 |
edit.supitemgroups.append(servicegroup) |
|
157 |
usergroup = UserGroup.by_group_name(u'users') |
|
158 |
DBSession.add(DataPermission( |
|
159 |
group=servicegroup, |
|
160 |
usergroup=usergroup, |
|
161 |
access=u'r', |
|
162 |
)) |
|
142 | 163 |
DBSession.flush() |
143 | 164 |
transaction.commit() |
144 | 165 |
|
145 | 166 |
# On envoie une requête avec recherche sur le service créé, |
146 | 167 |
# on s'attend à recevoir 1 résultat. |
147 | 168 |
response = self.app.get('/?service=baz', |
148 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
169 |
extra_environ={'REMOTE_USER': 'user'})
|
|
149 | 170 |
|
150 | 171 |
# Il doit y avoir 1 seule ligne de résultats. |
151 | 172 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
159 | 180 |
|
160 | 181 |
def test_search_inexistent_service(self): |
161 | 182 |
"""Teste la recherche par service sur un service inexistant.""" |
183 |
transaction.commit() |
|
162 | 184 |
# On envoie une requête avec recherche sur un service |
163 | 185 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
164 | 186 |
response = self.app.get('/?service=bad', |
165 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
187 |
extra_environ={'REMOTE_USER': 'user'})
|
|
166 | 188 |
|
167 | 189 |
# Il doit y avoir 1 seule ligne de résultats. |
168 | 190 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
185 | 207 |
# mais avec un utilisateur ne disposant pas des permissions adéquates. |
186 | 208 |
# On s'attend à n'obtenir aucun résultat. |
187 | 209 |
response = self.app.get('/?service=baz', |
188 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
210 |
extra_environ={'REMOTE_USER': 'user'})
|
|
189 | 211 |
|
190 | 212 |
# Il doit y avoir 1 seule ligne de résultats. |
191 | 213 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
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 |
|
12 |
LowLevelService, CorrEvent, StateName, \ |
|
13 |
User, UserGroup, DataPermission |
|
13 | 14 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
14 | 15 |
|
15 | 16 |
def insert_deps(): |
... | ... | |
78 | 79 |
|
79 | 80 |
class TestSearchFormServiceGroup(TestController): |
80 | 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() |
|
81 | 98 |
|
82 | 99 |
def test_search_servicegroup_when_allowed(self): |
83 | 100 |
"""Teste la recherche par servicegroup avec les bons droits d'accès.""" |
... | ... | |
87 | 104 |
# De plus, on donne l'autorisation aux utilisateurs |
88 | 105 |
# ayant la permission 'edit' de voir cette alerte. |
89 | 106 |
servicegroup = insert_deps() |
90 |
edit = Permission.by_permission_name(u'edit') |
|
91 |
edit.supitemgroups.append(servicegroup) |
|
107 |
usergroup = UserGroup.by_group_name(u'users') |
|
108 |
DBSession.add(DataPermission( |
|
109 |
group=servicegroup, |
|
110 |
usergroup=usergroup, |
|
111 |
access=u'r', |
|
112 |
)) |
|
92 | 113 |
DBSession.flush() |
93 | 114 |
transaction.commit() |
94 | 115 |
|
95 | 116 |
# On envoie une requête avec recherche sur le groupe |
96 | 117 |
# de services créé, on s'attend à recevoir 1 résultat. |
97 | 118 |
response = self.app.get('/?supitemgroup=foo', |
98 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
119 |
extra_environ={'REMOTE_USER': 'user'})
|
|
99 | 120 |
|
100 | 121 |
# Il doit y avoir 1 seule ligne de résultats. |
101 | 122 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
109 | 130 |
|
110 | 131 |
def test_search_inexistent_servicegroup(self): |
111 | 132 |
"""Teste la recherche par servicegroup sur un groupe inexistant.""" |
133 |
transaction.commit() |
|
112 | 134 |
# On envoie une requête avec recherche sur un groupe de services |
113 | 135 |
# qui n'existe pas, on s'attend à n'obtenir aucun résultat. |
114 | 136 |
response = self.app.get('/?supitemgroup=foot', |
115 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
137 |
extra_environ={'REMOTE_USER': 'user'})
|
|
116 | 138 |
|
117 | 139 |
# Il doit y avoir 1 seule ligne de résultats. |
118 | 140 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
... | ... | |
139 | 161 |
# services créé, mais avec un utilisateur ne disposant pas des |
140 | 162 |
# permissions adéquates. On s'attend à n'obtenir aucun résultat. |
141 | 163 |
response = self.app.get('/?supitemgroup=foo', |
142 |
extra_environ={'REMOTE_USER': 'editor'})
|
|
164 |
extra_environ={'REMOTE_USER': 'user'})
|
|
143 | 165 |
|
144 | 166 |
# Il doit y avoir 1 seule ligne de résultats. |
145 | 167 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
vigiboard/tests/functional/test_userutils.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4: |
|
3 |
""" |
|
4 |
Teste l'héritage des permissions sur les groupes d'hôtes/services. |
|
5 |
""" |
|
6 |
import transaction |
|
7 |
from nose.tools import assert_true |
|
8 |
|
|
9 |
from vigilo.models.session import DBSession |
|
10 |
from vigilo.models.tables import SupItemGroup, Permission, User |
|
11 |
from vigilo.models.tables.grouphierarchy import GroupHierarchy |
|
12 |
from vigiboard.tests import TestController |
|
13 |
|
|
14 |
class TestGroupPermissionsInheritance(TestController): |
|
15 |
"""Test retrieval of groups of hosts/services.""" |
|
16 |
def test_groups_inheritance(self): |
|
17 |
""" |
|
18 |
S'assure que les groupes sont correctement hérités. |
|
19 |
""" |
|
20 |
|
|
21 |
# Création de 2 groupes d'utilisateurs. |
|
22 |
hosteditors = SupItemGroup(name=u'hosteditors') |
|
23 |
DBSession.add(hosteditors) |
|
24 |
|
|
25 |
hostmanagers = SupItemGroup(name=u'hostmanagers') |
|
26 |
DBSession.add(hostmanagers) |
|
27 |
|
|
28 |
# Hiérarchie des groupes. |
|
29 |
DBSession.add(GroupHierarchy( |
|
30 |
parent=hosteditors, |
|
31 |
child=hosteditors, |
|
32 |
hops=0, |
|
33 |
)) |
|
34 |
DBSession.add(GroupHierarchy( |
|
35 |
parent=hostmanagers, |
|
36 |
child=hostmanagers, |
|
37 |
hops=0, |
|
38 |
)) |
|
39 |
DBSession.add(GroupHierarchy( |
|
40 |
parent=hostmanagers, |
|
41 |
child=hosteditors, |
|
42 |
hops=1, |
|
43 |
)) |
|
44 |
|
|
45 |
# L'attribution des permissions. |
|
46 |
manage_perm = Permission.by_permission_name(u'manage') |
|
47 |
edit_perm = Permission.by_permission_name(u'edit') |
|
48 |
|
|
49 |
manage_perm.supitemgroups.append(hostmanagers) |
|
50 |
edit_perm.supitemgroups.append(hosteditors) |
|
51 |
DBSession.flush() |
|
52 |
transaction.commit() |
|
53 |
|
|
54 |
# On obtient les variables de session comme si on était loggué |
|
55 |
# en tant que manager. |
|
56 |
environ = {'REMOTE_USER': 'manager'} |
|
57 |
response = self.app.get('/', extra_environ=environ) |
|
58 |
|
|
59 |
# On récupère la liste des groups auxquels l'utilisateur appartient. |
|
60 |
username = response.request.environ \ |
|
61 |
['repoze.who.identity'] \ |
|
62 |
['repoze.who.userid'] |
|
63 |
grp = User.by_user_name(username).supitemgroups() |
|
64 |
|
|
65 |
# Permet de rafraîchir les instances. |
|
66 |
hostmanagers = DBSession.query(SupItemGroup).filter( |
|
67 |
SupItemGroup.name==u'hostmanagers').one() |
|
68 |
hosteditors = DBSession.query(SupItemGroup).filter( |
|
69 |
SupItemGroup.name==u'hosteditors').one() |
|
70 |
|
|
71 |
# On vérifie que la liste est correcte : le manager doit avoir accès |
|
72 |
# aux groupes 'hostmanagers' & 'hosteditors' (dont il hérite). |
|
73 |
assert_true(hostmanagers.idgroup in grp and |
|
74 |
hosteditors.idgroup in grp, |
|
75 |
msg = "il est dans %s" % grp) |
|
76 |
|
|
77 |
# On recommence avec l'utilisateur editor. |
|
78 |
environ = {'REMOTE_USER': 'editor'} |
|
79 |
response = self.app.get('/', extra_environ=environ) |
|
80 |
|
|
81 |
username = response.request.environ \ |
|
82 |
['repoze.who.identity'] \ |
|
83 |
['repoze.who.userid'] |
|
84 |
grp = User.by_user_name(username).supitemgroups(False) |
Also available in: Unified diff