You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
799 lines
21 KiB
799 lines
21 KiB
<?php
|
|
/*
|
|
** Zabbix
|
|
** Copyright (C) 2001-2023 Zabbix SIA
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software
|
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**/
|
|
|
|
|
|
require_once dirname(__FILE__).'/../../include/CWebTest.php';
|
|
require_once dirname(__FILE__).'/../traits/TableTrait.php';
|
|
|
|
/**
|
|
* @backup alerts
|
|
*
|
|
* @onBefore prepareInsertActionsData
|
|
*/
|
|
class testPageReportsActionLog extends CWebTest {
|
|
|
|
use TableTrait;
|
|
|
|
public static function prepareInsertActionsData() {
|
|
DBexecute("INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, ".
|
|
"message, status, retries, error, esc_step, alerttype, parameters) VALUES (130, 13, 1, 1, ".
|
|
"1329724870, 10, 'test.test@zabbix.com', 'subject here', 'message here', 1, 0, '', 1, 0, '');"
|
|
);
|
|
|
|
DBexecute("INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, ".
|
|
"message, status, retries, error, esc_step, alerttype, parameters) VALUES (131, 13, 1, 9, ".
|
|
"1329724880, 3, '77777777', 'subject here', 'message here', 1, 0, '', 1, 0, '');"
|
|
);
|
|
|
|
DBexecute("INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, ".
|
|
"message, status, retries, error, esc_step, alerttype, parameters) VALUES (132, 13, 1, 9, ".
|
|
"1329724890, 3, '77777777', 'subject_no_space', 'message_no_space', 1, 0, '', 1, 0, '');"
|
|
);
|
|
|
|
DBexecute("INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, ".
|
|
"message, status, retries, error, esc_step, alerttype, parameters) VALUES (133, 13, 1, 1, ".
|
|
"1597439400, 3, 'igor.danoshaites@zabbix.com', 'time_subject_1', 'time_message_1', 1, 0, '', 1, 0, '');"
|
|
);
|
|
|
|
DBexecute("INSERT INTO alerts (alertid, actionid, eventid, userid, clock, mediatypeid, sendto, subject, ".
|
|
"message, status, retries, error, esc_step, alerttype, parameters) VALUES (134, 12, 1, 9, ".
|
|
"1597440000, 3, 'igor.danoshaites@zabbix.com', 'time_subject_2', 'time_message_', 1, 0, '', 1, 0, '');"
|
|
);
|
|
}
|
|
|
|
public function testPageReportsActionLog_CheckLayout() {
|
|
$this->page->login()->open('zabbix.php?action=actionlog.list')->waitUntilReady();
|
|
|
|
// Check header and title.
|
|
$this->page->assertHeader('Action log');
|
|
$this->page->assertTitle('Action log');
|
|
$form = $this->query('name:zbx_filter')->asForm()->one();
|
|
|
|
// If the time selector is not visible - enable it.
|
|
if ($this->query('xpath://li[@aria-labelledby="ui-id-1" and @aria-selected="false"]')->exists()) {
|
|
$this->query('id:ui-id-1')->one()->click();
|
|
}
|
|
|
|
// Check that filter set to display Last hour data.
|
|
$this->assertEquals('selected', $this->query('xpath://a[@data-label="Last 1 hour"]')->one()
|
|
->getAttribute('class')
|
|
);
|
|
|
|
// Check data set values in input field.
|
|
$this->assertEquals('now-1h', $this->query('id:from')->one()->getValue());
|
|
$this->assertEquals('now', $this->query('id:to')->one()->getValue());
|
|
|
|
// Press to display filter.
|
|
$this->query('id:ui-id-2')->one()->click();
|
|
|
|
// Check filter buttons.
|
|
foreach (['Apply', 'Reset'] as $button) {
|
|
$this->assertTrue($form->query('xpath:.//div[@class="filter-forms"]/button[text()="'.$button.'"]')
|
|
->one()->isClickable()
|
|
);
|
|
}
|
|
|
|
// Check that Export to CSV button is clickable.
|
|
$this->assertTrue($this->query('button:Export to CSV')->one()->isClickable());
|
|
|
|
// Check form labels.
|
|
$this->assertEquals(['Recipients', 'Actions', 'Media types', 'Status', 'Search string'], $form->getLabels()->asText());
|
|
|
|
// Check Search string field max length.
|
|
$this->assertEquals(255, $form->getField('Search string')->waitUntilVisible()->getAttribute('maxlength'));
|
|
|
|
// Check table headers.
|
|
$this->assertEquals(['Time', 'Action', 'Media type', 'Recipient', 'Message', 'Status', 'Info'],
|
|
$this->query('class:list-table')->asTable()->one()->getHeadersText()
|
|
);
|
|
|
|
// Check status available values.
|
|
$this->assertEquals(['In progress', 'Sent/Executed', 'Failed'], $this->query('id:filter_status')
|
|
->asCheckboxList()->one()->getLabels()->asText()
|
|
);
|
|
}
|
|
|
|
public static function getCheckFilterData() {
|
|
return [
|
|
// #0.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['test-timezone']
|
|
],
|
|
'result' => [
|
|
['Recipient' => "test-timezone\n77777777"],
|
|
['Recipient' => "test-timezone\n77777777"]
|
|
]
|
|
]
|
|
],
|
|
// #1.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Trigger action 2']
|
|
],
|
|
'result' => [
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2'],
|
|
['Action' => 'Trigger action 2']
|
|
]
|
|
]
|
|
],
|
|
// #2.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Simple action']
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #3.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['filter-update']
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #4.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Discord']
|
|
],
|
|
'result' => [
|
|
['Media type' => 'Discord']
|
|
]
|
|
]
|
|
],
|
|
// #5.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Discord', 'SMS']
|
|
],
|
|
'result' => [
|
|
['Media type' => 'SMS'],
|
|
['Media type' => 'SMS'],
|
|
['Media type' => 'Discord']
|
|
]
|
|
]
|
|
],
|
|
// #6.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Github']
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #7.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Trigger action 2'],
|
|
'Media types' => ['Discord']
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #8.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Trigger action 3'],
|
|
'Media types' => ['Discord']
|
|
],
|
|
'result' => [
|
|
['Action' => 'Trigger action 3', 'Media type' => 'Discord']
|
|
]
|
|
]
|
|
],
|
|
// #9.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['Administrator'],
|
|
'Actions' => ['Trigger action 3']
|
|
],
|
|
'result' => [
|
|
['Action' => 'Trigger action 3', 'Recipient' => "Admin (Zabbix Administrator)\ntest.test@zabbix.com"]
|
|
]
|
|
]
|
|
],
|
|
// #10.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['Administrator'],
|
|
'Media types' => ['Email']
|
|
],
|
|
'result' => [
|
|
['Media type' => 'Email', 'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"],
|
|
['Media type' => 'Email', 'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"],
|
|
['Media type' => 'Email', 'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"],
|
|
['Media type' => 'Email', 'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"],
|
|
['Media type' => 'Email', 'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"]
|
|
]
|
|
]
|
|
],
|
|
// #11.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['Administrator', 'test-timezone'],
|
|
'Media types' => ['Email', 'Discord', 'SMS'],
|
|
'Actions' => ['Trigger action 2', 'Trigger action 3']
|
|
],
|
|
'result' => [
|
|
[
|
|
'Action' => 'Trigger action 3',
|
|
'Media type' => 'SMS',
|
|
'Recipient' => "test-timezone\n77777777"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 3',
|
|
'Media type' => 'SMS',
|
|
'Recipient' => "test-timezone\n77777777"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 3',
|
|
'Media type' => 'Discord',
|
|
'Recipient' => "Admin (Zabbix Administrator)\ntest.test@zabbix.com"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2',
|
|
'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2',
|
|
'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2',
|
|
'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2',
|
|
'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2',
|
|
'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #12.
|
|
[
|
|
[
|
|
'fields' => ['Failed' => true],
|
|
'result' => [
|
|
['Status' => 'Failed']
|
|
]
|
|
]
|
|
],
|
|
// #13.
|
|
[
|
|
[
|
|
'fields' => ['Sent/Executed' => true],
|
|
'result' => [
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Executed'],
|
|
['Status' => 'Executed'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent']
|
|
]
|
|
]
|
|
],
|
|
// #14.
|
|
[
|
|
[
|
|
'fields' => ['In progress' => true],
|
|
'result' => [
|
|
['Status' => "In progress:\n3 retries left"]
|
|
]
|
|
]
|
|
],
|
|
// #15.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Failed' => true,
|
|
'In progress' => true
|
|
],
|
|
'result' => [
|
|
['Status' => "In progress:\n3 retries left"],
|
|
['Status' => 'Failed']
|
|
]
|
|
]
|
|
],
|
|
// #16.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'In progress' => true,
|
|
'Sent/Executed' => true,
|
|
'Failed' => true
|
|
],
|
|
'result' => [
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Executed'],
|
|
['Status' => 'Executed'],
|
|
['Status' => "In progress:\n3 retries left"],
|
|
['Status' => 'Failed'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent'],
|
|
['Status' => 'Sent']
|
|
]
|
|
]
|
|
],
|
|
// #17.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Trigger action 3'],
|
|
'Sent/Executed' => true
|
|
],
|
|
'result' => [
|
|
['Action' => 'Trigger action 3', 'Status' => 'Sent'],
|
|
['Action' => 'Trigger action 3', 'Status' => 'Sent'],
|
|
['Action' => 'Trigger action 3', 'Status' => 'Sent']
|
|
]
|
|
]
|
|
],
|
|
// #18.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => ['Trigger action 3'],
|
|
'In progress' => true
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #19.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['Administrator', 'test-timezone'],
|
|
'In progress' => true
|
|
],
|
|
'result' => [
|
|
[
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com",
|
|
'Status' => "In progress:\n3 retries left"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #20.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Recipients' => ['test-timezone'],
|
|
'In progress' => true
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #21.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Email'],
|
|
'In progress' => true
|
|
],
|
|
'result' => [
|
|
['Media type' => 'Email', 'Status' => "In progress:\n3 retries left"]
|
|
]
|
|
]
|
|
],
|
|
// #22.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Email'],
|
|
'Sent/Executed' => true
|
|
],
|
|
'result' => [
|
|
['Media type' => 'Email', 'Status' => 'Sent'],
|
|
['Media type' => 'Email', 'Status' => 'Sent'],
|
|
['Media type' => 'Email', 'Status' => 'Sent']
|
|
]
|
|
]
|
|
],
|
|
// #23.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Email'],
|
|
'Failed' => true
|
|
],
|
|
'result' => [
|
|
['Media type' => 'Email', 'Status' => 'Failed']
|
|
]
|
|
]
|
|
],
|
|
// #24.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Media types' => ['Email'],
|
|
'Actions' => ['Trigger action 2'],
|
|
'Recipients' => ['Administrator'],
|
|
'Sent/Executed' => true
|
|
],
|
|
'result' => [
|
|
[
|
|
'Action' => 'Trigger action 2', 'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com", 'Status' => 'Sent'
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2', 'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com", 'Status' => 'Sent'
|
|
],
|
|
[
|
|
'Action' => 'Trigger action 2', 'Media type' => 'Email',
|
|
'Recipient' => "Admin (Zabbix Administrator)\nigor.danoshaites@zabbix.com", 'Status' => 'Sent'
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #25.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => 'test'
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #26.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => '10:00:40'
|
|
],
|
|
'result' => [
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 20\n\nMessage:\nEvent ".
|
|
"at 2012.02.20 10:00:40 Hostname: H1 Value of item key1 > 20: PROBLEM"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #27.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => '.'
|
|
],
|
|
'result' => [
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 20\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:40 Hostname: H1 Value of item key1 > 20: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 10\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:30 Hostname: H1 Value of item key1 > 10: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 7\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:20 Hostname: H1 Value of item key1 > 7: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 6\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:10 Hostname: H1 Value of item key1 > 6: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 5\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:00 Hostname: H1 Value of item key1 > 5: PROBLEM Last value: 6"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #28.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => '5'
|
|
],
|
|
'result' => [
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 5\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:00 Hostname: H1 Value of item key1 > 5: PROBLEM Last value: 6"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #29.
|
|
[
|
|
[
|
|
'result' => [
|
|
['Time' => '2012-02-20 10:01:30'],
|
|
['Time' => '2012-02-20 10:01:20'],
|
|
['Time' => '2012-02-20 10:01:10'],
|
|
['Time' => '2012-02-20 10:01:00'],
|
|
['Time' => '2012-02-20 10:00:50'],
|
|
['Time' => '2012-02-20 10:00:40'],
|
|
['Time' => '2012-02-20 10:00:30'],
|
|
['Time' => '2012-02-20 10:00:20'],
|
|
['Time' => '2012-02-20 10:00:10'],
|
|
['Time' => '2012-02-20 10:00:00']
|
|
]
|
|
]
|
|
],
|
|
// #30.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => ' '
|
|
],
|
|
'result' => [
|
|
[
|
|
'Message' => "Subject:\nsubject here\n\nMessage:\nmessage here"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nsubject here\n\nMessage:\nmessage here"
|
|
],
|
|
[
|
|
'Message' => "Command:\nCommand: H1:ls -la"
|
|
],
|
|
[
|
|
'Message' => "Command:\nCommand: H1:ls -la"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 20\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:40 Hostname: H1 Value of item key1 > 20: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 10\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:30 Hostname: H1 Value of item key1 > 10: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 7\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:20 Hostname: H1 Value of item key1 > 7: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 6\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:10 Hostname: H1 Value of item key1 > 6: PROBLEM"
|
|
],
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 5\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:00 Hostname: H1 Value of item key1 > 5: PROBLEM Last value: 6"
|
|
]
|
|
]
|
|
]
|
|
],
|
|
// #31.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => ' '
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// #32.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => 'Event at 2012.02.20 10:00:30 Hostname: H1 Value of item key1 > 10: PROBLEM'
|
|
],
|
|
'result' => [
|
|
[
|
|
'Message' => "Subject:\nPROBLEM: Value of item key1 > 10\n\nMessage:\nEvent at 2012.02.20 ".
|
|
"10:00:30 Hostname: H1 Value of item key1 > 10: PROBLEM"
|
|
]
|
|
],
|
|
'result_count' => 1
|
|
]
|
|
],
|
|
// #33.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Search string' => '2012-02-20 10:01:00'
|
|
],
|
|
'result' => []
|
|
]
|
|
],
|
|
// 34.
|
|
[
|
|
[
|
|
'time' => [
|
|
'id:from' => '2020-08-15 00:00:00',
|
|
'id:to' => '2020-08-15 01:0:00'
|
|
],
|
|
'result' => [
|
|
['Time' => '2020-08-15 00:20:00'],
|
|
['Time' => '2020-08-15 00:10:00']
|
|
]
|
|
]
|
|
],
|
|
// 35.
|
|
[
|
|
[
|
|
'fields' => [
|
|
'Actions' => 'Trigger action 2'
|
|
],
|
|
'time' => [
|
|
'id:from' => '2020-08-15 00:00:00',
|
|
'id:to' => '2020-08-15 01:0:00'
|
|
],
|
|
'result' => [
|
|
['Time' => '2020-08-15 00:20:00', 'Action' => 'Trigger action 2']
|
|
]
|
|
]
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Filter action log and check results.
|
|
*
|
|
* @dataProvider getCheckFilterData
|
|
*/
|
|
public function testPageReportsActionLog_CheckFilter($data) {
|
|
$this->page->login()->open('zabbix.php?action=actionlog.list&from=2012-02-20+09:01:00&to=2012-02-20+11:01:00&'.
|
|
'filter_messages=&filter_set=1')->waitUntilReady();
|
|
|
|
// Filter by time.
|
|
$form = $this->query('name:zbx_filter')->asForm()->one();
|
|
|
|
if (array_key_exists('time', $data)) {
|
|
// Enable time tab.
|
|
$time_tab = $this->query('xpath:.//li[@aria-labelledby="ui-id-1" and @aria-selected="false"]');
|
|
if ($time_tab->exists()) {
|
|
$time_tab->one()->click();
|
|
}
|
|
|
|
$this->query('id:from')->one()->fill($data['time']['id:from']);
|
|
$this->query('id:to')->one()->fill($data['time']['id:to']);
|
|
$this->query('id:apply')->one()->click();
|
|
$this->page->waitUntilReady();
|
|
}
|
|
|
|
// Fill filter.
|
|
$filter_tab = $this->query('xpath:.//li[@aria-labelledby="ui-id-2" and @aria-selected="false"]');
|
|
|
|
if (array_key_exists('fields', $data)) {
|
|
// If the filter is not visible - enable it.
|
|
if ($filter_tab->exists()) {
|
|
$filter_tab->one()->click();
|
|
}
|
|
|
|
$form->fill($data['fields'])->submit();
|
|
}
|
|
|
|
$this->page->waitUntilReady();
|
|
$this->assertTableHasData($data['result']);
|
|
$this->assertTableStats(count($data['result']));
|
|
|
|
// Reset filter for the next checks.
|
|
if ($filter_tab->exists()) {
|
|
$filter_tab->one()->click();
|
|
}
|
|
|
|
$form->query('button:Reset')->one()->click();
|
|
}
|
|
|
|
/**
|
|
* Check Status column colors and Info column hintbox.
|
|
*/
|
|
public function testPageReportsActionLog_CheckStatusInfo() {
|
|
$this->page->login()->open('zabbix.php?action=actionlog.list&from=2012-02-20+09:01:00&to=2012-02-20+11:01:00&'.
|
|
'filter_messages=&filter_set=1')->waitUntilReady();
|
|
|
|
// Check status color correctness.
|
|
$table = $this->query('class:list-table')->asTable()->one();
|
|
$statuses = ['Executed' => 'green', 'In progress:' => 'yellow', 'Failed' => 'red', 'Sent' => 'green'];
|
|
|
|
foreach ($statuses as $status => $color) {
|
|
$this->assertEquals($color, $table->query("xpath:(//td/span[text()=".CXPathHelper::escapeQuotes($status)."])[1]")
|
|
->one()->getAttribute('class')
|
|
);
|
|
}
|
|
|
|
// Check hintbox.
|
|
$table->findRow('Status', 'Failed')->getColumn('Info')->query("xpath:.//button[@data-hintbox]")
|
|
->waitUntilClickable()->one()->click();
|
|
$hintbox = $this->query('xpath://div[@class="overlay-dialogue"]')->waitUntilPresent();
|
|
$this->assertEquals('Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused',
|
|
$hintbox->one()->getText()
|
|
);
|
|
|
|
// Close hintbox.
|
|
$hintbox->query('xpath:.//button[@class="btn-overlay-close"]')->one()->click()->waitUntilNotPresent();
|
|
}
|
|
|
|
/**
|
|
* Check Reset button.
|
|
*/
|
|
public function testPageReportsActionLog_CheckResetButton() {
|
|
$this->page->login()->open('zabbix.php?action=actionlog.list&from=2012-02-20+09:01:00&to=2012-02-20+11:01:00&'.
|
|
'filter_messages=&filter_set=1')->waitUntilReady();
|
|
|
|
// If the filter is not visible - enable it.
|
|
$filter_tab = $this->query('xpath:.//li[@aria-labelledby="ui-id-2" and @aria-selected="false"]');
|
|
if ($filter_tab->exists()) {
|
|
$filter_tab->one()->click();
|
|
}
|
|
|
|
$form = $this->query('name:zbx_filter')->asForm()->one();
|
|
$empty_form = [
|
|
'Recipients' => '',
|
|
'Actions' => '',
|
|
'Media types' => '',
|
|
'Search string' => '',
|
|
'In progress' => false,
|
|
'Sent/Executed' => false,
|
|
'Failed' => false
|
|
];
|
|
$filled_form = [
|
|
'Recipients' => 'test-timezone',
|
|
'Actions' => 'Trigger action 3',
|
|
'Media types' => 'SMS',
|
|
'Search string' => 'test',
|
|
'In progress' => true,
|
|
'Sent/Executed' => true,
|
|
'Failed' => true
|
|
];
|
|
|
|
// Check reset button with/without filter submit.
|
|
foreach ([true, false] as $submit) {
|
|
$this->assertTableStats(10);
|
|
$form->checkValue($empty_form);
|
|
$form->fill($filled_form);
|
|
|
|
if ($submit) {
|
|
$form->submit();
|
|
$this->page->waitUntilReady();
|
|
$this->assertTableStats(0);
|
|
}
|
|
|
|
$form->invalidate()->checkValue($filled_form);
|
|
$form->query('button:Reset')->one()->click();
|
|
$this->page->waitUntilReady();
|
|
$form->invalidate()->checkValue($empty_form);
|
|
$this->assertTableStats(10);
|
|
}
|
|
}
|
|
}
|