Source
$this->assertEquals($data['timezone_db'], CDBHelper::getValue('SELECT timezone FROM users WHERE username='.zbx_dbstr('test-timezone')));
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** 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 Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
require_once dirname(__FILE__).'/../include/CWebTest.php';
require_once dirname(__FILE__).'/behaviors/CMessageBehavior.php';
/**
* @backup users, config
*/
class testTimezone extends CWebTest {
/**
* Attach MessageBehavior to the test.
*
* @return array
*/
public function getBehaviors() {
return [CMessageBehavior::class];
}
/**
* Change zabbix timezone from GUI and check that system time displayed correctly according to timezone.
*/
public function testTimezone_Gui() {
$this->page->userLogin('Admin', 'zabbix');
$this->setTimezone('System', 'gui');
$this->page->open('zabbix.php?action=problem.view');
$etc_time = $this->getProblemTime('4_trigger_Average');
// UTC -3 hours.
$this->setTimezone('UTC', 'gui');
date_modify($etc_time,'-3 hours');
// Return to problem page and check time.
$this->page->open('zabbix.php?action=problem.view');
$utc_time = $this->getProblemTime('4_trigger_Average');
$this->assertEquals($etc_time, $utc_time);
}
public static function getUserSettingsData() {
return [
[
[
'user_timezone' => 'UTC',
'timezone_db' => 'UTC',
'time_diff' => '-3 hours'
]
],
[
[
'user_timezone' => 'System default',
'timezone_db' => 'default',
'time_diff' => '+0 hours'
]
],
[
[
'user_timezone' => 'Pacific/Niue',
'timezone_db' => 'Pacific/Niue',
'time_diff' => '-14 hours'
]
],
[
[
'user_timezone' => 'Asia/Magadan',
'timezone_db' => 'Asia/Magadan',
'time_diff' => '+8 hours'
]
]
];
}
/**
* @dataProvider getUserSettingsData
*
* Change timezones for user, from user setting. Check that time for user displayed correctly according
* to chosen timezone.
*/
public function testTimezone_UserSettings($data) {