From 2d7528bc64640240452711891ce0b339935797c0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20M=C3=BCller?= Date: Mon, 25 Jan 2016 11:39:57 +0100 Subject: [PATCH] Adding unit tests --- apps/dav/appinfo/app.php | 1 - apps/dav/appinfo/application.php | 1 - apps/federation/appinfo/application.php | 3 +- apps/federation/appinfo/info.xml | 2 +- .../lib/syncfederationaddressbooks.php | 7 +- .../lib/syncfederationaddressbookstest.php | 66 +++++++++++++++++++ 6 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 apps/federation/tests/lib/syncfederationaddressbookstest.php diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index b5bf9bd0e73..d33545222b0 100644 --- a/apps/dav/appinfo/app.php +++ b/apps/dav/appinfo/app.php @@ -25,7 +25,6 @@ $app = new Application(); $app->registerHooks(); \OC::$server->registerService('CardDAVSyncService', function() use ($app) { - return $app->getSyncService(); }); diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index 2a27dbeb016..d8cf2a34115 100644 --- a/apps/dav/appinfo/application.php +++ b/apps/dav/appinfo/application.php @@ -20,7 +20,6 @@ */ namespace OCA\Dav\AppInfo; -use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\CardDAV\ContactsManager; use OCA\DAV\CardDAV\SyncJob; use OCA\DAV\CardDAV\SyncService; diff --git a/apps/federation/appinfo/application.php b/apps/federation/appinfo/application.php index 6137b34e28d..0d033f44982 100644 --- a/apps/federation/appinfo/application.php +++ b/apps/federation/appinfo/application.php @@ -174,8 +174,9 @@ class Application extends \OCP\AppFramework\App { * @return SyncFederationAddressBooks */ public function getSyncService() { + $syncService = \OC::$server->query('CardDAVSyncService'); $dbHandler = $this->getContainer()->query('DbHandler'); - return new SyncFederationAddressBooks($dbHandler); + return new SyncFederationAddressBooks($dbHandler, $syncService); } } diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml index 54ea4831be0..7786deef38e 100644 --- a/apps/federation/appinfo/info.xml +++ b/apps/federation/appinfo/info.xml @@ -5,7 +5,7 @@ ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing. AGPL Bjoern Schiessle - 0.0.2 + 0.0.3 Federation other diff --git a/apps/federation/lib/syncfederationaddressbooks.php b/apps/federation/lib/syncfederationaddressbooks.php index cff848bf135..f9f402ea031 100644 --- a/apps/federation/lib/syncfederationaddressbooks.php +++ b/apps/federation/lib/syncfederationaddressbooks.php @@ -19,9 +19,8 @@ class SyncFederationAddressBooks { /** * @param DbHandler $dbHandler */ - function __construct(DbHandler $dbHandler) { - - $this->syncService = \OC::$server->query('CardDAVSyncService'); + function __construct(DbHandler $dbHandler, $syncService) { + $this->syncService = $syncService; $this->dbHandler = $dbHandler; } @@ -30,7 +29,7 @@ class SyncFederationAddressBooks { $trustedServers = $this->dbHandler->getAllServer(); foreach ($trustedServers as $trustedServer) { $url = $trustedServer['url']; - $callback($url); + $callback($url, null); $sharedSecret = $trustedServer['shared_secret']; $syncToken = $trustedServer['sync_token']; diff --git a/apps/federation/tests/lib/syncfederationaddressbookstest.php b/apps/federation/tests/lib/syncfederationaddressbookstest.php new file mode 100644 index 00000000000..6932c1e1360 --- /dev/null +++ b/apps/federation/tests/lib/syncfederationaddressbookstest.php @@ -0,0 +1,66 @@ +getMockBuilder('OCA\Federation\DbHandler')-> + disableOriginalConstructor()-> + getMock(); + $dbHandler->method('getAllServer')-> + willReturn([ + [ + 'url' => 'https://cloud.drop.box', + 'shared_secret' => 'iloveowncloud', + '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(); + $syncService->expects($this->once())->method('syncRemoteAddressBook') + ->willReturn(1); + + $s = new SyncFederationAddressBooks($dbHandler, $syncService); + $s->syncThemAll(function($url, $ex) { + $this->callBacks[] = [$url, $ex]; + }); + $this->assertEquals(1, count($this->callBacks)); + } + + function testException() { + /** @var DbHandler | \PHPUnit_Framework_MockObject_MockObject $dbHandler */ + $dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler')-> + disableOriginalConstructor()-> + getMock(); + $dbHandler->method('getAllServer')-> + willReturn([ + [ + 'url' => 'https://cloud.drop.box', + 'shared_secret' => 'iloveowncloud', + 'sync_token' => '0' + ] + ]); + $syncService = $this->getMockBuilder('OCA\DAV\CardDAV\SyncService') + ->disableOriginalConstructor() + ->getMock(); + $syncService->expects($this->once())->method('syncRemoteAddressBook') + ->willThrowException(new \Exception('something did not work out')); + + $s = new SyncFederationAddressBooks($dbHandler, $syncService); + $s->syncThemAll(function($url, $ex) { + $this->callBacks[] = [$url, $ex]; + }); + $this->assertEquals(2, count($this->callBacks)); + } +} \ No newline at end of file -- 2.39.5