emit changeUser only if there really was a change (quota, displayname)

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2017-06-01 11:23:46 +02:00
parent db22c42e78
commit c1f4191a77
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
2 changed files with 102 additions and 3 deletions

View File

@ -165,8 +165,10 @@ class User implements IUser {
} else { } else {
$this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress); $this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
} }
if($oldMailAddress !== $mailAddress) {
$this->triggerChange('eMailAddress', $mailAddress, $oldMailAddress); $this->triggerChange('eMailAddress', $mailAddress, $oldMailAddress);
} }
}
/** /**
* returns the timestamp of the user's last login or 0 if the user did never * returns the timestamp of the user's last login or 0 if the user did never
@ -388,13 +390,16 @@ class User implements IUser {
* @since 9.0.0 * @since 9.0.0
*/ */
public function setQuota($quota) { public function setQuota($quota) {
$oldQuota = $this->config->getUserValue($this->uid, 'files', 'quota', '');
if($quota !== 'none' and $quota !== 'default') { if($quota !== 'none' and $quota !== 'default') {
$quota = OC_Helper::computerFileSize($quota); $quota = OC_Helper::computerFileSize($quota);
$quota = OC_Helper::humanFileSize($quota); $quota = OC_Helper::humanFileSize($quota);
} }
$this->config->setUserValue($this->uid, 'files', 'quota', $quota); $this->config->setUserValue($this->uid, 'files', 'quota', $quota);
if($quota !== $oldQuota) {
$this->triggerChange('quota', $quota); $this->triggerChange('quota', $quota);
} }
}
/** /**
* get the avatar image if it exists * get the avatar image if it exists

View File

@ -16,6 +16,7 @@ use OCP\IConfig;
use OCP\IUser; use OCP\IUser;
use OCP\Notification\IManager as INotificationManager; use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification; use OCP\Notification\INotification;
use OCP\UserInterface;
use Test\TestCase; use Test\TestCase;
/** /**
@ -614,7 +615,7 @@ class UserTest extends TestCase {
public function testSetEMailAddress() { public function testSetEMailAddress() {
/** /**
* @var Backend | \PHPUnit_Framework_MockObject_MockObject $backend * @var UserInterface | \PHPUnit_Framework_MockObject_MockObject $backend
*/ */
$backend = $this->createMock(\Test\Util\User\Dummy::class); $backend = $this->createMock(\Test\Util\User\Dummy::class);
@ -649,6 +650,99 @@ class UserTest extends TestCase {
$user->setEMailAddress('foo@bar.com'); $user->setEMailAddress('foo@bar.com');
} }
public function testSetEMailAddressNoChange() {
/**
* @var UserInterface | \PHPUnit_Framework_MockObject_MockObject $backend
*/
$backend = $this->createMock(\Test\Util\User\Dummy::class);
/** @var PublicEmitter|\PHPUnit_Framework_MockObject_MockObject $emitter */
$emitter = $this->createMock(PublicEmitter::class);
$emitter->expects($this->never())
->method('emit');
$config = $this->createMock(IConfig::class);
$config->expects($this->any())
->method('getUserValue')
->willReturn('foo@bar.com');
$config->expects($this->once())
->method('setUserValue')
->with(
'foo',
'settings',
'email',
'foo@bar.com'
);
$user = new User('foo', $backend, $emitter, $config);
$user->setEMailAddress('foo@bar.com');
}
public function testSetQuota() {
/**
* @var UserInterface | \PHPUnit_Framework_MockObject_MockObject $backend
*/
$backend = $this->createMock(\Test\Util\User\Dummy::class);
$test = $this;
$hooksCalled = 0;
/**
* @param IUser $user
* @param string $feature
* @param string $value
*/
$hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled) {
$hooksCalled++;
$test->assertEquals('quota', $feature);
$test->assertEquals('23 TB', $value);
};
$emitter = new PublicEmitter();
$emitter->listen('\OC\User', 'changeUser', $hook);
$config = $this->createMock(IConfig::class);
$config->expects($this->once())
->method('setUserValue')
->with(
'foo',
'files',
'quota',
'23 TB'
);
$user = new User('foo', $backend, $emitter, $config);
$user->setQuota('23 TB');
}
public function testSetQuotaAddressNoChange() {
/**
* @var UserInterface | \PHPUnit_Framework_MockObject_MockObject $backend
*/
$backend = $this->createMock(\Test\Util\User\Dummy::class);
/** @var PublicEmitter|\PHPUnit_Framework_MockObject_MockObject $emitter */
$emitter = $this->createMock(PublicEmitter::class);
$emitter->expects($this->never())
->method('emit');
$config = $this->createMock(IConfig::class);
$config->expects($this->any())
->method('getUserValue')
->willReturn('23 TB');
$config->expects($this->once())
->method('setUserValue')
->with(
'foo',
'files',
'quota',
'23 TB'
);
$user = new User('foo', $backend, $emitter, $config);
$user->setQuota('23 TB');
}
public function testGetLastLogin() { public function testGetLastLogin() {
/** /**
* @var Backend | \PHPUnit_Framework_MockObject_MockObject $backend * @var Backend | \PHPUnit_Framework_MockObject_MockObject $backend