Project

General

Profile

Revision 0bd9c069

ID0bd9c06917b20932fbfd6f30384dd5018c50f3e6
Parent 6f6efdcd
Child 6707e733

Added by Francois POIROTTE about 13 years ago

Retrait des modifications liées à la fusion de la branche nested_sets du trunk (révisions r6116, r6121 et r6129).
Le nouveau mécanisme nécessite encore des ajustements pour être utilisable.

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

View differences:

vigiboard/tests/functional/test_root.py
18 18
from vigilo.models.session import DBSession
19 19
from vigilo.models.tables import Event, EventHistory, CorrEvent, User, \
20 20
                            Permission, StateName, Host, UserGroup, \
21
                            LowLevelService, DataPermission
22
from vigilo.models.demo.functions import *
21
                            SupItemGroup, LowLevelService, DataPermission
23 22
from vigiboard.tests import TestController
24 23

  
25 24
def populate_DB():
26 25
    """ Peuple la base de données. """
27 26
    # On ajoute un groupe d'hôtes et un groupe de services.
28
    supitemmanagers = add_supitemgroup('managersgroup')
27
    supitemmanagers = SupItemGroup(name = u'managersgroup')
29 28
    DBSession.add(supitemmanagers)
30 29
    DBSession.flush()
31 30

  
......
39 38

  
40 39
    # On crée un 2 hôtes, et on les ajoute au groupe d'hôtes.
41 40
    host1 = Host(
42
        name = u'host1',
41
        name = u'host1',      
43 42
        checkhostcmd = u'halt',
44 43
        snmpcommunity = u'public',
45 44
        hosttpl = u'/dev/null',
......
50 49
    DBSession.add(host1)
51 50
    supitemmanagers.supitems.append(host1)
52 51
    host2 = Host(
53
        name = u'host2',
52
        name = u'host2',      
54 53
        checkhostcmd = u'halt',
55 54
        snmpcommunity = u'public',
56 55
        hosttpl = u'/dev/null',
......
80 79
    DBSession.add(service2)
81 80
    supitemmanagers.supitems.append(service2)
82 81
    DBSession.flush()
83

  
82
    
84 83
    return ([host1, host2], [service1, service2])
85 84

  
86 85
def add_correvent_caused_by(supitem, timestamp,
87 86
        correvent_status=u"None", event_status=u"WARNING"):
88 87
    """
89
    Ajoute dans la base de données un évènement corrélé causé
88
    Ajoute dans la base de données un évènement corrélé causé 
90 89
    par un incident survenu sur l'item passé en paramètre.
91 90
    Génère un historique pour les tests.
92 91
    """
93 92

  
94 93
    # Ajout d'un événement
95 94
    event = Event(
96
        supitem = supitem,
95
        supitem = supitem, 
97 96
        message = u'foo',
98 97
        current_state = StateName.statename_to_value(event_status),
99 98
        timestamp = datetime.now(),
......
103 102

  
104 103
    # Ajout d'un événement corrélé
105 104
    aggregate = CorrEvent(
106
        idcause = event.idevent,
105
        idcause = event.idevent, 
107 106
        timestamp_active = timestamp,
108 107
        priority = 1,
109 108
        status = correvent_status)
110 109
    aggregate.events.append(event)
111 110
    DBSession.add(aggregate)
112 111
    DBSession.flush()
113

  
112
    
114 113
    return aggregate.idcorrevent
115 114

  
116 115

  
......
164 163
        # On peuple la BDD avec 2 hôtes, 2 services de bas niveau,
165 164
        # et un groupe d'hôtes et de services associés à ces items.
166 165
        (hosts, services) = populate_DB()
167

  
166
        
168 167
        # On ajoute 2 évènements corrélés causés par ces hôtes
169 168
        timestamp = datetime.now()
170 169
        correvent1_id = add_correvent_caused_by(hosts[0], timestamp)
171 170
        correvent2_id = add_correvent_caused_by(hosts[1], timestamp)
172 171
        transaction.commit()
173

  
172
        
174 173
        ### 1er cas : L'utilisateur n'est pas connecté.
175 174
        # On vérifie que le plugin retourne bien une erreur 401.
176 175
        response = self.app.post(
......
180 179
                "trouble_ticket" : u"foo",
181 180
                "ack" : u'NoChange',
182 181
            }, status = 401)
183

  
182
        
184 183
        ### 2ème cas : L'utilisateur utilisé pour
185 184
        # se connecter à Vigiboard est 'limited_access'.
186 185
        environ = {'REMOTE_USER': 'limited_access'}
187

  
186
        
188 187
        # On s'attend à ce qu'une erreur 302 soit renvoyée, et à
189 188
        # ce qu'un message d'erreur précise à l'utilisateur qu'il
190 189
        # n'a pas la permission de modifier ces évènements.
......
195 194
                "trouble_ticket" : u"foo",
196 195
                "last_modification": mktime(timestamp.timetuple()),
197 196
            }, status = 302, extra_environ = environ)
198

  
197
        
199 198
        response = response.follow(status=200, extra_environ = environ)
200 199
        assert_true(response.lxml.xpath(
201 200
            '//div[@id="flash"]/div[@class="error"]'))
......
203 202
        ### 3ème cas : L'utilisateur utilisé pour
204 203
        # se connecter à Vigiboard est 'access'.
205 204
        environ = {'REMOTE_USER': 'access'}
206

  
205
        
207 206
        # On s'attend à ce que le statut de la requête soit 302,
208 207
        # et à ce qu'un message informe l'utilisateur que les
209 208
        # évènements corrélés sélectionnées ont bien été mis à jour.
......
214 213
                "trouble_ticket" : u"foo",
215 214
                "ack" : u'NoChange',
216 215
            }, status = 302, extra_environ = environ)
217

  
216
        
218 217
        response = response.follow(status=200, extra_environ = environ)
219 218
        assert_false(response.lxml.xpath(
220 219
            '//div[@id="flash"]/div[@class="error"]'))
221 220
        assert_true(response.lxml.xpath(
222 221
            '//div[@id="flash"]/div[@class="ok"]'))
223

  
222
        
224 223
        # On s'assure que le ticket de l'évènement corrélé
225 224
        # a bien été mis à jour dans la base de données.
226 225
        correvents = DBSession.query(
227 226
            CorrEvent.trouble_ticket
228 227
            ).filter(CorrEvent.idcorrevent.in_([correvent1_id, correvent2_id])
229 228
            ).all()
230

  
229
        
231 230
        assert_equal(correvents[0].trouble_ticket, u"foo")
232 231
        assert_equal(correvents[1].trouble_ticket, u"foo")
233 232

  
......
237 236
        # On peuple la BDD avec 2 hôtes, 2 services de bas niveau,
238 237
        # et un groupe d'hôtes et de services associés à ces items.
239 238
        (hosts, services) = populate_DB()
240

  
239
        
241 240
        # On ajoute 2 évènements corrélés causés par ces hôtes
242 241
        timestamp = datetime.now()
243 242
        correvent1_id = add_correvent_caused_by(services[0], timestamp)
244 243
        correvent2_id = add_correvent_caused_by(services[1], timestamp)
245

  
244
        
246 245
        transaction.commit()
247

  
246
        
248 247
        ### 1er cas : L'utilisateur n'est pas connecté.
249 248
        # On vérifie que le plugin retourne bien une erreur 401.
250 249
        response = self.app.post(
......
254 253
                "trouble_ticket" : u"foo",
255 254
                "ack" : u'NoChange',
256 255
            }, status = 401)
257

  
256
        
258 257
        ### 2ème cas : L'utilisateur utilisé pour
259 258
        # se connecter à Vigiboard est 'limited_access'.
260 259
        environ = {'REMOTE_USER': 'limited_access'}
261

  
260
        
262 261
        # On s'attend à ce qu'une erreur 302 soit renvoyée, et à
263 262
        # ce qu'un message d'erreur précise à l'utilisateur qu'il
264 263
        # n'a pas la permission de modifier ces évènements.
......
269 268
                "trouble_ticket" : u"foo",
270 269
                "ack" : u'NoChange',
271 270
            }, status = 302, extra_environ = environ)
272

  
271
        
273 272
        response = response.follow(status=200, extra_environ = environ)
274 273
        assert_true(response.lxml.xpath(
275 274
            '//div[@id="flash"]/div[@class="error"]'))
......
277 276
        ### 3ème cas : L'utilisateur utilisé pour
278 277
        # se connecter à Vigiboard est 'access'.
279 278
        environ = {'REMOTE_USER': 'access'}
280

  
279
        
281 280
        # On s'attend à ce que le statut de la requête soit 302,
282 281
        # et à ce qu'un message informe l'utilisateur que les
283 282
        # évènements corrélés sélectionnées ont bien été mis à jour.
......
288 287
                "trouble_ticket" : u"foo",
289 288
                "ack" : u'NoChange',
290 289
            }, status = 302, extra_environ = environ)
291

  
290
        
292 291
        response = response.follow(status=200, extra_environ = environ)
293 292
        assert_false(response.lxml.xpath(
294 293
            '//div[@id="flash"]/div[@class="error"]'))
295 294
        assert_true(response.lxml.xpath(
296 295
            '//div[@id="flash"]/div[@class="ok"]'))
297

  
296
        
298 297
        # On s'assure que le ticket de l'évènement corrélé
299 298
        # a bien été mis à jour dans la base de données.
300 299
        correvents = DBSession.query(
......
310 309
        # On peuple la BDD avec 2 hôtes, 2 services de bas niveau,
311 310
        # et un groupe d'hôtes et de services associés à ces items.
312 311
        (hosts, services) = populate_DB()
313

  
312
        
314 313
        # On ajoute 2 évènements corrélés causés par ces hôtes
315 314
        timestamp = datetime.now()
316 315
        correvent1_id = add_correvent_caused_by(hosts[0], timestamp)
317 316
        correvent2_id = add_correvent_caused_by(hosts[1], timestamp)
318 317
        transaction.commit()
319

  
318
        
320 319
        ### 1er cas : L'utilisateur n'est pas connecté.
321 320
        # On vérifie que le plugin retourne bien une erreur 401.
322 321
        response = self.app.post(
......
326 325
                "trouble_ticket" : "",
327 326
                "ack" : u'Acknowledged',
328 327
            }, status = 401)
329

  
328
        
330 329
        ### 2ème cas : L'utilisateur utilisé pour
331 330
        # se connecter à Vigiboard est 'limited_access'.
332 331
        environ = {'REMOTE_USER': 'limited_access'}
333

  
332
        
334 333
        # On s'attend à ce qu'une erreur 302 soit renvoyée, et à
335 334
        # ce qu'un message d'erreur précise à l'utilisateur qu'il
336 335
        # n'a pas la permission de modifier ces évènements.
......
341 340
                "trouble_ticket" : "",
342 341
                "ack" : u'Acknowledged',
343 342
            }, status = 302, extra_environ = environ)
344

  
343
        
345 344
        response = response.follow(status=200, extra_environ = environ)
346 345
        assert_true(response.lxml.xpath(
347 346
            '//div[@id="flash"]/div[@class="error"]'))
......
349 348
        ### 3ème cas : L'utilisateur utilisé pour
350 349
        # se connecter à Vigiboard est 'access'.
351 350
        environ = {'REMOTE_USER': 'access'}
352

  
351
        
353 352
        # On s'attend à ce que le statut de la requête soit 302,
354 353
        # et à ce qu'un message informe l'utilisateur que les
355 354
        # évènements corrélés sélectionnées ont bien été mis à jour.
......
360 359
                "trouble_ticket" : "",
361 360
                "ack" : u'Acknowledged',
362 361
            }, status = 302, extra_environ = environ)
363

  
362
        
364 363
        response = response.follow(status=200, extra_environ = environ)
365 364
        assert_false(response.lxml.xpath(
366 365
            '//div[@id="flash"]/div[@class="error"]'))
367 366
        assert_true(response.lxml.xpath(
368 367
            '//div[@id="flash"]/div[@class="ok"]'))
369

  
368
        
370 369
        # On s'assure que le statut de l'évènement corrélé
371 370
        # a bien été mis à jour dans la base de données.
372 371
        correvents = DBSession.query(
......
383 382
        # On peuple la BDD avec 2 hôtes, 2 services de bas niveau,
384 383
        # et un groupe d'hôtes et de services associés à ces items.
385 384
        (hosts, services) = populate_DB()
386

  
385
        
387 386
        # On ajoute 2 évènements corrélés causés par ces hôtes
388 387
        timestamp = datetime.now()
389 388
        correvent1_id = add_correvent_caused_by(services[0], timestamp)
390 389
        correvent2_id = add_correvent_caused_by(services[1], timestamp)
391

  
390
        
392 391
        transaction.commit()
393

  
392
        
394 393
        ### 1er cas : L'utilisateur n'est pas connecté.
395 394
        # On vérifie que le plugin retourne bien une erreur 401.
396 395
        response = self.app.post(
......
400 399
                "trouble_ticket" : "",
401 400
                "ack" : u'Acknowledged',
402 401
            }, status = 401)
403

  
402
        
404 403
        ### 2ème cas : L'utilisateur utilisé pour
405 404
        # se connecter à Vigiboard est 'limited_access'.
406 405
        environ = {'REMOTE_USER': 'limited_access'}
407

  
406
        
408 407
        # On s'attend à ce qu'une erreur 302 soit renvoyée, et à
409 408
        # ce qu'un message d'erreur précise à l'utilisateur qu'il
410 409
        # n'a pas la permission de modifier ces évènements.
......
415 414
                "trouble_ticket" : "",
416 415
                "ack" : u'Acknowledged',
417 416
            }, status = 302, extra_environ = environ)
418

  
417
        
419 418
        response = response.follow(status=200, extra_environ = environ)
420 419
        assert_true(response.lxml.xpath(
421 420
            '//div[@id="flash"]/div[@class="error"]'))
......
423 422
        ### 3ème cas : L'utilisateur utilisé pour
424 423
        # se connecter à Vigiboard est 'access'.
425 424
        environ = {'REMOTE_USER': 'access'}
426

  
425
        
427 426
        # On s'attend à ce que le statut de la requête soit 302,
428 427
        # et à ce qu'un message informe l'utilisateur que les
429 428
        # évènements corrélés sélectionnées ont bien été mis à jour.
......
434 433
                "trouble_ticket" : "",
435 434
                "ack" : u'Acknowledged',
436 435
            }, status = 302, extra_environ = environ)
437

  
436
        
438 437
        response = response.follow(status=200, extra_environ = environ)
439 438
        assert_false(response.lxml.xpath(
440 439
            '//div[@id="flash"]/div[@class="error"]'))
441 440
        assert_true(response.lxml.xpath(
442 441
            '//div[@id="flash"]/div[@class="ok"]'))
443

  
442
        
444 443
        # On s'assure que le statut de l'évènement corrélé
445 444
        # a bien été mis à jour dans la base de données.
446 445
        correvents = DBSession.query(
......
456 455
        # On peuple la BDD avec 2 hôtes, 2 services de bas niveau,
457 456
        # et un groupe d'hôtes et de services associés à ces items.
458 457
        (hosts, services) = populate_DB()
459

  
458
        
460 459
        # On ajoute 2 évènements corrélés causés par ces hôtes
461 460
        timestamp = datetime.now()
462 461
        correvent1_id = add_correvent_caused_by(services[0], timestamp)
463 462
        correvent2_id = add_correvent_caused_by(services[1], timestamp)
464

  
465
        # Date de modification du premier évènement corrélé
463
        
464
        # Date de modification du premier évènement corrélé 
466 465
        later_date = datetime.now()
467 466
        # Date du chargement de la page
468 467
        date = mktime(later_date.timetuple()) - 42
469

  
468
        
470 469
        # On ajoute une entrée dans l'historique de l'évènement brut
471 470
        # causant le premier évènement corrélé, portant pour timestamp
472 471
        # une date postérieure à celle du chargement de la page.
......
478 477
            idevent = correvent1.idcause,
479 478
            timestamp = later_date))
480 479
        DBSession.flush()
481

  
480
        
482 481
        transaction.commit()
483

  
482
        
484 483
        # L'utilisateur utilisé pour se connecter à Vigiboard est 'access'.
485 484
        environ = {'REMOTE_USER': 'access'}
486

  
485
        
487 486
        # On s'attend à ce que le statut de la requête soit 302, et
488 487
        # à ce qu'un message d'erreur avise l'utilisateur que des
489 488
        # changements sont intervenus depuis le chargement de la page.
......
494 493
                "trouble_ticket" : "",
495 494
                "ack" : u'Acknowledged',
496 495
            }, status = 302, extra_environ = environ)
497

  
496
        
498 497
        response = response.follow(status=200, extra_environ = environ)
499 498
        assert_true(response.lxml.xpath(
500 499
            '//div[@id="flash"]/div[@class="warning"]'))
501

  
500
        
502 501
        # On s'assure que le statut de l'évènement corrélé
503 502
        # n'a pas été modifié dans la base de données.
504 503
        status = DBSession.query(
......
506 505
            ).filter(CorrEvent.idcorrevent == correvent1_id
507 506
            ).scalar()
508 507
        assert_equal(status, u'None')
508

  

Also available in: Unified diff