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.
603 lines
19 KiB
603 lines
19 KiB
1 year ago
|
<?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/CLegacyWebTest.php';
|
||
|
|
||
|
use Facebook\WebDriver\WebDriverBy;
|
||
|
|
||
|
/**
|
||
|
* @backup users
|
||
|
*/
|
||
|
class testFormUserProfile extends CLegacyWebTest {
|
||
|
|
||
|
protected static $old_password = 'zabbix';
|
||
|
|
||
|
public function testFormUserProfile_SimpleUpdate() {
|
||
|
$sqlHashUsers = 'select userid,username,name,surname,passwd,url,autologin,lang,refresh,roleid,theme,attempt_failed,attempt_clock,rows_per_page'
|
||
|
. ' from users order by userid';
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
|
||
|
$this->zbxTestCheckTitle('User profile');
|
||
|
|
||
|
$this->zbxTestClickWait('update');
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
}
|
||
|
|
||
|
public function testFormUserProfile_Cancel() {
|
||
|
$sqlHashUsers = 'select userid,username,name,surname,passwd,url,autologin,lang,refresh,roleid,theme,attempt_failed,attempt_clock,rows_per_page'
|
||
|
. ' from users order by userid';
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
$this->zbxTestCheckHeader('User profile: Zabbix Administrator');
|
||
|
$this->zbxTestInputTypeOverwrite('refresh', '60');
|
||
|
|
||
|
$this->zbxTestClickWait('cancel');
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
}
|
||
|
|
||
|
public static function passwords() {
|
||
|
return [
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'password1' => '',
|
||
|
'password2' => '',
|
||
|
'error_msg' => 'Incorrect value for field "Password": cannot be empty.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'password1' => 'abcd1234',
|
||
|
'password2' => 'abCD1235',
|
||
|
'error_msg' => 'Both passwords must be equal.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'password1' => '12345',
|
||
|
'password2' => '123456',
|
||
|
'error_msg' => 'Both passwords must be equal.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'old_password' => 'test_123',
|
||
|
'password1' => "test_123",
|
||
|
'password2' => "test_123",
|
||
|
'error_msg' => 'Incorrect current password.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'old_password' => '',
|
||
|
'password1' => "'\'$\"\"!$@$#^%$+-=~`\`\\",
|
||
|
'password2' => "'\'$\"\"!$@$#^%$+-=~`\`\\",
|
||
|
'error_msg' => 'Incorrect value for field "Current password": cannot be empty.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'password1' => "'\'$\"\"!$@$#^%$+-=~`\`\\",
|
||
|
'password2' => "'\'$\"\"!$@$#^%$+-=~`\`\\"
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'password1' => 'New_PASS_123',
|
||
|
'password2' => 'New_PASS_123'
|
||
|
]]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider passwords
|
||
|
*/
|
||
|
public function testFormUserProfile_PasswordChange($data) {
|
||
|
$sqlHashUsers = 'select * from users order by userid';
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
|
||
|
$form = $this->query('name:user_form')->asForm()->waitUntilVisible()->one();
|
||
|
$form->query('button:Change password')->waitUntilClickable()->one()->click();
|
||
|
foreach (['current_password', 'password1', 'password2'] as $id) {
|
||
|
$form->query('id', $id)->waitUntilVisible()->one();
|
||
|
}
|
||
|
$form->fill([
|
||
|
'Current password' => (array_key_exists('old_password', $data)) ? $data['old_password'] : self::$old_password,
|
||
|
'Password' => $data['password1'],
|
||
|
'Password (once again)' => $data['password2']
|
||
|
]);
|
||
|
$form->submit();
|
||
|
|
||
|
if ($this->page->isAlertPresent()) {
|
||
|
$this->page->acceptAlert();
|
||
|
}
|
||
|
|
||
|
$this->page->waitUntilReady();
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->page->assertTitle('Zabbix');
|
||
|
$this->assertTrue($this->query('button:Sign in')->one()->isClickable());
|
||
|
$this->page->userLogin('Admin', $data['password1']);
|
||
|
$this->assertTrue($this->query('xpath://a[@title="Admin (Zabbix Administrator)" and text()='.
|
||
|
'"User settings"]')->exists()
|
||
|
);
|
||
|
self::$old_password = $data['password1'];
|
||
|
break;
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestWaitUntilMessageTextPresent('msg-bad' , $data['error_msg']);
|
||
|
$this->zbxTestCheckTitle('User profile');
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function testFormUserProfile_ThemeChange() {
|
||
|
$sqlHashUsers = "select * from users where username<>'".PHPUNIT_LOGIN_NAME."' order by userid";
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
|
||
|
$this->zbxTestDropdownSelect('theme', 'Blue');
|
||
|
$this->zbxTestClickWait('update');
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
|
||
|
$row = DBfetch(DBselect("select theme from users where username='".PHPUNIT_LOGIN_NAME."'"));
|
||
|
$this->assertEquals('blue-theme', $row['theme']);
|
||
|
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
}
|
||
|
|
||
|
public static function refresh() {
|
||
|
return [
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => ' ',
|
||
|
'error_msg' => 'Incorrect value for field "refresh": cannot be empty.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => 's',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => '1.5',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => '{$DEFAULT_DELAY}',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => '1d',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": value must be one of 0-3600.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => '36001',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": value must be one of 0-3600.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'refresh' => '1y',
|
||
|
'error_msg' => 'Invalid parameter "/1/refresh": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '0'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '1'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '3600'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '1s'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '1m'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '1h'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'refresh' => '30s'
|
||
|
]]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider refresh
|
||
|
*/
|
||
|
public function ttestFormUserProfile_RefreshTime($data) {
|
||
|
$sqlHashUsers = 'select * from users order by userid';
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
|
||
|
$this->zbxTestInputTypeOverwrite('refresh', $data['refresh']);
|
||
|
$this->zbxTestClickWait('update');
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
$row = DBfetch(DBselect("select refresh from users where username='".PHPUNIT_LOGIN_NAME."'"));
|
||
|
$this->assertEquals($data['refresh'] , $row['refresh']);
|
||
|
break;
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestWaitUntilMessageTextPresent('msg-bad' , 'Cannot update user');
|
||
|
$this->zbxTestTextPresent($data['error_msg']);
|
||
|
$this->zbxTestCheckTitle('User profile');
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function autologout() {
|
||
|
return [
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => ' ',
|
||
|
'error_msg' => 'Incorrect value for field "autologout": cannot be empty.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => 's',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '1.5',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '{$DEFAULT_DELAY}',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '1s',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '1m',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '25h',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '2d',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '89',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '86401',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": value must be one of 0, 90-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'autologout' => '1y',
|
||
|
'error_msg' => 'Invalid parameter "/1/autologout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'autologout' => '0'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'autologout' => '90'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'autologout' => '10000'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'autologout' => '2m'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'autologout' => '1d'
|
||
|
]]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider autologout
|
||
|
*/
|
||
|
public function testFormUserProfile_AutologoutTime($data) {
|
||
|
$sqlHashUsers = 'select * from users order by userid';
|
||
|
$oldHashUsers = CDBHelper::getHash($sqlHashUsers);
|
||
|
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
|
||
|
$this->zbxTestCheckboxSelect('autologout_visible', true);
|
||
|
$this->zbxTestInputTypeOverwrite('autologout', $data['autologout']);
|
||
|
$this->zbxTestClickWait('update');
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
$row = DBfetch(DBselect("select autologout from users where username='".PHPUNIT_LOGIN_NAME."'"));
|
||
|
$this->assertEquals($data['autologout'] , $row['autologout']);
|
||
|
break;
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestWaitUntilMessageTextPresent('msg-bad' , 'Cannot update user');
|
||
|
$this->zbxTestTextPresent($data['error_msg']);
|
||
|
$this->zbxTestCheckTitle('User profile');
|
||
|
$this->assertEquals($oldHashUsers, CDBHelper::getHash($sqlHashUsers));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function messaging() {
|
||
|
return [
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => ' ',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => 's',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '1.5',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '{$DEFAULT_DELAY}',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '0',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '1s',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '29',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '25h',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '2d',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '86401',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": value must be one of 30-86400.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '1y',
|
||
|
'error_msg' => 'Incorrect value for field "timeout": a time unit is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'messages_disabled' => true,
|
||
|
'timeout' => '30s'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'timeout' => '1m',
|
||
|
'suppressed' => true
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'timeout' => '1d',
|
||
|
'suppressed' => false
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_GOOD
|
||
|
]]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider messaging
|
||
|
*/
|
||
|
public function testFormUserProfile_MessagesTimeout($data) {
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
$this->zbxTestCheckHeader('User profile: Zabbix Administrator');
|
||
|
$this->zbxTestTabSwitch('Messaging');
|
||
|
|
||
|
if (array_key_exists('messages_disabled', $data)) {
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_timeout'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//z-select[@id='messages_sounds.repeat']/input[@type='hidden']");
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_triggers.recovery'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//z-select[@id='messages_sounds.recovery']/input[@type='hidden']");
|
||
|
$this->zbxTestAssertElementPresentXpath("//button[@name='start'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//button[@name='stop'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_show_suppressed'][@disabled]");
|
||
|
}
|
||
|
|
||
|
if (array_key_exists('timeout', $data)) {
|
||
|
$this->zbxTestCheckboxSelect('messages_enabled', true);
|
||
|
$this->zbxTestInputTypeOverwrite('messages_timeout', $data['timeout']);
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//z-select[@id='messages_sounds.repeat'][@disabled]");
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//input[@id='messages_triggers.recovery'][@disabled]");
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//z-select[@id='messages_sounds.recovery'][@disabled]");
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//button[@name='start'][@disabled]");
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//button[@name='stop'][@disabled]");
|
||
|
$this->zbxTestAssertElementNotPresentXpath("//input[@id='messages_show_suppressed'][@disabled]");
|
||
|
}
|
||
|
else {
|
||
|
$this->zbxTestCheckboxSelect('messages_enabled', false);
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_timeout'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//z-select[@id='messages_sounds.repeat']/input[@type='hidden']");
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_triggers.recovery'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//z-select[@id='messages_sounds.recovery']/input[@type='hidden']");
|
||
|
$this->zbxTestAssertElementPresentXpath("//button[@name='start'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//button[@name='stop'][@disabled]");
|
||
|
$this->zbxTestAssertElementPresentXpath("//input[@id='messages_show_suppressed'][@disabled]");
|
||
|
}
|
||
|
|
||
|
if (array_key_exists('suppressed', $data)) {
|
||
|
$this->zbxTestCheckboxSelect('messages_show_suppressed', $data['suppressed']);
|
||
|
}
|
||
|
|
||
|
$this->zbxTestClickWait('update');
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
break;
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestWaitUntilMessageTextPresent('msg-bad' , 'Cannot update user');
|
||
|
$this->zbxTestTextPresent($data['error_msg']);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function media() {
|
||
|
return [
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => '',
|
||
|
'error_msg' => 'Incorrect value for field "sendto": cannot be empty.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test',
|
||
|
'period' => ' ',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test@zabbix.com',
|
||
|
'period' => '0-0,00:00-00:00',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test@zabbix.com',
|
||
|
'period' => '1-11,00:00-24:00',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test@zabbix.com',
|
||
|
'period' => '1-7,00:00-25:00',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test@zabbix.com',
|
||
|
'period' => '1-7,24:00-00:00',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]],
|
||
|
[[
|
||
|
'expected' => TEST_BAD,
|
||
|
'send_to' => 'test@zabbix.com',
|
||
|
'period' => 'test',
|
||
|
'error_msg' => 'Incorrect value for field "period": a time period is expected.'
|
||
|
]]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider media
|
||
|
*/
|
||
|
public function testFormUserProfile_Media($data) {
|
||
|
$this->zbxTestLogin('zabbix.php?action=userprofile.edit');
|
||
|
$this->zbxTestCheckHeader('User profile: Zabbix Administrator');
|
||
|
$this->zbxTestTabSwitch('Media');
|
||
|
$this->zbxTestClickButtonText('Add');
|
||
|
$this->zbxTestLaunchOverlayDialog('Media');
|
||
|
|
||
|
if (array_key_exists('type', $data)) {
|
||
|
$this->zbxTestDropdownSelect('mediatypeid', $data['type']);
|
||
|
}
|
||
|
|
||
|
$this->zbxTestInputTypeByXpath('//div[@class="overlay-dialogue-body"]//input[@id="sendto"]', $data['send_to']);
|
||
|
|
||
|
if (array_key_exists('period', $data)) {
|
||
|
$this->zbxTestInputClearAndTypeByXpath('//div[@class="overlay-dialogue-body"]//input[@id="period"]', $data['period']);
|
||
|
}
|
||
|
|
||
|
$this->zbxTestClickXpath('//div[@class="overlay-dialogue-footer"]//button[text()="Add"]');
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->zbxTestWaitForPageToLoad();
|
||
|
COverlayDialogElement::ensureNotPresent();
|
||
|
$this->zbxTestClickWait('update');
|
||
|
$this->zbxTestCheckHeader('Global view');
|
||
|
$sql = "SELECT * FROM media WHERE sendto = '".$data['send_to']."'";
|
||
|
$this->assertEquals(1, CDBHelper::getCount($sql));
|
||
|
break;
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestWaitUntilElementVisible(WebDriverBy::xpath("//div[@class='overlay-dialogue-body']//div[@class='msg-details']"));
|
||
|
$this->zbxTestTextPresent($data['error_msg']);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|