summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2017-04-25 17:11:57 +0200
committerJoas Schilling <coding@schilljs.com>2017-04-25 17:20:35 +0200
commitac0c21f4a7473396677ab5eb461c660532a1558e (patch)
tree819566c251668c6f3f14763aaa7f7c1c1a225a20
parent8ef25a7628d44465d4777686227407f9a2067700 (diff)
downloadnextcloud-server-ac0c21f4a7473396677ab5eb461c660532a1558e.tar.gz
nextcloud-server-ac0c21f4a7473396677ab5eb461c660532a1558e.zip
Trigger change when a user is enabled/disabled
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--lib/private/User/User.php6
-rw-r--r--tests/lib/User/UserTest.php50
2 files changed, 54 insertions, 2 deletions
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index a3be0c24bb9..f55807bc769 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -342,9 +342,13 @@ class User implements IUser {
* @param bool $enabled
*/
public function setEnabled($enabled) {
+ $oldStatus = $this->isEnabled();
$this->enabled = $enabled;
$enabled = ($enabled) ? 'true' : 'false';
- $this->config->setUserValue($this->uid, 'core', 'enabled', $enabled);
+ if ($oldStatus !== $this->enabled) {
+ $this->triggerChange('enabled', $enabled);
+ $this->config->setUserValue($this->uid, 'core', 'enabled', $enabled);
+ }
}
/**
diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php
index 5fc07b692f7..b53d07b0d4e 100644
--- a/tests/lib/User/UserTest.php
+++ b/tests/lib/User/UserTest.php
@@ -705,7 +705,55 @@ class UserTest extends TestCase {
'false'
);
- $user = new User('foo', $backend, null, $config);
+ $user = $this->getMockBuilder(User::class)
+ ->setConstructorArgs([
+ 'foo',
+ $backend,
+ null,
+ $config,
+ ])
+ ->setMethods(['isEnabled', 'triggerChange'])
+ ->getMock();
+
+ $user->expects($this->once())
+ ->method('isEnabled')
+ ->willReturn(true);
+ $user->expects($this->once())
+ ->method('triggerChange')
+ ->with(
+ 'enabled',
+ 'false'
+ );
+
+ $user->setEnabled(false);
+ }
+
+ public function testSetDisabledAlreadyDisabled() {
+ /**
+ * @var Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->createMock(\Test\Util\User\Dummy::class);
+
+ $config = $this->createMock(IConfig::class);
+ $config->expects($this->never())
+ ->method('setUserValue');
+
+ $user = $this->getMockBuilder(User::class)
+ ->setConstructorArgs([
+ 'foo',
+ $backend,
+ null,
+ $config,
+ ])
+ ->setMethods(['isEnabled', 'triggerChange'])
+ ->getMock();
+
+ $user->expects($this->once())
+ ->method('isEnabled')
+ ->willReturn(false);
+ $user->expects($this->never())
+ ->method('triggerChange');
+
$user->setEnabled(false);
}