diff options
author | Björn Schießle <bjoern@schiessle.org> | 2017-04-12 16:01:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-12 16:01:07 +0200 |
commit | b90e91144bc8d378f6f52025f04383ae2e7c647b (patch) | |
tree | 616619d3778182ac53e77dc605fc9bded595fc63 /apps/federatedfilesharing | |
parent | 3cf2f6e31bca4b704549e428d7fcbf6c4ecd6c37 (diff) | |
parent | 42f40659f664b4cdcdd5f19cf7300ad740aec6a4 (diff) | |
download | nextcloud-server-b90e91144bc8d378f6f52025f04383ae2e7c647b.tar.gz nextcloud-server-b90e91144bc8d378f6f52025f04383ae2e7c647b.zip |
Merge pull request #3614 from nextcloud/discover-federatedsharing-endpoints
Discover federatedsharing endpoints
Diffstat (limited to 'apps/federatedfilesharing')
9 files changed, 28 insertions, 411 deletions
diff --git a/apps/federatedfilesharing/lib/AppInfo/Application.php b/apps/federatedfilesharing/lib/AppInfo/Application.php index 3e97edeada0..9d8464e37d5 100644 --- a/apps/federatedfilesharing/lib/AppInfo/Application.php +++ b/apps/federatedfilesharing/lib/AppInfo/Application.php @@ -51,10 +51,7 @@ class Application extends App { $notification = new Notifications( $addressHandler, $server->getHTTPClientService(), - new \OCA\FederatedFileSharing\DiscoveryManager( - $server->getMemCacheFactory(), - $server->getHTTPClientService() - ), + $server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getJobList() ); return new RequestHandlerController( @@ -99,14 +96,10 @@ class Application extends App { \OC::$server->getL10N('federatedfilesharing'), \OC::$server->getCloudIdManager() ); - $discoveryManager = new \OCA\FederatedFileSharing\DiscoveryManager( - \OC::$server->getMemCacheFactory(), - \OC::$server->getHTTPClientService() - ); $notifications = new \OCA\FederatedFileSharing\Notifications( $addressHandler, \OC::$server->getHTTPClientService(), - $discoveryManager, + \OC::$server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getJobList() ); $tokenHandler = new \OCA\FederatedFileSharing\TokenHandler( diff --git a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php index 2356c569d87..821647e5e39 100644 --- a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php +++ b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php @@ -27,7 +27,6 @@ namespace OCA\FederatedFileSharing\BackgroundJob; use OC\BackgroundJob\Job; use OC\BackgroundJob\JobList; use OCA\FederatedFileSharing\AddressHandler; -use OCA\FederatedFileSharing\DiscoveryManager; use OCA\FederatedFileSharing\Notifications; use OCP\BackgroundJob\IJobList; use OCP\ILogger; @@ -68,14 +67,10 @@ class RetryJob extends Job { \OC::$server->getL10N('federatedfilesharing'), \OC::$server->getCloudIdManager() ); - $discoveryManager = new DiscoveryManager( - \OC::$server->getMemCacheFactory(), - \OC::$server->getHTTPClientService() - ); $this->notifications = new Notifications( $addressHandler, \OC::$server->getHTTPClientService(), - $discoveryManager, + \OC::$server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getJobList() ); } @@ -108,7 +103,7 @@ class RetryJob extends Job { $try = (int)$argument['try'] + 1; $result = $this->notifications->sendUpdateToRemote($remote, $remoteId, $token, $action, $data, $try); - + if ($result === true || $try > $this->maxTry) { $this->retainJob = false; } diff --git a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php index dd2e88d2dae..d7e466d1a64 100644 --- a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php +++ b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php @@ -248,17 +248,13 @@ class MountPublicLinkController extends Controller { if (Helper::isSameUserOnSameServer($owner, $remote, $currentUser, $currentServer)) { return new JSONResponse(['message' => $this->l->t('Not allowed to create a federated share with the owner.')], Http::STATUS_BAD_REQUEST); } - $discoveryManager = new DiscoveryManager( - \OC::$server->getMemCacheFactory(), - \OC::$server->getHTTPClientService() - ); $externalManager = new Manager( \OC::$server->getDatabaseConnection(), Filesystem::getMountManager(), Filesystem::getLoader(), \OC::$server->getHTTPClientService(), \OC::$server->getNotificationManager(), - $discoveryManager, + \OC::$server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getUserSession()->getUser()->getUID() ); diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php index a41481afd2a..2b643810fb4 100644 --- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php +++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php @@ -152,19 +152,15 @@ class RequestHandlerController extends OCSController { \OC_Util::setupFS($shareWith); - $discoveryManager = new DiscoveryManager( - \OC::$server->getMemCacheFactory(), - \OC::$server->getHTTPClientService() - ); $externalManager = new \OCA\Files_Sharing\External\Manager( - \OC::$server->getDatabaseConnection(), - \OC\Files\Filesystem::getMountManager(), - \OC\Files\Filesystem::getLoader(), - \OC::$server->getHTTPClientService(), - \OC::$server->getNotificationManager(), - $discoveryManager, - $shareWith - ); + \OC::$server->getDatabaseConnection(), + \OC\Files\Filesystem::getMountManager(), + \OC\Files\Filesystem::getLoader(), + \OC::$server->getHTTPClientService(), + \OC::$server->getNotificationManager(), + \OC::$server->query(\OCP\OCS\IDiscoveryService::class), + $shareWith + ); try { $externalManager->addShare($remote, $token, '', $name, $owner, false, $shareWith, $remoteId); diff --git a/apps/federatedfilesharing/lib/DiscoveryManager.php b/apps/federatedfilesharing/lib/DiscoveryManager.php deleted file mode 100644 index 8c8c72dbd66..00000000000 --- a/apps/federatedfilesharing/lib/DiscoveryManager.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Bjoern Schiessle <bjoern@schiessle.org> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OCA\FederatedFileSharing; - -use GuzzleHttp\Exception\ClientException; -use GuzzleHttp\Exception\ConnectException; -use OCP\Http\Client\IClient; -use OCP\Http\Client\IClientService; -use OCP\ICache; -use OCP\ICacheFactory; - -/** - * Class DiscoveryManager handles the discovery of endpoints used by Federated - * Cloud Sharing. - * - * @package OCA\FederatedFileSharing - */ -class DiscoveryManager { - /** @var ICache */ - private $cache; - /** @var IClient */ - private $client; - - /** - * @param ICacheFactory $cacheFactory - * @param IClientService $clientService - */ - public function __construct(ICacheFactory $cacheFactory, - IClientService $clientService) { - $this->cache = $cacheFactory->create('ocs-discovery'); - $this->client = $clientService->newClient(); - } - - /** - * Returns whether the specified URL includes only safe characters, if not - * returns false - * - * @param string $url - * @return bool - */ - private function isSafeUrl($url) { - return (bool)preg_match('/^[\/\.A-Za-z0-9]+$/', $url); - } - - /** - * Discover the actual data and do some naive caching to ensure that the data - * is not requested multiple times. - * - * If no valid discovery data is found the Nextcloud defaults are returned. - * - * @param string $remote - * @return array - */ - private function discover($remote) { - // Check if something is in the cache - if($cacheData = $this->cache->get($remote)) { - return json_decode($cacheData, true); - } - - // Default response body - $discoveredServices = [ - 'webdav' => '/public.php/webdav', - 'share' => '/ocs/v1.php/cloud/shares', - ]; - - // Read the data from the response body - try { - $response = $this->client->get($remote . '/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]); - if($response->getStatusCode() === 200) { - $decodedService = json_decode($response->getBody(), true); - if(is_array($decodedService)) { - $endpoints = [ - 'webdav', - 'share', - ]; - - foreach($endpoints as $endpoint) { - if(isset($decodedService['services']['FEDERATED_SHARING']['endpoints'][$endpoint])) { - $endpointUrl = (string)$decodedService['services']['FEDERATED_SHARING']['endpoints'][$endpoint]; - if($this->isSafeUrl($endpointUrl)) { - $discoveredServices[$endpoint] = $endpointUrl; - } - } - } - } - } - } catch (ClientException $e) { - // Don't throw any exception since exceptions are handled before - } catch (ConnectException $e) { - // Don't throw any exception since exceptions are handled before - } - - // Write into cache - $this->cache->set($remote, json_encode($discoveredServices)); - return $discoveredServices; - } - - /** - * Return the public WebDAV endpoint used by the specified remote - * - * @param string $host - * @return string - */ - public function getWebDavEndpoint($host) { - return $this->discover($host)['webdav']; - } - - /** - * Return the sharing endpoint used by the specified remote - * - * @param string $host - * @return string - */ - public function getShareEndpoint($host) { - return $this->discover($host)['share']; - } -} diff --git a/apps/federatedfilesharing/lib/Notifications.php b/apps/federatedfilesharing/lib/Notifications.php index 8110b4915da..5abac711985 100644 --- a/apps/federatedfilesharing/lib/Notifications.php +++ b/apps/federatedfilesharing/lib/Notifications.php @@ -30,6 +30,7 @@ namespace OCA\FederatedFileSharing; use OCP\AppFramework\Http; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\OCS\IDiscoveryService; class Notifications { const RESPONSE_FORMAT = 'json'; // default response format for ocs calls @@ -40,8 +41,8 @@ class Notifications { /** @var IClientService */ private $httpClientService; - /** @var DiscoveryManager */ - private $discoveryManager; + /** @var IDiscoveryService */ + private $discoveryService; /** @var IJobList */ private $jobList; @@ -49,18 +50,18 @@ class Notifications { /** * @param AddressHandler $addressHandler * @param IClientService $httpClientService - * @param DiscoveryManager $discoveryManager + * @param IDiscoveryService $discoveryService * @param IJobList $jobList */ public function __construct( AddressHandler $addressHandler, IClientService $httpClientService, - DiscoveryManager $discoveryManager, + IDiscoveryService $discoveryService, IJobList $jobList ) { $this->addressHandler = $addressHandler; $this->httpClientService = $httpClientService; - $this->discoveryManager = $discoveryManager; + $this->discoveryService = $discoveryService; $this->jobList = $jobList; } @@ -287,7 +288,8 @@ class Notifications { 'result' => '', ]; - $endpoint = $this->discoveryManager->getShareEndpoint($remoteDomain); + $federationEndpoints = $this->discoveryService->discover($remoteDomain, 'FEDERATED_SHARING'); + $endpoint = isset($federationEndpoints['share']) ? $federationEndpoints['share'] : '/ocs/v2.php/cloud/shares'; try { $response = $client->post($remoteDomain . $endpoint . $urlSuffix . '?format=' . self::RESPONSE_FORMAT, [ 'body' => $fields, diff --git a/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php b/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php index 233395dec9f..512000181c1 100644 --- a/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php +++ b/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php @@ -270,17 +270,13 @@ class RequestHandlerControllerTest extends TestCase { ->method('newClient') ->willReturn($client); - $discoveryManager = new DiscoveryManager( - \OC::$server->getMemCacheFactory(), - $httpClientService - ); $manager = new \OCA\Files_Sharing\External\Manager( \OC::$server->getDatabaseConnection(), Filesystem::getMountManager(), Filesystem::getLoader(), $httpClientService, \OC::$server->getNotificationManager(), - $discoveryManager, + \OC::$server->query(\OCP\OCS\IDiscoveryService::class), $toDelete ); diff --git a/apps/federatedfilesharing/tests/DiscoveryManagerTest.php b/apps/federatedfilesharing/tests/DiscoveryManagerTest.php deleted file mode 100644 index 77e24aad54b..00000000000 --- a/apps/federatedfilesharing/tests/DiscoveryManagerTest.php +++ /dev/null @@ -1,217 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Björn Schießle <bjoern@schiessle.org> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OCA\FederatedFileSharing\Tests; - -use OCA\FederatedFileSharing\DiscoveryManager; -use OCP\Http\Client\IClient; -use OCP\Http\Client\IClientService; -use OCP\ICache; -use OCP\ICacheFactory; - -class DiscoveryManagerTest extends \Test\TestCase { - /** @var ICache */ - private $cache; - /** @var IClient */ - private $client; - /** @var DiscoveryManager */ - private $discoveryManager; - - public function setUp() { - parent::setUp(); - $this->cache = $this->getMockBuilder('\OCP\ICache') - ->getMock(); - /** @var ICacheFactory $cacheFactory */ - $cacheFactory = $this->getMockBuilder('\OCP\ICacheFactory') - ->disableOriginalConstructor()->getMock(); - $cacheFactory - ->expects($this->once()) - ->method('create') - ->with('ocs-discovery') - ->willReturn($this->cache); - - $this->client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - /** @var IClientService $clientService */ - $clientService = $this->getMockBuilder('\OCP\Http\Client\IClientService') - ->disableOriginalConstructor()->getMock(); - $clientService - ->expects($this->once()) - ->method('newClient') - ->willReturn($this->client); - - $this->discoveryManager = new DiscoveryManager( - $cacheFactory, - $clientService - ); - } - - public function testWithMalformedFormattedEndpointCached() { - $response = $this->getMockBuilder('\OCP\Http\Client\IResponse') - ->getMock(); - $response - ->expects($this->once()) - ->method('getStatusCode') - ->willReturn(200); - $response - ->expects($this->once()) - ->method('getBody') - ->willReturn('CertainlyNotJson'); - $this->client - ->expects($this->once()) - ->method('get') - ->with('https://myhost.com/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]) - ->willReturn($response); - $this->cache - ->expects($this->at(0)) - ->method('get') - ->with('https://myhost.com') - ->willReturn(null); - $this->cache - ->expects($this->at(1)) - ->method('set') - ->with('https://myhost.com', '{"webdav":"\/public.php\/webdav","share":"\/ocs\/v1.php\/cloud\/shares"}'); - $this->cache - ->expects($this->at(2)) - ->method('get') - ->with('https://myhost.com') - ->willReturn('{"webdav":"\/public.php\/webdav","share":"\/ocs\/v1.php\/cloud\/shares"}'); - - $this->assertSame('/public.php/webdav', $this->discoveryManager->getWebDavEndpoint('https://myhost.com')); - $this->assertSame('/ocs/v1.php/cloud/shares', $this->discoveryManager->getShareEndpoint('https://myhost.com')); - } - - public function testGetWebDavEndpointWithValidFormattedEndpointAndNotCached() { - $response = $this->getMockBuilder('\OCP\Http\Client\IResponse') - ->getMock(); - $response - ->expects($this->once()) - ->method('getStatusCode') - ->willReturn(200); - $response - ->expects($this->once()) - ->method('getBody') - ->willReturn('{"version":2,"services":{"PRIVATE_DATA":{"version":1,"endpoints":{"store":"\/ocs\/v2.php\/privatedata\/setattribute","read":"\/ocs\/v2.php\/privatedata\/getattribute","delete":"\/ocs\/v2.php\/privatedata\/deleteattribute"}},"SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/apps\/files_sharing\/api\/v1\/shares"}},"FEDERATED_SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/cloud\/shares","webdav":"\/public.php\/MyCustomEndpoint\/"}},"ACTIVITY":{"version":1,"endpoints":{"list":"\/ocs\/v2.php\/cloud\/activity"}},"PROVISIONING":{"version":1,"endpoints":{"user":"\/ocs\/v2.php\/cloud\/users","groups":"\/ocs\/v2.php\/cloud\/groups","apps":"\/ocs\/v2.php\/cloud\/apps"}}}}'); - $this->client - ->expects($this->once()) - ->method('get') - ->with('https://myhost.com/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]) - ->willReturn($response); - - $expectedResult = '/public.php/MyCustomEndpoint/'; - $this->assertSame($expectedResult, $this->discoveryManager->getWebDavEndpoint('https://myhost.com')); - } - - public function testGetWebDavEndpointWithValidFormattedEndpointWithoutDataAndNotCached() { - $response = $this->getMockBuilder('\OCP\Http\Client\IResponse') - ->getMock(); - $response - ->expects($this->once()) - ->method('getStatusCode') - ->willReturn(200); - $response - ->expects($this->once()) - ->method('getBody') - ->willReturn('{"version":2,"PRIVATE_DATA":{"version":1,"endpoints":{"store":"\/ocs\/v2.php\/privatedata\/setattribute","read":"\/ocs\/v2.php\/privatedata\/getattribute","delete":"\/ocs\/v2.php\/privatedata\/deleteattribute"}},"SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/apps\/files_sharing\/api\/v1\/shares"}},"FEDERATED_SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/cloud\/shares","webdav":"\/public.php\/MyCustomEndpoint\/"}},"ACTIVITY":{"version":1,"endpoints":{"list":"\/ocs\/v2.php\/cloud\/activity"}},"PROVISIONING":{"version":1,"endpoints":{"user":"\/ocs\/v2.php\/cloud\/users","groups":"\/ocs\/v2.php\/cloud\/groups","apps":"\/ocs\/v2.php\/cloud\/apps"}}}'); - $this->client - ->expects($this->once()) - ->method('get') - ->with('https://myhost.com/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]) - ->willReturn($response); - - $expectedResult = '/public.php/webdav'; - $this->assertSame($expectedResult, $this->discoveryManager->getWebDavEndpoint('https://myhost.com')); - } - - public function testGetShareEndpointWithValidFormattedEndpointAndNotCached() { - $response = $this->getMockBuilder('\OCP\Http\Client\IResponse') - ->getMock(); - $response - ->expects($this->once()) - ->method('getStatusCode') - ->willReturn(200); - $response - ->expects($this->once()) - ->method('getBody') - ->willReturn('{"version":2,"services":{"PRIVATE_DATA":{"version":1,"endpoints":{"store":"\/ocs\/v2.php\/privatedata\/setattribute","read":"\/ocs\/v2.php\/privatedata\/getattribute","delete":"\/ocs\/v2.php\/privatedata\/deleteattribute"}},"SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/apps\/files_sharing\/api\/v1\/shares"}},"FEDERATED_SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/cloud\/MyCustomShareEndpoint","webdav":"\/public.php\/MyCustomEndpoint\/"}},"ACTIVITY":{"version":1,"endpoints":{"list":"\/ocs\/v2.php\/cloud\/activity"}},"PROVISIONING":{"version":1,"endpoints":{"user":"\/ocs\/v2.php\/cloud\/users","groups":"\/ocs\/v2.php\/cloud\/groups","apps":"\/ocs\/v2.php\/cloud\/apps"}}}}'); - $this->client - ->expects($this->once()) - ->method('get') - ->with('https://myhost.com/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]) - ->willReturn($response); - - $expectedResult = '/ocs/v2.php/cloud/MyCustomShareEndpoint'; - $this->assertSame($expectedResult, $this->discoveryManager->getShareEndpoint('https://myhost.com')); - } - - public function testWithMaliciousEndpointCached() { - $response = $this->getMockBuilder('\OCP\Http\Client\IResponse') - ->getMock(); - $response - ->expects($this->once()) - ->method('getStatusCode') - ->willReturn(200); - $response - ->expects($this->once()) - ->method('getBody') - ->willReturn('{"version":2,"services":{"PRIVATE_DATA":{"version":1,"endpoints":{"store":"\/ocs\/v2.php\/privatedata\/setattribute","read":"\/ocs\/v2.php\/privatedata\/getattribute","delete":"\/ocs\/v2.php\/privatedata\/deleteattribute"}},"SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/apps\/files_sharing\/api\/v1\/shares"}},"FEDERATED_SHARING":{"version":1,"endpoints":{"share":"\/ocs\/v2.php\/cl@oud\/MyCustomShareEndpoint","webdav":"\/public.php\/MyC:ustomEndpoint\/"}},"ACTIVITY":{"version":1,"endpoints":{"list":"\/ocs\/v2.php\/cloud\/activity"}},"PROVISIONING":{"version":1,"endpoints":{"user":"\/ocs\/v2.php\/cloud\/users","groups":"\/ocs\/v2.php\/cloud\/groups","apps":"\/ocs\/v2.php\/cloud\/apps"}}}}'); - $this->client - ->expects($this->once()) - ->method('get') - ->with('https://myhost.com/ocs-provider/', [ - 'timeout' => 10, - 'connect_timeout' => 10, - ]) - ->willReturn($response); - $this->cache - ->expects($this->at(0)) - ->method('get') - ->with('https://myhost.com') - ->willReturn(null); - $this->cache - ->expects($this->at(1)) - ->method('set') - ->with('https://myhost.com', '{"webdav":"\/public.php\/webdav","share":"\/ocs\/v1.php\/cloud\/shares"}'); - $this->cache - ->expects($this->at(2)) - ->method('get') - ->with('https://myhost.com') - ->willReturn('{"webdav":"\/public.php\/webdav","share":"\/ocs\/v1.php\/cloud\/shares"}'); - - $this->assertSame('/public.php/webdav', $this->discoveryManager->getWebDavEndpoint('https://myhost.com')); - $this->assertSame('/ocs/v1.php/cloud/shares', $this->discoveryManager->getShareEndpoint('https://myhost.com')); - } -} diff --git a/apps/federatedfilesharing/tests/NotificationsTest.php b/apps/federatedfilesharing/tests/NotificationsTest.php index a5f5c6bc078..4f70d5f3950 100644 --- a/apps/federatedfilesharing/tests/NotificationsTest.php +++ b/apps/federatedfilesharing/tests/NotificationsTest.php @@ -25,10 +25,10 @@ namespace OCA\FederatedFileSharing\Tests; use OCA\FederatedFileSharing\AddressHandler; -use OCA\FederatedFileSharing\DiscoveryManager; use OCA\FederatedFileSharing\Notifications; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\OCS\IDiscoveryService; class NotificationsTest extends \Test\TestCase { @@ -38,8 +38,8 @@ class NotificationsTest extends \Test\TestCase { /** @var IClientService | \PHPUnit_Framework_MockObject_MockObject*/ private $httpClientService; - /** @var DiscoveryManager | \PHPUnit_Framework_MockObject_MockObject */ - private $discoveryManager; + /** @var IDiscoveryService | \PHPUnit_Framework_MockObject_MockObject */ + private $discoveryService; /** @var IJobList | \PHPUnit_Framework_MockObject_MockObject */ private $jobList; @@ -48,8 +48,7 @@ class NotificationsTest extends \Test\TestCase { parent::setUp(); $this->jobList = $this->getMockBuilder('OCP\BackgroundJob\IJobList')->getMock(); - $this->discoveryManager = $this->getMockBuilder('OCA\FederatedFileSharing\DiscoveryManager') - ->disableOriginalConstructor()->getMock(); + $this->discoveryService = $this->getMockBuilder(IDiscoveryService::class)->getMock(); $this->httpClientService = $this->getMockBuilder('OCP\Http\Client\IClientService')->getMock(); $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler') ->disableOriginalConstructor()->getMock(); @@ -67,7 +66,7 @@ class NotificationsTest extends \Test\TestCase { $instance = new Notifications( $this->addressHandler, $this->httpClientService, - $this->discoveryManager, + $this->discoveryService, $this->jobList ); } else { @@ -76,7 +75,7 @@ class NotificationsTest extends \Test\TestCase { [ $this->addressHandler, $this->httpClientService, - $this->discoveryManager, + $this->discoveryService, $this->jobList ] )->setMethods($mockedMethods)->getMock(); |