METRON-1189 Add alert escalation to the Alerts UI (merrimanr) closes apache/metron#762
Project: http://git-wip-us.apache.org/repos/asf/metron/repo Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/cd7257e1 Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/cd7257e1 Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/cd7257e1 Branch: refs/heads/master Commit: cd7257e126752dcb5aff1c75d89948565d9dd838 Parents: e3900c4 Author: merrimanr <[email protected]> Authored: Wed Sep 27 12:31:34 2017 -0500 Committer: merrimanr <[email protected]> Committed: Wed Sep 27 12:31:34 2017 -0500 ---------------------------------------------------------------------- .../metron-alerts/alerts-server-e2e.js | 161 --- metron-interface/metron-alerts/angular-cli.json | 3 +- .../e2e/alert-details/alert-details.po.ts | 60 ++ .../alert-details-status.e2e-spec.ts | 60 ++ .../alert-status/alerts-list-status.e2e-spec.ts | 85 ++ .../e2e/alerts-list/alerts-list.e2e-spec.ts | 5 +- .../e2e/alerts-list/alerts-list.po.ts | 35 +- .../configure-table/configure-table.e2e-spec.ts | 3 + .../save-search/save-search.e2e-spec.ts | 9 +- .../metron-alerts/e2e/login/login.po.ts | 2 +- .../e2e/mock-data/alerts_ui_e2e_index.data | 338 +++++++ .../e2e/mock-data/alerts_ui_e2e_index.template | 975 +++++++++++++++++++ .../metron-alerts/e2e/mock-data/setup.sh | 19 + .../metron-alerts/e2e/mock-data/teardown.sh | 18 + .../metron-alerts/e2e/utils/e2e_util.ts | 11 + .../metron-alerts/protractor.conf.js | 6 +- .../scripts/start-server-for-e2e.sh | 4 +- .../alert-details/alert-details.component.html | 10 +- .../alert-details/alert-details.component.ts | 36 +- .../alert-details/alerts-details.module.ts | 5 +- .../alerts-list/alerts-list.component.html | 6 +- .../alerts/alerts-list/alerts-list.component.ts | 84 +- .../alerts/alerts-list/alerts-list.module.ts | 3 +- .../table-view/table-view.component.html | 2 +- .../table-view/table-view.component.ts | 49 +- .../src/app/model/patch-request.ts | 24 + .../src/app/service/alerts.service.ts | 36 + .../src/app/service/data-source.ts | 9 - .../src/app/service/search.service.ts | 17 - .../src/app/service/update.service.ts | 58 ++ .../src/app/service/workflow.service.ts | 36 - .../metron-table-pagination.component.ts | 11 +- .../src/environments/environment.e2e.ts | 21 + .../src/environments/environment.prod.ts | 3 +- .../src/environments/environment.ts | 3 +- metron-interface/metron-config/package.json | 3 +- pom.xml | 2 + 37 files changed, 1885 insertions(+), 327 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/alerts-server-e2e.js ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/alerts-server-e2e.js b/metron-interface/metron-alerts/alerts-server-e2e.js deleted file mode 100644 index f1b6410..0000000 --- a/metron-interface/metron-alerts/alerts-server-e2e.js +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env node -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -var os = require('os'); -var jsonfile = require('jsonfile'); -var bodyParser = require('body-parser'); -var app = require('express')(); -var path = require('path'); -var compression = require('compression'); -var serveStatic = require('serve-static'); -var favicon = require('serve-favicon'); -var proxy = require('http-proxy-middleware'); -var argv = require('optimist') - .demand(['p', 'r']) - .usage('Usage: alerts-server-e2e.js -p [port]') - .describe('p', 'Port to run metron alerts ui') - .describe('r', 'Url where metron rest application is available') - .argv; - -var port = argv.p; -var metronUIAddress = ''; -var ifaces = os.networkInterfaces(); -var restUrl = argv.r || argv.resturl; -var conf = { - "restapi": { - "target": restUrl, - "secure": false - } -}; - -Object.keys(ifaces).forEach(function (dev) { - ifaces[dev].forEach(function (details) { - if (details.family === 'IPv4') { - metronUIAddress += '\n'; - metronUIAddress += 'http://' + details.address + ':' + port; - } - }); -}); - -function setCustomCacheControl (res, path) { - if (serveStatic.mime.lookup(path) === 'text/html') { - res.setHeader('Cache-Control', 'public, max-age=10') - } - res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString()); -} - -var indexHTML = function(req, res){ - res.sendFile(path.resolve('dist/index.html')); -}; - -var searchResult = function(req, res){ - console.log('Serving ', req.originalUrl ,'from alert-list.json'); - jsonfile.readFile('e2e/mock-data/alert-list.json', function(err, obj) { - if(err) { - res.json({status: 'error', reason: err.toString()}); - return; - } - - var responseMap = { - total: 0, - results: obj.hits.hits - }; - - var filter = req.body.query; - - if (filter !== '*') { - filter = filter.replace(/\\/g, ''); - var lastIndex = filter.lastIndexOf(':'); - var key = filter.substr(0, lastIndex); - var value = filter.substr(lastIndex+1); - responseMap.results = obj.hits.hits.filter(function (hits) { - return hits._source[key] === value; - }); - } - - var sortField = req.body.sort && req.body.sort.length === 1 && req.body.sort[0]; - if (sortField) { - var key = Object.keys(sortField)[0]; - var order = sortField[key].order; - responseMap.results = obj.hits.hits.sort(function(o1, o2) { - if (!o1._source[key] || !o2._source[key]) { - return -1; - } - - if (typeof(o1._source[key]) === 'number' && typeof(o2._source[key]) === 'number') { - return order === 'desc' ? o2._source[key]- (o1._source[key]) : o1._source[key] - (o2._source[key]); - } else { - return order === 'desc' ? o2._source[key].localeCompare(o1._source[key]) : o1._source[key].localeCompare(o2._source[key]); - } - - }); - } - - responseMap.total = responseMap.results.length; - responseMap.results = responseMap.results.splice(req.body.from, req.body.size); - - responseMap.results.map(function (obj) { - obj.id = obj._id; - obj.source = obj._source; - }); - - res.json(responseMap); - }); -}; - -var clusterState = function(req, res){ - console.log('Serving ', req.originalUrl ,'from cluster-state.json'); - jsonfile.readFile('e2e/mock-data/cluster-state.json', function(err, obj) { - if(err) { - res.json({status: 'error', reason: err.toString()}); - return; - } - res.json(obj); - }); -}; - - -app.use(compression()); - -app.use(favicon(path.join(__dirname, 'dist/favicon.ico'))); -app.use(serveStatic(path.join(__dirname, 'dist'), { - maxAge: '1d', - setHeaders: setCustomCacheControl -})); - -app.use('/logout', proxy(conf.restapi)); -app.use('/api/v1/user', proxy(conf.restapi)); -app.use('/api/v1/search/findOne', proxy(conf.restapi)); -app.use('/api/v1/search/column/metadata', proxy(conf.restapi)); - -app.get('/alerts-list', indexHTML); -app.get('', indexHTML); - -app.use(bodyParser.json()); -app.post('/api/v1/search/search', searchResult); - -app.use(function(req, res, next){ - res.status(404).sendStatus(304); -}); - -app.listen(port, function(){ - console.log("Metron alerts ui is listening on " + metronUIAddress); -}); http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/angular-cli.json ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/angular-cli.json b/metron-interface/metron-alerts/angular-cli.json index 68922d7..141f29b 100644 --- a/metron-interface/metron-alerts/angular-cli.json +++ b/metron-interface/metron-alerts/angular-cli.json @@ -31,7 +31,8 @@ "environmentSource": "environments/environment.ts", "environments": { "dev": "environments/environment.ts", - "prod": "environments/environment.prod.ts" + "prod": "environments/environment.prod.ts", + "e2e": "environments/environment.e2e.ts" } } ], http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alert-details/alert-details.po.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alert-details/alert-details.po.ts b/metron-interface/metron-alerts/e2e/alert-details/alert-details.po.ts new file mode 100644 index 0000000..de0650f --- /dev/null +++ b/metron-interface/metron-alerts/e2e/alert-details/alert-details.po.ts @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {browser, element, by, protractor} from 'protractor'; + +export class MetronAlertDetailsPage { + + navigateTo() { + browser.waitForAngularEnabled(false); + return browser.get('/alerts-list(dialog:details/alerts_ui_e2e/c4c5e418-3938-099e-bb0d-37028a98dca8)'); + } + + clickNew() { + element.all(by.css('.metron-slider-pane-details table tbody tr')).get(1).all(by.css('td')).get(0).click(); + } + + clickOpen() { + element.all(by.css('.metron-slider-pane-details table tbody tr')).get(1).all(by.css('td')).get(1).click(); + } + + clickDismiss() { + element.all(by.css('.metron-slider-pane-details table tbody tr')).get(1).all(by.css('td')).get(2).click(); + } + + clickEscalate() { + element.all(by.css('.metron-slider-pane-details table tbody tr')).get(0).all(by.css('td')).get(1).click(); + } + + clickResolve() { + element.all(by.css('.metron-slider-pane-details table tbody tr')).get(2).all(by.css('td')).get(1).click(); + } + + getAlertStatus(previousText) { + let alertStatusElement = element.all(by.css('.metron-slider-pane-details .form .row')).get(0).all(by.css('div')).get(1); + return this.waitForTextChange(alertStatusElement, previousText).then(() => { + return alertStatusElement.getText(); + }); + } + + waitForTextChange(element, previousText) { + let EC = protractor.ExpectedConditions; + return browser.wait(EC.not(EC.textToBePresentInElement(element, previousText))); + } + +} http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alert-details/alert-status/alert-details-status.e2e-spec.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alert-details/alert-status/alert-details-status.e2e-spec.ts b/metron-interface/metron-alerts/e2e/alert-details/alert-status/alert-details-status.e2e-spec.ts new file mode 100644 index 0000000..f464e62 --- /dev/null +++ b/metron-interface/metron-alerts/e2e/alert-details/alert-status/alert-details-status.e2e-spec.ts @@ -0,0 +1,60 @@ +/// <reference path="../../matchers/custom-matchers.d.ts"/> +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { MetronAlertDetailsPage } from '../alert-details.po'; +import {customMatchers} from '../../matchers/custom-matchers'; +import {LoginPage} from '../../login/login.po'; +import {loadTestData, deleteTestData} from '../../utils/e2e_util'; +import { MetronAlertsPage } from '../../alerts-list/alerts-list.po'; + +describe('metron-alerts alert status', function() { + let page: MetronAlertDetailsPage; + let loginPage: LoginPage; + + beforeAll(() => { + loadTestData(); + loginPage = new LoginPage(); + loginPage.login(); + }); + + afterAll(() => { + new MetronAlertsPage().navigateTo(); + loginPage.logout(); + deleteTestData(); + }); + + beforeEach(() => { + page = new MetronAlertDetailsPage(); + jasmine.addMatchers(customMatchers); + }); + + it('should change alert statuses', () => { + page.navigateTo(); + page.clickNew(); + page.clickOpen(); + expect(page.getAlertStatus('NEW')).toEqual('OPEN'); + page.clickDismiss(); + expect(page.getAlertStatus('OPEN')).toEqual('DISMISS'); + page.clickEscalate(); + expect(page.getAlertStatus('DISMISS')).toEqual('ESCALATE'); + page.clickResolve(); + expect(page.getAlertStatus('ESCALATE')).toEqual('RESOLVE'); + page.clickNew(); + }); + +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alerts-list/alert-status/alerts-list-status.e2e-spec.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alerts-list/alert-status/alerts-list-status.e2e-spec.ts b/metron-interface/metron-alerts/e2e/alerts-list/alert-status/alerts-list-status.e2e-spec.ts new file mode 100644 index 0000000..e793d6f --- /dev/null +++ b/metron-interface/metron-alerts/e2e/alerts-list/alert-status/alerts-list-status.e2e-spec.ts @@ -0,0 +1,85 @@ +/// <reference path="../../matchers/custom-matchers.d.ts"/> +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { MetronAlertsPage } from '../alerts-list.po'; +import {customMatchers} from '../../matchers/custom-matchers'; +import {LoginPage} from '../../login/login.po'; +import {loadTestData, deleteTestData} from '../../utils/e2e_util'; + +describe('metron-alerts alert status', function() { + let page: MetronAlertsPage; + let loginPage: LoginPage; + + beforeAll(() => { + loadTestData(); + loginPage = new LoginPage(); + loginPage.login(); + }); + + afterAll(() => { + loginPage.logout(); + deleteTestData(); + }); + + beforeEach(() => { + page = new MetronAlertsPage(); + jasmine.addMatchers(customMatchers); + }); + + it('should change alert status for multiple alerts to OPEN', () => { + page.navigateTo(); + page.toggleAlertInList(0); + page.toggleAlertInList(1); + page.toggleAlertInList(2); + page.clickActionDropdownOption('Open'); + expect(page.getAlertStatus(0, 'NEW')).toEqual('OPEN'); + expect(page.getAlertStatus(1, 'NEW')).toEqual('OPEN'); + expect(page.getAlertStatus(2, 'NEW')).toEqual('OPEN'); + }); + + it('should change alert status for multiple alerts to DISMISS', () => { + page.toggleAlertInList(3); + page.toggleAlertInList(4); + page.toggleAlertInList(5); + page.clickActionDropdownOption('Dismiss'); + expect(page.getAlertStatus(3, 'NEW')).toEqual('DISMISS'); + expect(page.getAlertStatus(4, 'NEW')).toEqual('DISMISS'); + expect(page.getAlertStatus(5, 'NEW')).toEqual('DISMISS'); + }); + + it('should change alert status for multiple alerts to ESCALATE', () => { + page.toggleAlertInList(6); + page.toggleAlertInList(7); + page.toggleAlertInList(8); + page.clickActionDropdownOption('Escalate'); + expect(page.getAlertStatus(6, 'NEW')).toEqual('ESCALATE'); + expect(page.getAlertStatus(7, 'NEW')).toEqual('ESCALATE'); + expect(page.getAlertStatus(8, 'NEW')).toEqual('ESCALATE'); + }); + + it('should change alert status for multiple alerts to RESOLVE', () => { + page.toggleAlertInList(9); + page.toggleAlertInList(10); + page.toggleAlertInList(11); + page.clickActionDropdownOption('Resolve'); + expect(page.getAlertStatus(9, 'NEW')).toEqual('RESOLVE'); + expect(page.getAlertStatus(10, 'NEW')).toEqual('RESOLVE'); + expect(page.getAlertStatus(11, 'NEW')).toEqual('RESOLVE'); + }); + +}); http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.e2e-spec.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.e2e-spec.ts b/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.e2e-spec.ts index b27df7e..8e92737 100644 --- a/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.e2e-spec.ts +++ b/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.e2e-spec.ts @@ -19,6 +19,7 @@ import { MetronAlertsPage } from './alerts-list.po'; import { customMatchers } from '../matchers/custom-matchers'; import { LoginPage } from '../login/login.po'; +import { loadTestData, deleteTestData } from "../utils/e2e_util"; describe('metron-alerts App', function() { let page: MetronAlertsPage; @@ -29,12 +30,14 @@ describe('metron-alerts App', function() { 'ip_dst_addr', 'host', 'alert_status' ]; beforeAll(() => { + loadTestData(); loginPage = new LoginPage(); loginPage.login(); }); afterAll(() => { loginPage.logout(); + deleteTestData(); }); beforeEach(() => { @@ -55,7 +58,7 @@ describe('metron-alerts App', function() { expect(page.isPausePlayRefreshButtonPresent()).toEqualBcoz(true, 'for pause/play button'); expect(page.isConfigureTableColumnsPresent()).toEqualBcoz(true, 'for alerts table column configure button'); - expect(page.getAlertTableTitle()).toEqualBcoz('Alerts (25 of 169)', 'for alerts title'); + expect(page.getAlertTableTitle()).toEqualBcoz('Alerts (169)', 'for alerts title'); expect(page.getActionDropdownItems()).toEqualBcoz([ 'Open', 'Dismiss', 'Escalate', 'Resolve' ], 'for default dropdown actions'); expect(page.getTableColumnNames()).toEqualBcoz(columnNames, 'for default column names for alert list table'); }); http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.po.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.po.ts b/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.po.ts index cefa137..ec44120 100644 --- a/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.po.ts +++ b/metron-interface/metron-alerts/e2e/alerts-list/alerts-list.po.ts @@ -68,8 +68,18 @@ export class MetronAlertsPage { return element(by.css('.col-form-label-lg')).getText(); } + clickActionDropdown() { + return element(by.buttonText('ACTIONS')).click(); + } + + clickActionDropdownOption(option: string) { + this.clickActionDropdown().then(() => { + element(by.cssContainingText('.dropdown-menu span', option)).click(); + }); + } + getActionDropdownItems() { - return element(by.buttonText('ACTIONS')).click().then(() => element.all(by.css('.dropdown-menu .dropdown-item.disabled')).getText()); + return this.clickActionDropdown().then(() => element.all(by.css('.dropdown-menu .dropdown-item.disabled')).getText()); } getTableColumnNames() { @@ -241,4 +251,27 @@ export class MetronAlertsPage { let EC = protractor.ExpectedConditions; return browser.wait(EC.presenceOf(element)); } + + waitForTextChange(element, previousText) { + let EC = protractor.ExpectedConditions; + return browser.wait(EC.not(EC.textToBePresentInElement(element, previousText))); + } + + toggleAlertInList(index: number) { + let selector = by.css('app-alerts-list tbody tr label'); + let checkbox = element.all(selector).get(index); + this.waitForElementPresence(checkbox).then(() => { + browser.actions().mouseMove(checkbox).perform().then(() => { + checkbox.click(); + }); + }); + } + + getAlertStatus(rowIndex: number, previousText) { + let row = element.all(by.css('app-alerts-list tbody tr')).get(rowIndex); + let column = row.all(by.css('td a')).get(8); + return this.waitForTextChange(column, previousText).then(() => { + return column.getText(); + }); + } } http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alerts-list/configure-table/configure-table.e2e-spec.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alerts-list/configure-table/configure-table.e2e-spec.ts b/metron-interface/metron-alerts/e2e/alerts-list/configure-table/configure-table.e2e-spec.ts index fb3e3cd..284255f 100644 --- a/metron-interface/metron-alerts/e2e/alerts-list/configure-table/configure-table.e2e-spec.ts +++ b/metron-interface/metron-alerts/e2e/alerts-list/configure-table/configure-table.e2e-spec.ts @@ -19,6 +19,7 @@ import { MetronAlertsPage } from '../alerts-list.po'; import {customMatchers} from '../../matchers/custom-matchers'; import {LoginPage} from '../../login/login.po'; +import {loadTestData, deleteTestData} from '../../utils/e2e_util'; describe('metron-alerts configure table', function() { let page: MetronAlertsPage; @@ -27,12 +28,14 @@ describe('metron-alerts configure table', function() { 'ip_dst_addr', 'host', 'alert_status' ]; beforeAll(() => { + loadTestData(); loginPage = new LoginPage(); loginPage.login(); }); afterAll(() => { loginPage.logout(); + deleteTestData(); }); beforeEach(() => { http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/alerts-list/save-search/save-search.e2e-spec.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/alerts-list/save-search/save-search.e2e-spec.ts b/metron-interface/metron-alerts/e2e/alerts-list/save-search/save-search.e2e-spec.ts index 85127dc..91bb81a 100644 --- a/metron-interface/metron-alerts/e2e/alerts-list/save-search/save-search.e2e-spec.ts +++ b/metron-interface/metron-alerts/e2e/alerts-list/save-search/save-search.e2e-spec.ts @@ -19,18 +19,21 @@ import { customMatchers } from '../../matchers/custom-matchers'; import {MetronAlertsPage} from '../alerts-list.po'; import {LoginPage} from '../../login/login.po'; +import {loadTestData, deleteTestData} from '../../utils/e2e_util'; describe('metron-alerts Search', function() { let page: MetronAlertsPage; let loginPage: LoginPage; beforeAll(() => { + loadTestData(); loginPage = new LoginPage(); loginPage.login(); }); afterAll(() => { loginPage.logout(); + deleteTestData(); }); beforeEach(() => { @@ -73,10 +76,10 @@ describe('metron-alerts Search', function() { it('should delete first search items from search box having multiple search fields', () => { page.clickTableText('US'); - page.clickTableText('bro'); - expect(page.getSearchText()).toEqual('enrichments:geo:ip_dst_addr:country:US AND source:type:bro', 'for search text US and bro'); + page.clickTableText('alerts_ui_e2e'); + expect(page.getSearchText()).toEqual('enrichments:geo:ip_dst_addr:country:US AND source:type:alerts_ui_e2e', 'for search text US and alerts_ui_e2e'); page.clickRemoveSearchChip(); - expect(page.getSearchText()).toEqual('source:type:bro', 'for search text bro after US is removed'); + expect(page.getSearchText()).toEqual('source:type:alerts_ui_e2e', 'for search text alerts_ui_e2e after US is removed'); page.clickRemoveSearchChip(); expect(page.getSearchText()).toEqual('*', 'for search chip remove for two search texts'); }); http://git-wip-us.apache.org/repos/asf/metron/blob/cd7257e1/metron-interface/metron-alerts/e2e/login/login.po.ts ---------------------------------------------------------------------- diff --git a/metron-interface/metron-alerts/e2e/login/login.po.ts b/metron-interface/metron-alerts/e2e/login/login.po.ts index b3e9769..c9f8c23 100644 --- a/metron-interface/metron-alerts/e2e/login/login.po.ts +++ b/metron-interface/metron-alerts/e2e/login/login.po.ts @@ -24,7 +24,7 @@ export class LoginPage { } login() { - browser.wait(function() {return element(by.css('input.form-control')).isPresent(); }); + this.navigateToLogin(); this.setUserNameAndPassword('admin', 'password'); this.submitLoginForm(); browser.waitForAngularEnabled(false);
