summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2019-06-18 23:19:56 +0200
committerGitHub <noreply@github.com>2019-06-18 23:19:56 +0200
commit89513767331263c331229446b377fa9d43936dee (patch)
treee5691210e051590ea35a35f2adc2ab2701f7313a
parent366374d8e3d5927690a51185a974ad139015b897 (diff)
parenta1f2dbe29ccb66863b70f134098a631053f3db0d (diff)
downloadnextcloud-server-89513767331263c331229446b377fa9d43936dee.tar.gz
nextcloud-server-89513767331263c331229446b377fa9d43936dee.zip
Merge pull request #15987 from nextcloud/fix/noid/cache-displayname-on-save
cache the displayname after an LDAP plugin set it
-rw-r--r--apps/user_ldap/lib/User_LDAP.php4
-rw-r--r--apps/user_ldap/tests/User_LDAPTest.php30
2 files changed, 30 insertions, 4 deletions
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index cdbc2e9b350..ada07aa53a9 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -506,7 +506,9 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
*/
public function setDisplayName($uid, $displayName) {
if ($this->userPluginManager->implementsActions(Backend::SET_DISPLAYNAME)) {
- return $this->userPluginManager->setDisplayName($uid, $displayName);
+ $this->userPluginManager->setDisplayName($uid, $displayName);
+ $this->access->cacheUserDisplayName($uid, $displayName);
+ return $displayName;
}
return false;
}
diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php
index f58c5f881f9..e4f7bb8b6d2 100644
--- a/apps/user_ldap/tests/User_LDAPTest.php
+++ b/apps/user_ldap/tests/User_LDAPTest.php
@@ -1391,16 +1391,38 @@ class User_LDAPTest extends TestCase {
}
public function testSetDisplayNameWithPlugin() {
+ $newDisplayName = 'J. Baker';
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::SET_DISPLAYNAME)
->willReturn(true);
$this->pluginManager->expects($this->once())
->method('setDisplayName')
- ->with('uid','displayName')
- ->willReturn('result');
+ ->with('uid', $newDisplayName)
+ ->willReturn($newDisplayName);
+ $this->access->expects($this->once())
+ ->method('cacheUserDisplayName');
+
+ $this->assertEquals($newDisplayName, $this->backend->setDisplayName('uid', $newDisplayName));
+ }
+
+ /**
+ * @expectedException \OC\HintException
+ */
+ public function testSetDisplayNameErrorWithPlugin() {
+ $newDisplayName = 'J. Baker';
+ $this->pluginManager->expects($this->once())
+ ->method('implementsActions')
+ ->with(Backend::SET_DISPLAYNAME)
+ ->willReturn(true);
+ $this->pluginManager->expects($this->once())
+ ->method('setDisplayName')
+ ->with('uid', $newDisplayName)
+ ->willThrowException(new HintException('something happned'));
+ $this->access->expects($this->never())
+ ->method('cacheUserDisplayName');
- $this->assertEquals($this->backend->setDisplayName('uid', 'displayName'),'result');
+ $this->backend->setDisplayName('uid', $newDisplayName);
}
public function testSetDisplayNameFailing() {
@@ -1408,6 +1430,8 @@ class User_LDAPTest extends TestCase {
->method('implementsActions')
->with(Backend::SET_DISPLAYNAME)
->willReturn(false);
+ $this->access->expects($this->never())
+ ->method('cacheUserDisplayName');
$this->assertFalse($this->backend->setDisplayName('uid', 'displayName'));
}