mirror of
https://github.com/nextcloud/server.git
synced 2026-05-19 08:25:56 -04:00
Merge pull request #59507 from nextcloud/fix/noid/sab-clean-wrong-backend
fix: Remove SAB entries if backend does not match
This commit is contained in:
commit
c73ddd4ff3
2 changed files with 42 additions and 1 deletions
|
|
@ -201,7 +201,10 @@ class SyncService extends ASyncService {
|
|||
$vCard = Reader::read($card['carddata']);
|
||||
$uid = $vCard->UID->getValue();
|
||||
// load backend and see if user exists
|
||||
if (!$this->userManager->userExists($uid)) {
|
||||
$user = $this->userManager->get($uid);
|
||||
|
||||
// If the user does not exist
|
||||
if ($user === null || self::getCardUri($user) !== $card['uri']) {
|
||||
$this->deleteUser($card['uri']);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -367,6 +367,44 @@ END:VCARD';
|
|||
$ss->deleteUser($user);
|
||||
}
|
||||
|
||||
public function testSyncInstance(): void {
|
||||
/** @var CardDavBackend | MockObject $backend */
|
||||
$backend = $this->getMockBuilder(CardDavBackend::class)->disableOriginalConstructor()->getMock();
|
||||
$logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
|
||||
|
||||
$backend->expects($this->exactly(1))->method('deleteCard');
|
||||
|
||||
$backend->method('getCards')->willReturn([
|
||||
[
|
||||
'carddata' => "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:test-user\r\nFN:test-user\r\nN:test-user;;;;\r\nEND:VCARD\r\n\r\n",
|
||||
'uri' => 'Database:test-user.vcf',
|
||||
],
|
||||
[
|
||||
'carddata' => "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.4.8//EN\r\nUID:test-user\r\nFN:test-user\r\nN:test-user;;;;\r\nEND:VCARD\r\n\r\n",
|
||||
'uri' => 'LDAP:test-user.vcf',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$backend->method('getAddressBooksByUri')
|
||||
->with('principals/system/system', 'system')
|
||||
->willReturn(['id' => -1]);
|
||||
|
||||
$userManager = $this->createMock(IUserManager::class);
|
||||
$dbConnection = $this->createMock(IDBConnection::class);
|
||||
$user = $this->createMock(IUser::class);
|
||||
$user->method('getBackendClassName')->willReturn('LDAP');
|
||||
$user->method('getUID')->willReturn('test-user');
|
||||
$userManager->method('get')->willReturn($user);
|
||||
|
||||
$converter = $this->createMock(Converter::class);
|
||||
$clientService = $this->createMock(IClientService::class);
|
||||
$config = $this->createMock(IConfig::class);
|
||||
|
||||
$ss = new SyncService($clientService, $config, $backend, $userManager, $dbConnection, $logger, $converter);
|
||||
$ss->syncInstance();
|
||||
}
|
||||
|
||||
public function testDeleteAddressbookWhenAccessRevoked(): void {
|
||||
$this->expectException(ClientExceptionInterface::class);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue