diff options
Diffstat (limited to 'apps/federation/tests/SyncFederationAddressbooksTest.php')
-rw-r--r-- | apps/federation/tests/SyncFederationAddressbooksTest.php | 109 |
1 files changed, 62 insertions, 47 deletions
diff --git a/apps/federation/tests/SyncFederationAddressbooksTest.php b/apps/federation/tests/SyncFederationAddressbooksTest.php index 1ebca2f6a0f..ff03f5cf442 100644 --- a/apps/federation/tests/SyncFederationAddressbooksTest.php +++ b/apps/federation/tests/SyncFederationAddressbooksTest.php @@ -1,5 +1,6 @@ <?php +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,86 +9,100 @@ namespace OCA\Federation\Tests; use OC\OCS\DiscoveryService; +use OCA\DAV\CardDAV\SyncService; use OCA\Federation\DbHandler; use OCA\Federation\SyncFederationAddressBooks; +use OCA\Federation\TrustedServers; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; class SyncFederationAddressbooksTest extends \Test\TestCase { - - /** @var array */ - private $callBacks = []; - - /** @var MockObject | DiscoveryService */ - private $discoveryService; - - /** @var MockObject|LoggerInterface */ - private $logger; + private array $callBacks = []; + private DiscoveryService&MockObject $discoveryService; + private LoggerInterface&MockObject $logger; protected function setUp(): void { parent::setUp(); - $this->discoveryService = $this->getMockBuilder(DiscoveryService::class) - ->disableOriginalConstructor()->getMock(); + $this->discoveryService = $this->createMock(DiscoveryService::class); $this->discoveryService->expects($this->any())->method('discover')->willReturn([]); $this->logger = $this->createMock(LoggerInterface::class); } - public function testSync() { - /** @var DbHandler | MockObject $dbHandler */ - $dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler') - ->disableOriginalConstructor() - ->getMock(); + public function testSync(): void { + /** @var DbHandler&MockObject $dbHandler */ + $dbHandler = $this->createMock(DbHandler::class); $dbHandler->method('getAllServer') ->willReturn([ [ - 'url' => 'https://cloud.drop.box', + 'url' => 'https://cloud.example.org', 'url_hash' => 'sha1', - 'shared_secret' => 'iloveowncloud', + 'shared_secret' => 'ilovenextcloud', 'sync_token' => '0' ] ]); - $dbHandler->expects($this->once())->method('setServerStatus')-> - with('https://cloud.drop.box', 1, '1'); - $syncService = $this->getMockBuilder('OCA\DAV\CardDAV\SyncService') - ->disableOriginalConstructor() - ->getMock(); + $dbHandler->expects($this->once())->method('setServerStatus') + ->with('https://cloud.example.org', 1, '1'); + $syncService = $this->createMock(SyncService::class); $syncService->expects($this->once())->method('syncRemoteAddressBook') - ->willReturn('1'); + ->willReturn(['1', false]); - /** @var \OCA\DAV\CardDAV\SyncService $syncService */ + /** @var SyncService $syncService */ $s = new SyncFederationAddressBooks($dbHandler, $syncService, $this->discoveryService, $this->logger); - $s->syncThemAll(function ($url, $ex) { + $s->syncThemAll(function ($url, $ex): void { $this->callBacks[] = [$url, $ex]; }); - $this->assertEquals('1', count($this->callBacks)); + $this->assertCount(1, $this->callBacks); } - public function testException() { - /** @var DbHandler | MockObject $dbHandler */ - $dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler')-> - disableOriginalConstructor()-> - getMock(); - $dbHandler->method('getAllServer')-> - willReturn([ - [ - 'url' => 'https://cloud.drop.box', - 'url_hash' => 'sha1', - 'shared_secret' => 'iloveowncloud', - 'sync_token' => '0' - ] - ]); - $syncService = $this->getMockBuilder('OCA\DAV\CardDAV\SyncService') - ->disableOriginalConstructor() - ->getMock(); + public function testException(): void { + /** @var DbHandler&MockObject $dbHandler */ + $dbHandler = $this->createMock(DbHandler::class); + $dbHandler->method('getAllServer') + ->willReturn([ + [ + 'url' => 'https://cloud.example.org', + 'url_hash' => 'sha1', + 'shared_secret' => 'ilovenextcloud', + 'sync_token' => '0' + ] + ]); + $syncService = $this->createMock(SyncService::class); $syncService->expects($this->once())->method('syncRemoteAddressBook') ->willThrowException(new \Exception('something did not work out')); - /** @var \OCA\DAV\CardDAV\SyncService $syncService */ + /** @var SyncService $syncService */ + $s = new SyncFederationAddressBooks($dbHandler, $syncService, $this->discoveryService, $this->logger); + $s->syncThemAll(function ($url, $ex): void { + $this->callBacks[] = [$url, $ex]; + }); + $this->assertCount(2, $this->callBacks); + } + + public function testSuccessfulSyncWithoutChangesAfterFailure(): void { + /** @var DbHandler&MockObject $dbHandler */ + $dbHandler = $this->createMock(DbHandler::class); + $dbHandler->method('getAllServer') + ->willReturn([ + [ + 'url' => 'https://cloud.example.org', + 'url_hash' => 'sha1', + 'shared_secret' => 'ilovenextcloud', + 'sync_token' => '0' + ] + ]); + $dbHandler->method('getServerStatus')->willReturn(TrustedServers::STATUS_FAILURE); + $dbHandler->expects($this->once())->method('setServerStatus') + ->with('https://cloud.example.org', 1); + $syncService = $this->createMock(SyncService::class); + $syncService->expects($this->once())->method('syncRemoteAddressBook') + ->willReturn(['0', false]); + + /** @var SyncService $syncService */ $s = new SyncFederationAddressBooks($dbHandler, $syncService, $this->discoveryService, $this->logger); - $s->syncThemAll(function ($url, $ex) { + $s->syncThemAll(function ($url, $ex): void { $this->callBacks[] = [$url, $ex]; }); - $this->assertEquals(2, count($this->callBacks)); + $this->assertCount(1, $this->callBacks); } } |