12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- declare(strict_types=1);
- /**
- * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OCA\DAV\Tests\unit\BackgroundJob;
- use InvalidArgumentException;
- use OCA\DAV\AppInfo\Application;
- use OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob;
- use OCA\DAV\CalDAV\CalDavBackend;
- use OCA\DAV\CardDAV\CardDavBackend;
- use OCP\AppFramework\Utility\ITimeFactory;
- use OCP\IConfig;
- use PHPUnit\Framework\MockObject\MockObject;
- use Psr\Log\LoggerInterface;
- use Test\TestCase;
- class PruneOutdatedSyncTokensJobTest extends TestCase {
- /** @var ITimeFactory | MockObject */
- private $timeFactory;
- /** @var CalDavBackend | MockObject */
- private $calDavBackend;
- /** @var CardDavBackend | MockObject */
- private $cardDavBackend;
- /** @var IConfig|MockObject */
- private $config;
- /** @var LoggerInterface|MockObject */
- private $logger;
- private PruneOutdatedSyncTokensJob $backgroundJob;
- protected function setUp(): void {
- parent::setUp();
- $this->timeFactory = $this->createMock(ITimeFactory::class);
- $this->calDavBackend = $this->createMock(CalDavBackend::class);
- $this->cardDavBackend = $this->createMock(CardDavBackend::class);
- $this->config = $this->createMock(IConfig::class);
- $this->logger = $this->createMock(LoggerInterface::class);
- $this->backgroundJob = new PruneOutdatedSyncTokensJob($this->timeFactory, $this->calDavBackend, $this->cardDavBackend, $this->config, $this->logger);
- }
- /**
- * @dataProvider dataForTestRun
- */
- public function testRun(string $configToKeep, string $configRetentionDays, int $actualLimit, int $retentionDays, int $deletedCalendarSyncTokens, int $deletedAddressBookSyncTokens): void {
- $this->config->expects($this->exactly(2))
- ->method('getAppValue')
- ->with(Application::APP_ID, self::anything(), self::anything())
- ->willReturnCallback(function ($app, $key) use ($configToKeep, $configRetentionDays) {
- switch ($key) {
- case 'totalNumberOfSyncTokensToKeep':
- return $configToKeep;
- case 'syncTokensRetentionDays':
- return $configRetentionDays;
- default:
- throw new InvalidArgumentException();
- }
- });
- $this->calDavBackend->expects($this->once())
- ->method('pruneOutdatedSyncTokens')
- ->with($actualLimit)
- ->willReturn($deletedCalendarSyncTokens);
- $this->cardDavBackend->expects($this->once())
- ->method('pruneOutdatedSyncTokens')
- ->with($actualLimit, $retentionDays)
- ->willReturn($deletedAddressBookSyncTokens);
- $this->logger->expects($this->once())
- ->method('info')
- ->with('Pruned {calendarSyncTokensNumber} calendar sync tokens and {addressBooksSyncTokensNumber} address book sync tokens', [
- 'calendarSyncTokensNumber' => $deletedCalendarSyncTokens,
- 'addressBooksSyncTokensNumber' => $deletedAddressBookSyncTokens
- ]);
- $this->backgroundJob->run(null);
- }
- public function dataForTestRun(): array {
- return [
- ['100', '2', 100, 7 * 24 * 3600, 2, 3],
- ['100', '14', 100, 14 * 24 * 3600, 2, 3],
- ['0', '60', 1, 60 * 24 * 3600, 0, 0]
- ];
- }
- }
|