require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
class testPageUsers extends CLegacyWebTest {
public $userAlias = 'Admin';
public $userName = 'Zabbix';
public $userSurname = 'Administrator';
public $userRole = 'Super admin role';
public static function allUsers() {
return CDBHelper::getDataProvider('select * from users');
public function testPageUsers_CheckLayout() {
$this->zbxTestLogin('zabbix.php?action=user.list');
$this->zbxTestCheckTitle('Configuration of users');
$this->zbxTestCheckHeader('Users');
$this->zbxTestDropdownHasOptions('filter_usrgrpid', ['All', 'Disabled', 'Enabled debug mode', 'Guests', 'No access to the frontend', 'Zabbix administrators']);
$this->zbxTestDropdownSelectWait('filter_usrgrpid', 'Zabbix administrators');
$this->zbxTestTextNotPresent('guest');
$this->zbxTestAssertElementText("//tbody/tr[1]/td[2]/a", $this->userAlias);
$this->zbxTestAssertElementText("//tbody/tr[1]/td[3]", $this->userName);
$this->zbxTestAssertElementText("//tbody/tr[1]/td[4]", $this->userSurname);
$this->zbxTestAssertElementText("//tbody/tr[1]/td[5]", $this->userRole);
$this->zbxTestAssertElementPresentXpath("//thead//th/a[text()='Username']");
$this->zbxTestAssertElementPresentXpath("//thead//th/a[text()='Name']");
$this->zbxTestAssertElementPresentXpath("//thead//th/a[text()='Last name']");
$this->zbxTestAssertElementPresentXpath("//thead//th/a[text()='User role']");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Groups')]");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Is online?')]");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Login')]");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Frontend access')]");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Debug mode')]");
$this->zbxTestAssertElementPresentXpath("//thead//th[contains(text(),'Status')]");
$this->zbxTestAssertElementPresentXpath("//button[text()='Unblock'][@disabled]");
$this->zbxTestAssertElementPresentXpath("//button[text()='Delete'][@disabled]");
$this->zbxTestTextNotPresent('Displaying 0 of 0 found');
$this->zbxTestAssertElementPresentXpath("//div[@class='table-stats'][contains(text(),'Displaying')]");
$this->zbxTestAssertElementText("//span[@id='selected_count']", '0 selected');
public function testPageUsers_SimpleUpdate($user) {
$userid = $user['userid'];
$alias = $user['username'];
DBexecute('UPDATE users SET autologout=0 WHERE userid=2');
$sqlHashUser = 'select * from users where userid='.$userid;
$oldHashUser = CDBHelper::getHash($sqlHashUser);
$sqlHashGroup = 'select * from users_groups where userid='.$userid.' order by id';
$oldHashGroup = CDBHelper::getHash($sqlHashGroup);
$sqlHashMedia = 'select * from media where userid='.$userid.' order by mediaid';
$oldHashMedia = CDBHelper::getHash($sqlHashMedia);
$this->zbxTestLogin('zabbix.php?action=user.list');
$this->zbxTestCheckTitle('Configuration of users');
$this->zbxTestDropdownSelectWait('filter_usrgrpid', 'All');
$this->zbxTestTextPresent($alias);
$this->zbxTestClickLinkText($alias);
$this->zbxTestClickWait('update');
$this->zbxTestCheckHeader('Users');
$this->zbxTestWaitUntilMessageTextPresent('msg-good', 'User updated');
$this->zbxTestTextPresent($alias);
$this->assertEquals($oldHashUser, CDBHelper::getHash($sqlHashUser));