diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index b5bf9bd0e7373a839e6e54b712e2da051e8306cd..d33545222b0b61dc0fd43ab0c07147a44438fd39 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 2a27dbeb0166e7f2602a07b061369b60c772e1f8..d8cf2a34115cc0255f01f406b1a6f713de0b6008 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 6137b34e28d483dbf55224213ef74be83af942d9..0d033f449820f017af43318fcfb6445c00bcc947 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 54ea4831be002d6d08c6604e925a70749486ab3b..7786deef38e180709da30070effeb26d6f7422af 100644 --- a/apps/federation/appinfo/info.xml +++ b/apps/federation/appinfo/info.xml @@ -5,7 +5,7 @@ <description>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.</description> <licence>AGPL</licence> <author>Bjoern Schiessle</author> - <version>0.0.2</version> + <version>0.0.3</version> <namespace>Federation</namespace> <category>other</category> <dependencies> diff --git a/apps/federation/lib/syncfederationaddressbooks.php b/apps/federation/lib/syncfederationaddressbooks.php index cff848bf135c695e48e578be580d266e42289fb9..f9f402ea03176ad17a444732f54b6fd4c24965fd 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 0000000000000000000000000000000000000000..6932c1e1360533b2c22e14714d54c330dde0391f --- /dev/null +++ b/apps/federation/tests/lib/syncfederationaddressbookstest.php @@ -0,0 +1,66 @@ +<?php + +namespace OCA\Federation\Tests\lib; + +use OCA\Federation\DbHandler; +use OCA\Federation\SyncFederationAddressBooks; + +class SyncFederationAddressbooksTest extends \Test\TestCase { + + /** @var array */ + private $callBacks = []; + + function testSync() { + /** @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' + ] + ]); + $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