summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/lib/User/User.php11
-rw-r--r--apps/user_ldap/tests/User/UserTest.php25
2 files changed, 34 insertions, 2 deletions
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index 02764a72eca..4afc8032f73 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -414,14 +414,21 @@ class User {
*
* @param string $displayName
* @param string $displayName2
- * @returns string the effective display name
+ * @return string the effective display name
*/
public function composeAndStoreDisplayName($displayName, $displayName2 = '') {
$displayName2 = (string)$displayName2;
if($displayName2 !== '') {
$displayName .= ' (' . $displayName2 . ')';
}
- $this->store('displayName', $displayName);
+ $oldName = $this->config->getUserValue($this->uid, 'user_ldap', 'displayName', '');
+ if ($oldName !== $displayName) {
+ $this->store('displayName', $displayName);
+ $user = $this->userManager->get($this->getUsername());
+ if ($user instanceof \OC\User\User) {
+ $user->triggerChange('displayName', $displayName);
+ }
+ }
return $displayName;
}
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index 837c72a3a31..63c90c6ac72 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -1010,11 +1010,36 @@ class UserTest extends \Test\TestCase {
public function testComposeAndStoreDisplayName($part1, $part2, $expected) {
$this->config->expects($this->once())
->method('setUserValue');
+ $this->config->expects($this->once())
+ ->method('getUserValue');
+
+ $ncUserObj = $this->createMock(\OC\User\User::class);
+ $ncUserObj->expects($this->once())
+ ->method('triggerChange')
+ ->with('displayName', $expected);
+ $this->userManager->expects($this->once())
+ ->method('get')
+ ->willReturn($ncUserObj);
$displayName = $this->user->composeAndStoreDisplayName($part1, $part2);
$this->assertSame($expected, $displayName);
}
+ public function testComposeAndStoreDisplayNameNoOverwrite() {
+ $displayName = 'Randall Flagg';
+ $this->config->expects($this->never())
+ ->method('setUserValue');
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->willReturn($displayName);
+
+ $this->userManager->expects($this->never())
+ ->method('get'); // Implicit: no triggerChange can be called
+
+ $composedDisplayName = $this->user->composeAndStoreDisplayName($displayName);
+ $this->assertSame($composedDisplayName, $displayName);
+ }
+
public function testHandlePasswordExpiryWarningDefaultPolicy() {
$this->connection->expects($this->any())
->method('__get')