From 108227ca6c32b6fc61a08fb6299a1951206f2cd9 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Wed, 26 Jun 2019 14:18:28 +0200 Subject: [PATCH] invalidates user when plugin reported deletion success Signed-off-by: Arthur Schiwon --- apps/user_ldap/lib/User_LDAP.php | 9 ++++++--- apps/user_ldap/tests/User_LDAPTest.php | 22 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php index 5e06547533..85b11acfc5 100644 --- a/apps/user_ldap/lib/User_LDAP.php +++ b/apps/user_ldap/lib/User_LDAP.php @@ -382,18 +382,21 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn */ public function deleteUser($uid) { if ($this->userPluginManager->canDeleteUser()) { - return $this->userPluginManager->deleteUser($uid); + $status = $this->userPluginManager->deleteUser($uid); + if($status === false) { + return false; + } } $marked = $this->ocConfig->getUserValue($uid, 'user_ldap', 'isDeleted', 0); if((int)$marked === 0) { \OC::$server->getLogger()->notice( 'User '.$uid . ' is not marked as deleted, not cleaning up.', - array('app' => 'user_ldap')); + ['app' => 'user_ldap']); return false; } \OC::$server->getLogger()->info('Cleaning up after user ' . $uid, - array('app' => 'user_ldap')); + ['app' => 'user_ldap']); $this->access->getUserMapper()->unmap($uid); // we don't emit unassign signals here, since it is implicit to delete signals fired from core $this->access->userManager->invalidate($uid); diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index 9b8bda2b80..7517994b34 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -343,9 +343,27 @@ class User_LDAPTest extends TestCase { $this->pluginManager->expects($this->once()) ->method('deleteUser') ->with('uid') - ->willReturn('result'); + ->willReturn(true); - $this->assertEquals($this->backend->deleteUser('uid'),'result'); + $this->config->expects($this->once()) + ->method('getUserValue') + ->with('uid', 'user_ldap', 'isDeleted', 0) + ->willReturn(1); + + $mapper = $this->createMock(UserMapping::class); + $mapper->expects($this->once()) + ->method('unmap') + ->with('uid'); + + $this->access->expects($this->atLeastOnce()) + ->method('getUserMapper') + ->willReturn($mapper); + + $this->userManager->expects($this->once()) + ->method('invalidate') + ->with('uid'); + + $this->assertEquals(true, $this->backend->deleteUser('uid')); } /**