Framework/User: Implement getTimezone to retrieve the user's Timezone

refs #4440
This commit is contained in:
Eric Lippmann 2013-08-06 18:02:40 +02:00
parent 9170523afa
commit 8af901e9ed
2 changed files with 51 additions and 30 deletions

View File

@ -316,4 +316,20 @@ class User
} }
return null; return null;
} }
/**
* Retrieve the user's timezone
*
* If the user did not set a timezone, the default timezone set via config.ini will be returned
*
* @return string
*/
public function getTimezone()
{
$tz = $this->preferences->get('timezone');
if ($tz === null) {
$tz = date_default_timezone_get();
}
return $tz;
}
} }

View File

@ -1,67 +1,72 @@
<?php <?php
namespace Tests\Icinga; namespace Tests\Icinga;
/**
* require_once __DIR__ . '/../../../../library/Icinga/User.php';
* Test class for User require_once __DIR__ . '/../../../../library/Icinga/User/Preferences.php';
* Created Fri, 07 Jun 2013 10:38:16 +0000 require_once __DIR__ . '/../../../../library/Icinga/User/Preferences/ChangeSet.php';
*
**/ use Icinga\User as IcingaUser;
use Icinga\User\Preferences as UserPreferences;
class UserTest extends \PHPUnit_Framework_TestCase class UserTest extends \PHPUnit_Framework_TestCase
{ {
/**
* Test for User::ListGroups()
*
**/
public function testListGroups() public function testListGroups()
{ {
$this->markTestIncomplete('testListGroups is not implemented yet'); $this->markTestIncomplete('testListGroups is not implemented yet');
} }
/**
* Test for User::IsMemberOf()
*
**/
public function testIsMemberOf() public function testIsMemberOf()
{ {
$this->markTestIncomplete('testIsMemberOf is not implemented yet'); $this->markTestIncomplete('testIsMemberOf is not implemented yet');
} }
/**
* Test for User::GetPermissionList()
*
**/
public function testGetPermissionList() public function testGetPermissionList()
{ {
$this->markTestIncomplete('testGetPermissionList is not implemented yet'); $this->markTestIncomplete('testGetPermissionList is not implemented yet');
} }
/**
* Test for User::HasPermission()
*
**/
public function testHasPermission() public function testHasPermission()
{ {
$this->markTestIncomplete('testHasPermission is not implemented yet'); $this->markTestIncomplete('testHasPermission is not implemented yet');
} }
/**
* Test for User::GrantPermission()
*
**/
public function testGrantPermission() public function testGrantPermission()
{ {
$this->markTestIncomplete('testGrantPermission is not implemented yet'); $this->markTestIncomplete('testGrantPermission is not implemented yet');
} }
/**
* Test for User::RevokePermission()
*
**/
public function testRevokePermission() public function testRevokePermission()
{ {
$this->markTestIncomplete('testRevokePermission is not implemented yet'); $this->markTestIncomplete('testRevokePermission is not implemented yet');
} }
public function testGetDefaultTimezoneIfTimezoneNotSet()
{
$defaultTz = 'UTC';
date_default_timezone_set($defaultTz);
$user = new IcingaUser('unittest');
$prefs = new UserPreferences(array());
$user->setPreferences($prefs);
$this->assertEquals($user->getTimezone(), $defaultTz,
'User\'s timezone does not match the default timezone'
);
}
public function testGetTimezoneIfTimezoneSet()
{
$defaultTz = 'UTC';
$explicitTz = 'Europe/Berlin';
date_default_timezone_set($defaultTz);
$user = new IcingaUser('unittest');
$prefs = new UserPreferences(array(
'timezone' => $explicitTz
));
$user->setPreferences($prefs);
$this->assertEquals($user->getTimezone(), $explicitTz,
'User\'s timezone does not match the timezone set by himself'
);
}
} }