44 * you may not use this file except in compliance with the Elastic License.
55 */
66
7- import uuid from 'uuid' ;
87import { times } from 'lodash' ;
98import expect from '@kbn/expect' ;
109import { FtrProviderContext } from '../../ftr_provider_context' ;
11-
12- function generateUniqueKey ( ) {
13- return uuid . v4 ( ) . replace ( / - / g, '' ) ;
14- }
10+ import { ObjectRemover } from '../../lib/object_remover' ;
11+ import { generateUniqueKey , getTestAlertData , getTestActionData } from '../../lib/get_test_data' ;
1512
1613export default ( { getPageObjects, getService } : FtrProviderContext ) => {
17- const alerting = getService ( 'alerting' ) ;
1814 const testSubjects = getService ( 'testSubjects' ) ;
1915 const find = getService ( 'find' ) ;
2016 const pageObjects = getPageObjects ( [ 'common' , 'triggersActionsUI' , 'header' ] ) ;
2117 const supertest = getService ( 'supertest' ) ;
2218 const retry = getService ( 'retry' ) ;
19+ const objectRemover = new ObjectRemover ( supertest ) ;
2320
24- async function deleteAlerts ( alertIds : string [ ] ) {
25- alertIds . forEach ( async ( alertId : string ) => {
26- await supertest . delete ( `/api/alerts/alert/${ alertId } ` ) . set ( 'kbn-xsrf' , 'foo' ) . expect ( 204 , '' ) ;
27- } ) ;
28- }
29-
30- async function createAlert ( overwrites : Record < string , any > = { } ) {
21+ async function createAlertManualCleanup ( overwrites : Record < string , any > = { } ) {
3122 const { body : createdAlert } = await supertest
3223 . post ( `/api/alerts/alert` )
3324 . set ( 'kbn-xsrf' , 'foo' )
34- . send ( {
35- enabled : true ,
36- name : generateUniqueKey ( ) ,
37- tags : [ 'foo' , 'bar' ] ,
38- alertTypeId : 'test.noop' ,
39- consumer : 'alerts' ,
40- schedule : { interval : '1m' } ,
41- throttle : '1m' ,
42- actions : [ ] ,
43- params : { } ,
44- ...overwrites ,
45- } )
25+ . send ( getTestAlertData ( overwrites ) )
4626 . expect ( 200 ) ;
4727 return createdAlert ;
4828 }
4929
50- async function createFailingAlert ( overwrites : Record < string , any > = { } ) {
51- const { body : createdAlert } = await supertest
52- . post ( `/api/alerts/alert` )
30+ async function createFailingAlert ( ) {
31+ return await createAlert ( {
32+ alertTypeId : 'test.failing' ,
33+ schedule : { interval : '30s' } ,
34+ } ) ;
35+ }
36+
37+ async function createAlert ( overwrites : Record < string , any > = { } ) {
38+ const createdAlert = await createAlertManualCleanup ( overwrites ) ;
39+ objectRemover . add ( createdAlert . id , 'alert' , 'alerts' ) ;
40+ return createdAlert ;
41+ }
42+
43+ async function createAction ( overwrites : Record < string , any > = { } ) {
44+ const { body : createdAction } = await supertest
45+ . post ( `/api/actions/action` )
5346 . set ( 'kbn-xsrf' , 'foo' )
54- . send ( {
55- enabled : true ,
56- name : generateUniqueKey ( ) ,
57- tags : [ 'foo' , 'bar' ] ,
58- alertTypeId : 'test.failing' ,
59- consumer : 'alerts' ,
60- schedule : { interval : '30s' } ,
61- throttle : '1m' ,
62- actions : [ ] ,
63- params : { } ,
64- ...overwrites ,
65- } )
47+ . send ( getTestActionData ( overwrites ) )
6648 . expect ( 200 ) ;
67- return createdAlert ;
49+ objectRemover . add ( createdAction . id , 'action' , 'actions' ) ;
50+ return createdAction ;
6851 }
6952
7053 async function refreshAlertsList ( ) {
@@ -77,11 +60,15 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
7760 await testSubjects . click ( 'alertsTab' ) ;
7861 } ) ;
7962
63+ afterEach ( async ( ) => {
64+ await objectRemover . removeAll ( ) ;
65+ } ) ;
66+
8067 it ( 'should display alerts in alphabetical order' , async ( ) => {
8168 const uniqueKey = generateUniqueKey ( ) ;
82- const a = await createAlert ( { name : 'b' , tags : [ uniqueKey ] } ) ;
83- const b = await createAlert ( { name : 'c' , tags : [ uniqueKey ] } ) ;
84- const c = await createAlert ( { name : 'a' , tags : [ uniqueKey ] } ) ;
69+ await createAlert ( { name : 'b' , tags : [ uniqueKey ] } ) ;
70+ await createAlert ( { name : 'c' , tags : [ uniqueKey ] } ) ;
71+ await createAlert ( { name : 'a' , tags : [ uniqueKey ] } ) ;
8572 await refreshAlertsList ( ) ;
8673 await pageObjects . triggersActionsUI . searchAlerts ( uniqueKey ) ;
8774
@@ -90,8 +77,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
9077 expect ( searchResults [ 0 ] . name ) . to . eql ( 'a' ) ;
9178 expect ( searchResults [ 1 ] . name ) . to . eql ( 'b' ) ;
9279 expect ( searchResults [ 2 ] . name ) . to . eql ( 'c' ) ;
93-
94- await deleteAlerts ( [ a . id , b . id , c . id ] ) ;
9580 } ) ;
9681
9782 it ( 'should search for alert' , async ( ) => {
@@ -108,7 +93,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
10893 interval : '1m' ,
10994 } ,
11095 ] ) ;
111- await deleteAlerts ( [ createdAlert . id ] ) ;
11296 } ) ;
11397
11498 it ( 'should search for tags' , async ( ) => {
@@ -125,16 +109,14 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
125109 interval : '1m' ,
126110 } ,
127111 ] ) ;
128- await deleteAlerts ( [ createdAlert . id ] ) ;
129112 } ) ;
130113
131114 it ( 'should display an empty list when search did not return any alerts' , async ( ) => {
132- const createdAlert = await createAlert ( ) ;
115+ await createAlert ( ) ;
133116 await refreshAlertsList ( ) ;
134117 await pageObjects . triggersActionsUI . searchAlerts ( `An Alert That For Sure Doesn't Exist!` ) ;
135118
136119 expect ( await pageObjects . triggersActionsUI . isAlertsListDisplayed ( ) ) . to . eql ( true ) ;
137- await deleteAlerts ( [ createdAlert . id ] ) ;
138120 } ) ;
139121
140122 it ( 'should disable single alert' , async ( ) => {
@@ -153,7 +135,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
153135 const disableSwitchAfterDisable = await testSubjects . find ( 'disableSwitch' ) ;
154136 const isChecked = await disableSwitchAfterDisable . getAttribute ( 'aria-checked' ) ;
155137 expect ( isChecked ) . to . eql ( 'true' ) ;
156- await deleteAlerts ( [ createdAlert . id ] ) ;
157138 } ) ;
158139
159140 it ( 'should re-enable single alert' , async ( ) => {
@@ -178,7 +159,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
178159 const disableSwitchAfterReEnable = await testSubjects . find ( 'disableSwitch' ) ;
179160 const isChecked = await disableSwitchAfterReEnable . getAttribute ( 'aria-checked' ) ;
180161 expect ( isChecked ) . to . eql ( 'false' ) ;
181- await deleteAlerts ( [ createdAlert . id ] ) ;
182162 } ) ;
183163
184164 it ( 'should mute single alert' , async ( ) => {
@@ -197,7 +177,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
197177 const muteSwitchAfterMute = await testSubjects . find ( 'muteSwitch' ) ;
198178 const isChecked = await muteSwitchAfterMute . getAttribute ( 'aria-checked' ) ;
199179 expect ( isChecked ) . to . eql ( 'true' ) ;
200- await deleteAlerts ( [ createdAlert . id ] ) ;
201180 } ) ;
202181
203182 it ( 'should unmute single alert' , async ( ) => {
@@ -222,12 +201,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
222201 const muteSwitchAfterUnmute = await testSubjects . find ( 'muteSwitch' ) ;
223202 const isChecked = await muteSwitchAfterUnmute . getAttribute ( 'aria-checked' ) ;
224203 expect ( isChecked ) . to . eql ( 'false' ) ;
225- await deleteAlerts ( [ createdAlert . id ] ) ;
226204 } ) ;
227205
228206 it ( 'should delete single alert' , async ( ) => {
229- const firstAlert = await createAlert ( ) ;
230- const secondAlert = await createAlert ( ) ;
207+ await createAlert ( ) ;
208+ const secondAlert = await createAlertManualCleanup ( ) ;
231209 await refreshAlertsList ( ) ;
232210 await pageObjects . triggersActionsUI . searchAlerts ( secondAlert . name ) ;
233211
@@ -247,7 +225,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
247225 await pageObjects . triggersActionsUI . searchAlerts ( secondAlert . name ) ;
248226 const searchResultsAfterDelete = await pageObjects . triggersActionsUI . getAlertsList ( ) ;
249227 expect ( searchResultsAfterDelete . length ) . to . eql ( 0 ) ;
250- await deleteAlerts ( [ firstAlert . id ] ) ;
251228 } ) ;
252229
253230 it ( 'should mute all selection' , async ( ) => {
@@ -271,7 +248,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
271248 const muteSwitch = await testSubjects . find ( 'muteSwitch' ) ;
272249 const isChecked = await muteSwitch . getAttribute ( 'aria-checked' ) ;
273250 expect ( isChecked ) . to . eql ( 'true' ) ;
274- await deleteAlerts ( [ createdAlert . id ] ) ;
275251 } ) ;
276252
277253 it ( 'should unmute all selection' , async ( ) => {
@@ -297,7 +273,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
297273 const muteSwitch = await testSubjects . find ( 'muteSwitch' ) ;
298274 const isChecked = await muteSwitch . getAttribute ( 'aria-checked' ) ;
299275 expect ( isChecked ) . to . eql ( 'false' ) ;
300- await deleteAlerts ( [ createdAlert . id ] ) ;
301276 } ) ;
302277
303278 it ( 'should disable all selection' , async ( ) => {
@@ -321,7 +296,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
321296 const disableSwitch = await testSubjects . find ( 'disableSwitch' ) ;
322297 const isChecked = await disableSwitch . getAttribute ( 'aria-checked' ) ;
323298 expect ( isChecked ) . to . eql ( 'true' ) ;
324- await deleteAlerts ( [ createdAlert . id ] ) ;
325299 } ) ;
326300
327301 it ( 'should enable all selection' , async ( ) => {
@@ -347,14 +321,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
347321 const disableSwitch = await testSubjects . find ( 'disableSwitch' ) ;
348322 const isChecked = await disableSwitch . getAttribute ( 'aria-checked' ) ;
349323 expect ( isChecked ) . to . eql ( 'false' ) ;
350- await deleteAlerts ( [ createdAlert . id ] ) ;
351324 } ) ;
352325
353326 it . skip ( 'should delete all selection' , async ( ) => {
354327 const namePrefix = generateUniqueKey ( ) ;
355328 let count = 0 ;
356329 const createdAlertsFirstPage = await Promise . all (
357- times ( 2 , ( ) => createAlert ( { name : `${ namePrefix } -0${ count ++ } ` } ) )
330+ times ( 2 , ( ) => createAlertManualCleanup ( { name : `${ namePrefix } -0${ count ++ } ` } ) )
358331 ) ;
359332 await refreshAlertsList ( ) ;
360333 await pageObjects . triggersActionsUI . searchAlerts ( namePrefix ) ;
@@ -381,30 +354,28 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
381354 } ) ;
382355
383356 it ( 'should filter alerts by the status' , async ( ) => {
384- const createdAlert = await createAlert ( ) ;
385- const failinfAlert = await createFailingAlert ( ) ;
357+ await createAlert ( ) ;
358+ const failingAlert = await createFailingAlert ( ) ;
386359 // initialy alert get Pending status, so we need to retry refresh list logic to get the post execution statuses
387360 await retry . try ( async ( ) => {
388361 await refreshAlertsList ( ) ;
389362 const refreshResults = await pageObjects . triggersActionsUI . getAlertsListWithStatus ( ) ;
390- expect ( refreshResults . map ( ( item ) => item . status ) . sort ( ) ) . to . eql ( [ 'Error' , 'Ok' ] ) ;
363+ expect ( refreshResults . map ( ( item : any ) => item . status ) . sort ( ) ) . to . eql ( [ 'Error' , 'Ok' ] ) ;
391364 } ) ;
392365 await testSubjects . click ( 'alertStatusFilterButton' ) ;
393366 await testSubjects . click ( 'alertStatuserrorFilerOption' ) ; // select Error status filter
394367 await retry . try ( async ( ) => {
395368 const filterErrorOnlyResults = await pageObjects . triggersActionsUI . getAlertsListWithStatus ( ) ;
396369 expect ( filterErrorOnlyResults ) . to . eql ( [
397370 {
398- name : failinfAlert . name ,
371+ name : failingAlert . name ,
399372 tagsText : 'foo, bar' ,
400373 alertType : 'Test: Failing' ,
401374 interval : '30s' ,
402375 status : 'Error' ,
403376 } ,
404377 ] ) ;
405378 } ) ;
406-
407- await deleteAlerts ( [ createdAlert . id , failinfAlert . id ] ) ;
408379 } ) ;
409380
410381 it ( 'should display total alerts by status and error banner only when exists alerts with status error' , async ( ) => {
@@ -428,7 +399,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
428399 ) ;
429400 expect ( alertsErrorBannerWhenNoErrors ) . to . have . length ( 0 ) ;
430401
431- const failingAlert = await createFailingAlert ( ) ;
402+ await createFailingAlert ( ) ;
432403 await retry . try ( async ( ) => {
433404 await refreshAlertsList ( ) ;
434405 const alertsErrorBannerExistErrors = await find . allByCssSelector (
@@ -450,13 +421,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
450421 expect ( await testSubjects . getVisibleText ( 'totalErrorAlertsCount' ) ) . to . be ( 'Error: 1' ) ;
451422 expect ( await testSubjects . getVisibleText ( 'totalPendingAlertsCount' ) ) . to . be ( 'Pending: 0' ) ;
452423 expect ( await testSubjects . getVisibleText ( 'totalUnknownAlertsCount' ) ) . to . be ( 'Unknown: 0' ) ;
453-
454- await deleteAlerts ( [ createdAlert . id , failingAlert . id ] ) ;
455424 } ) ;
456425
457426 it ( 'should filter alerts by the alert type' , async ( ) => {
458- const noopAlert = await createAlert ( ) ;
459- const failinfAlert = await createFailingAlert ( ) ;
427+ await createAlert ( ) ;
428+ const failingAlert = await createFailingAlert ( ) ;
460429 await refreshAlertsList ( ) ;
461430 await testSubjects . click ( 'alertTypeFilterButton' ) ;
462431 expect ( await ( await testSubjects . find ( 'alertType0Group' ) ) . getVisibleText ( ) ) . to . eql ( 'Alerts' ) ;
@@ -466,27 +435,18 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
466435 const filterFailingAlertOnlyResults = await pageObjects . triggersActionsUI . getAlertsList ( ) ;
467436 expect ( filterFailingAlertOnlyResults ) . to . eql ( [
468437 {
469- name : failinfAlert . name ,
438+ name : failingAlert . name ,
470439 tagsText : 'foo, bar' ,
471440 alertType : 'Test: Failing' ,
472441 interval : '30s' ,
473442 } ,
474443 ] ) ;
475444 } ) ;
476-
477- await deleteAlerts ( [ noopAlert . id , failinfAlert . id ] ) ;
478445 } ) ;
479446
480447 it ( 'should filter alerts by the action type' , async ( ) => {
481- const noopAlert = await createAlert ( ) ;
482- const action = await alerting . actions . createAction ( {
483- name : `slack-${ Date . now ( ) } ` ,
484- actionTypeId : '.slack' ,
485- config : { } ,
486- secrets : {
487- webhookUrl : 'https://test' ,
488- } ,
489- } ) ;
448+ await createAlert ( ) ;
449+ const action = await createAction ( ) ;
490450 const noopAlertWithAction = await createAlert ( {
491451 actions : [
492452 {
@@ -512,8 +472,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
512472 } ,
513473 ] ) ;
514474 } ) ;
515-
516- await deleteAlerts ( [ noopAlertWithAction . id , noopAlert . id ] ) ;
517475 } ) ;
518476 } ) ;
519477} ;
0 commit comments