diff options
author | Côme Chilliet <come.chilliet@nextcloud.com> | 2025-02-06 12:10:36 +0100 |
---|---|---|
committer | Côme Chilliet <91878298+come-nc@users.noreply.github.com> | 2025-02-10 14:52:18 +0100 |
commit | 4924fe9a12d0318b7dd07bf6ab703d6bce20285f (patch) | |
tree | 159ccdd6fa074dd271528faae008101dd5dbeeb3 /apps/dav/tests | |
parent | 402f5123d4a83f870585955937e9f8967b09e123 (diff) | |
download | nextcloud-server-4924fe9a12d0318b7dd07bf6ab703d6bce20285f.tar.gz nextcloud-server-4924fe9a12d0318b7dd07bf6ab703d6bce20285f.zip |
fix(dav): Migrate from hooks to user events
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'apps/dav/tests')
-rw-r--r-- | apps/dav/tests/unit/DAV/HookManagerTest.php | 222 | ||||
-rw-r--r-- | apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php | 140 |
2 files changed, 140 insertions, 222 deletions
diff --git a/apps/dav/tests/unit/DAV/HookManagerTest.php b/apps/dav/tests/unit/DAV/HookManagerTest.php deleted file mode 100644 index 746727cd2b3..00000000000 --- a/apps/dav/tests/unit/DAV/HookManagerTest.php +++ /dev/null @@ -1,222 +0,0 @@ -<?php - -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -namespace OCA\DAV\Tests\unit\DAV; - -use OCA\DAV\CalDAV\CalDavBackend; -use OCA\DAV\CardDAV\CardDavBackend; -use OCA\DAV\CardDAV\SyncService; -use OCA\DAV\HookManager; -use OCP\Defaults; -use OCP\IL10N; -use OCP\IUser; -use OCP\IUserManager; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class HookManagerTest extends TestCase { - /** @var IL10N */ - private $l10n; - - protected function setUp(): void { - parent::setUp(); - $this->l10n = $this->createMock(IL10N::class); - $this->l10n - ->expects($this->any()) - ->method('t') - ->willReturnCallback(function ($text, $parameters = []) { - return vsprintf($text, $parameters); - }); - } - - public function test(): void { - $user = $this->getMockBuilder(IUser::class) - ->disableOriginalConstructor() - ->getMock(); - $user->expects($this->once())->method('getUID')->willReturn('newUser'); - - /** @var IUserManager | MockObject $userManager */ - $userManager = $this->getMockBuilder(IUserManager::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var SyncService | MockObject $syncService */ - $syncService = $this->getMockBuilder(SyncService::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var Defaults | MockObject $syncService */ - $defaults = $this->getMockBuilder(Defaults::class) - ->disableOriginalConstructor() - ->getMock(); - - $defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca'); - - /** @var CalDavBackend | MockObject $cal */ - $cal = $this->getMockBuilder(CalDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $cal->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0); - $cal->expects($this->once())->method('createCalendar')->with( - 'principals/users/newUser', - 'personal', [ - '{DAV:}displayname' => 'Personal', - '{http://apple.com/ns/ical/}calendar-color' => '#745bca', - 'components' => 'VEVENT' - ]); - - /** @var CardDavBackend | MockObject $card */ - $card = $this->getMockBuilder(CardDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $card->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(0); - $card->expects($this->once())->method('createAddressBook')->with( - 'principals/users/newUser', - 'contacts', ['{DAV:}displayname' => 'Contacts']); - - $hm = new HookManager($userManager, $syncService, $cal, $card, $defaults); - $hm->firstLogin($user); - } - - public function testWithExisting(): void { - $user = $this->getMockBuilder(IUser::class) - ->disableOriginalConstructor() - ->getMock(); - $user->expects($this->once())->method('getUID')->willReturn('newUser'); - - /** @var IUserManager | MockObject $userManager */ - $userManager = $this->getMockBuilder(IUserManager::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var SyncService | MockObject $syncService */ - $syncService = $this->getMockBuilder(SyncService::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var Defaults | MockObject $syncService */ - $defaults = $this->getMockBuilder(Defaults::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var CalDavBackend | MockObject $cal */ - $cal = $this->getMockBuilder(CalDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $cal->expects($this->once())->method('getCalendarsForUserCount')->willReturn(1); - $cal->expects($this->never())->method('createCalendar'); - - /** @var CardDavBackend | MockObject $card */ - $card = $this->getMockBuilder(CardDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $card->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(1); - $card->expects($this->never())->method('createAddressBook'); - - $hm = new HookManager($userManager, $syncService, $cal, $card, $defaults); - $hm->firstLogin($user); - } - - public function testWithBirthdayCalendar(): void { - $user = $this->getMockBuilder(IUser::class) - ->disableOriginalConstructor() - ->getMock(); - $user->expects($this->once())->method('getUID')->willReturn('newUser'); - - /** @var IUserManager | MockObject $userManager */ - $userManager = $this->getMockBuilder(IUserManager::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var SyncService | MockObject $syncService */ - $syncService = $this->getMockBuilder(SyncService::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var Defaults | MockObject $syncService */ - $defaults = $this->getMockBuilder(Defaults::class) - ->disableOriginalConstructor() - ->getMock(); - $defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca'); - - /** @var CalDavBackend | MockObject $cal */ - $cal = $this->getMockBuilder(CalDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $cal->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0); - $cal->expects($this->once())->method('createCalendar')->with( - 'principals/users/newUser', - 'personal', [ - '{DAV:}displayname' => 'Personal', - '{http://apple.com/ns/ical/}calendar-color' => '#745bca', - 'components' => 'VEVENT' - ]); - - /** @var CardDavBackend | MockObject $card */ - $card = $this->getMockBuilder(CardDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $card->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(0); - $card->expects($this->once())->method('createAddressBook')->with( - 'principals/users/newUser', - 'contacts', ['{DAV:}displayname' => 'Contacts']); - - $hm = new HookManager($userManager, $syncService, $cal, $card, $defaults); - $hm->firstLogin($user); - } - - public function testDeleteCalendar(): void { - $user = $this->getMockBuilder(IUser::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var IUserManager | MockObject $userManager */ - $userManager = $this->getMockBuilder(IUserManager::class) - ->disableOriginalConstructor() - ->getMock(); - $userManager->expects($this->once())->method('get')->willReturn($user); - - /** @var SyncService | MockObject $syncService */ - $syncService = $this->getMockBuilder(SyncService::class) - ->disableOriginalConstructor() - ->getMock(); - $syncService->expects($this->once()) - ->method('deleteUser'); - - /** @var Defaults | MockObject $syncService */ - $defaults = $this->getMockBuilder(Defaults::class) - ->disableOriginalConstructor() - ->getMock(); - - /** @var CalDavBackend | MockObject $cal */ - $cal = $this->getMockBuilder(CalDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $cal->expects($this->once())->method('getUsersOwnCalendars')->willReturn([ - ['id' => 'personal'] - ]); - $cal->expects($this->once())->method('getSubscriptionsForUser')->willReturn([ - ['id' => 'some-subscription'] - ]); - $cal->expects($this->once())->method('deleteCalendar')->with('personal'); - $cal->expects($this->once())->method('deleteSubscription')->with('some-subscription'); - $cal->expects($this->once())->method('deleteAllSharesByUser'); - - /** @var CardDavBackend | MockObject $card */ - $card = $this->getMockBuilder(CardDavBackend::class) - ->disableOriginalConstructor() - ->getMock(); - $card->expects($this->once())->method('getUsersOwnAddressBooks')->willReturn([ - ['id' => 'personal'] - ]); - $card->expects($this->once())->method('deleteAddressBook'); - - $hm = new HookManager($userManager, $syncService, $cal, $card, $defaults); - $hm->preDeleteUser(['uid' => 'newUser']); - $hm->postDeleteUser(['uid' => 'newUser']); - } -} diff --git a/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php b/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php new file mode 100644 index 00000000000..ce91a2a7fa6 --- /dev/null +++ b/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php @@ -0,0 +1,140 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace OCA\DAV\Tests\unit\DAV\Listener; + +use OCA\DAV\CalDAV\CalDavBackend; +use OCA\DAV\CardDAV\CardDavBackend; +use OCA\DAV\CardDAV\SyncService; +use OCA\DAV\Listener\UserEventsListener; +use OCP\Defaults; +use OCP\IUser; +use OCP\IUserManager; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class UserEventsListenerTest extends TestCase { + private IUserManager&MockObject $userManager; + private SyncService&MockObject $syncService; + private CalDavBackend&MockObject $calDavBackend; + private CardDavBackend&MockObject $cardDavBackend; + private Defaults&MockObject $defaults; + + private UserEventsListener $userEventsListener; + + protected function setUp(): void { + parent::setUp(); + $this->userManager = $this->createMock(IUserManager::class); + $this->syncService = $this->createMock(SyncService::class); + $this->calDavBackend = $this->createMock(CalDavBackend::class); + $this->cardDavBackend = $this->createMock(CardDavBackend::class); + $this->defaults = $this->createMock(Defaults::class); + $this->userEventsListener = new UserEventsListener( + $this->userManager, + $this->syncService, + $this->calDavBackend, + $this->cardDavBackend, + $this->defaults, + ); + } + + public function test(): void { + $user = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $user->expects($this->once())->method('getUID')->willReturn('newUser'); + + $this->defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca'); + + $this->calDavBackend->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0); + $this->calDavBackend->expects($this->once())->method('createCalendar')->with( + 'principals/users/newUser', + 'personal', [ + '{DAV:}displayname' => 'Personal', + '{http://apple.com/ns/ical/}calendar-color' => '#745bca', + 'components' => 'VEVENT' + ]); + + $this->cardDavBackend->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(0); + $this->cardDavBackend->expects($this->once())->method('createAddressBook')->with( + 'principals/users/newUser', + 'contacts', ['{DAV:}displayname' => 'Contacts']); + + $this->userEventsListener->firstLogin($user); + } + + public function testWithExisting(): void { + $user = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $user->expects($this->once())->method('getUID')->willReturn('newUser'); + + $this->calDavBackend->expects($this->once())->method('getCalendarsForUserCount')->willReturn(1); + $this->calDavBackend->expects($this->never())->method('createCalendar'); + + $this->cardDavBackend->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(1); + $this->cardDavBackend->expects($this->never())->method('createAddressBook'); + + $this->userEventsListener->firstLogin($user); + } + + public function testWithBirthdayCalendar(): void { + $user = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $user->expects($this->once())->method('getUID')->willReturn('newUser'); + + $this->defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca'); + + $this->calDavBackend->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0); + $this->calDavBackend->expects($this->once())->method('createCalendar')->with( + 'principals/users/newUser', + 'personal', [ + '{DAV:}displayname' => 'Personal', + '{http://apple.com/ns/ical/}calendar-color' => '#745bca', + 'components' => 'VEVENT' + ]); + + $this->cardDavBackend->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(0); + $this->cardDavBackend->expects($this->once())->method('createAddressBook')->with( + 'principals/users/newUser', + 'contacts', ['{DAV:}displayname' => 'Contacts']); + + $this->userEventsListener->firstLogin($user); + } + + public function testDeleteCalendar(): void { + $user = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $user->expects($this->once())->method('getUID')->willReturn('newUser'); + + $this->syncService->expects($this->once()) + ->method('deleteUser'); + + $this->calDavBackend->expects($this->once())->method('getUsersOwnCalendars')->willReturn([ + ['id' => 'personal'] + ]); + $this->calDavBackend->expects($this->once())->method('getSubscriptionsForUser')->willReturn([ + ['id' => 'some-subscription'] + ]); + $this->calDavBackend->expects($this->once())->method('deleteCalendar')->with('personal'); + $this->calDavBackend->expects($this->once())->method('deleteSubscription')->with('some-subscription'); + $this->calDavBackend->expects($this->once())->method('deleteAllSharesByUser'); + + $this->cardDavBackend->expects($this->once())->method('getUsersOwnAddressBooks')->willReturn([ + ['id' => 'personal'] + ]); + $this->cardDavBackend->expects($this->once())->method('deleteAddressBook'); + + $this->userEventsListener->preDeleteUser($user); + $this->userEventsListener->postDeleteUser('newUser'); + } +} |