diff --git a/apps/lookup_server_connector/appinfo/app.php b/apps/lookup_server_connector/appinfo/app.php index f0d624d5f3..28e7bea192 100644 --- a/apps/lookup_server_connector/appinfo/app.php +++ b/apps/lookup_server_connector/appinfo/app.php @@ -22,30 +22,10 @@ $dispatcher = \OC::$server->getEventDispatcher(); $dispatcher->addListener('OC\AccountManager::userUpdated', function(\Symfony\Component\EventDispatcher\GenericEvent $event) { + /** @var \OCP\IUser $user */ $user = $event->getSubject(); - $keyManager = new \OC\Security\IdentityProof\Manager( - \OC::$server->getAppDataDir('identityproof'), - \OC::$server->getCrypto() - ); - - $config = \OC::$server->getConfig(); - $lookupServer = $config->getSystemValue('lookup_server', ''); - - $updateLookupServer = new \OCA\LookupServerConnector\UpdateLookupServer( - new \OC\Accounts\AccountManager( - \OC::$server->getDatabaseConnection(), - \OC::$server->getEventDispatcher(), - \OC::$server->getJobList() - ), - \OC::$server->getHTTPClientService(), - new \OC\Security\IdentityProof\Signer( - $keyManager, - new \OC\AppFramework\Utility\TimeFactory(), - \OC::$server->getUserManager() - ), - \OC::$server->getJobList(), - $lookupServer - ); + /** @var \OCA\LookupServerConnector\UpdateLookupServer $updateLookupServer */ + $updateLookupServer = \OC::$server->query(\OCA\LookupServerConnector\UpdateLookupServer::class); $updateLookupServer->userUpdated($user); }); diff --git a/apps/lookup_server_connector/lib/UpdateLookupServer.php b/apps/lookup_server_connector/lib/UpdateLookupServer.php index 3a7c2fa723..ae8fcbd67c 100644 --- a/apps/lookup_server_connector/lib/UpdateLookupServer.php +++ b/apps/lookup_server_connector/lib/UpdateLookupServer.php @@ -27,6 +27,7 @@ use OC\Security\IdentityProof\Signer; use OCA\LookupServerConnector\BackgroundJobs\RetryJob; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\IConfig; use OCP\IUser; /** @@ -44,27 +45,26 @@ class UpdateLookupServer { /** @var IJobList */ private $jobList; /** @var string URL point to lookup server */ - private $lookupServer = 'https://lookup.nextcloud.com'; + private $lookupServer; /** * @param AccountManager $accountManager * @param IClientService $clientService * @param Signer $signer * @param IJobList $jobList - * @param string $lookupServer if nothing is given we use the default lookup server + * @param IConfig $config */ public function __construct(AccountManager $accountManager, IClientService $clientService, Signer $signer, IJobList $jobList, - $lookupServer = '') { + IConfig $config) { $this->accountManager = $accountManager; $this->clientService = $clientService; $this->signer = $signer; $this->jobList = $jobList; - if ($lookupServer !== '') { - $this->lookupServer = $lookupServer; - } + + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); $this->lookupServer = rtrim($this->lookupServer, '/'); $this->lookupServer .= '/users'; } diff --git a/core/Application.php b/core/Application.php index 6fa301e590..5fafb0441f 100644 --- a/core/Application.php +++ b/core/Application.php @@ -30,12 +30,7 @@ namespace OC\Core; -use OC\Core\Controller\JsController; -use OC\Security\IdentityProof\Manager; use OCP\AppFramework\App; -use OC\Core\Controller\CssController; -use OCP\AppFramework\Utility\ITimeFactory; -use OCP\IRequest; use OCP\Util; /** @@ -53,27 +48,5 @@ class Application extends App { $container->registerService('defaultMailAddress', function () { return Util::getDefaultEmailAddress('lostpassword-noreply'); }); - $container->registerService(Manager::class, function () { - return new Manager( - \OC::$server->getAppDataDir('identityproof'), - \OC::$server->getCrypto() - ); - }); - $container->registerService(CssController::class, function () use ($container) { - return new CssController( - $container->query('appName'), - $container->query(IRequest::class), - \OC::$server->getAppDataDir('css'), - $container->query(ITimeFactory::class) - ); - }); - $container->registerService(JsController::class, function () use ($container) { - return new JsController( - $container->query('AppName'), - $container->query(IRequest::class), - $container->getServer()->getAppDataDir('js'), - $container->query(ITimeFactory::class) - ); - }); } } diff --git a/core/Controller/CssController.php b/core/Controller/CssController.php index 57197e9999..3cf477290f 100644 --- a/core/Controller/CssController.php +++ b/core/Controller/CssController.php @@ -21,6 +21,7 @@ namespace OC\Core\Controller; +use OC\Files\AppData\Factory; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\NotFoundResponse; @@ -43,13 +44,13 @@ class CssController extends Controller { /** * @param string $appName * @param IRequest $request - * @param IAppData $appData + * @param Factory $appDataFactory * @param ITimeFactory $timeFactory */ - public function __construct($appName, IRequest $request, IAppData $appData, ITimeFactory $timeFactory) { + public function __construct($appName, IRequest $request, Factory $appDataFactory, ITimeFactory $timeFactory) { parent::__construct($appName, $request); - $this->appData = $appData; + $this->appData = $appDataFactory->get('css'); $this->timeFactory = $timeFactory; } diff --git a/core/Controller/JsController.php b/core/Controller/JsController.php index c7c9dea910..1a025edbca 100644 --- a/core/Controller/JsController.php +++ b/core/Controller/JsController.php @@ -22,6 +22,7 @@ */ namespace OC\Core\Controller; +use OC\Files\AppData\Factory; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\NotFoundResponse; @@ -44,13 +45,13 @@ class JsController extends Controller { /** * @param string $appName * @param IRequest $request - * @param IAppData $appData + * @param Factory $appDataFactory * @param ITimeFactory $timeFactory */ - public function __construct($appName, IRequest $request, IAppData $appData, ITimeFactory $timeFactory) { + public function __construct($appName, IRequest $request, Factory $appDataFactory, ITimeFactory $timeFactory) { parent::__construct($appName, $request); - $this->appData = $appData; + $this->appData = $appDataFactory->get('js'); $this->timeFactory = $timeFactory; } diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php index e020390988..2e181d754f 100644 --- a/lib/private/App/AppStore/Fetcher/AppFetcher.php +++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php @@ -22,24 +22,24 @@ namespace OC\App\AppStore\Fetcher; use OC\App\AppStore\Version\VersionParser; +use OC\Files\AppData\Factory; use OCP\AppFramework\Utility\ITimeFactory; -use OCP\Files\IAppData; use OCP\Http\Client\IClientService; use OCP\IConfig; class AppFetcher extends Fetcher { /** - * @param IAppData $appData + * @param Factory $appDataFactory * @param IClientService $clientService * @param ITimeFactory $timeFactory * @param IConfig $config; */ - public function __construct(IAppData $appData, + public function __construct(Factory $appDataFactory, IClientService $clientService, ITimeFactory $timeFactory, IConfig $config) { parent::__construct( - $appData, + $appDataFactory, $clientService, $timeFactory, $config diff --git a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php index 8b79259a66..4c78665283 100644 --- a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php +++ b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php @@ -21,24 +21,24 @@ namespace OC\App\AppStore\Fetcher; +use OC\Files\AppData\Factory; use OCP\AppFramework\Utility\ITimeFactory; -use OCP\Files\IAppData; use OCP\Http\Client\IClientService; use OCP\IConfig; class CategoryFetcher extends Fetcher { /** - * @param IAppData $appData + * @param Factory $appDataFactory * @param IClientService $clientService * @param ITimeFactory $timeFactory * @param IConfig $config */ - public function __construct(IAppData $appData, + public function __construct(Factory $appDataFactory, IClientService $clientService, ITimeFactory $timeFactory, IConfig $config) { parent::__construct( - $appData, + $appDataFactory, $clientService, $timeFactory, $config diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php index 5354d334eb..ccf5162ed8 100644 --- a/lib/private/App/AppStore/Fetcher/Fetcher.php +++ b/lib/private/App/AppStore/Fetcher/Fetcher.php @@ -21,6 +21,7 @@ namespace OC\App\AppStore\Fetcher; +use OC\Files\AppData\Factory; use OCP\AppFramework\Http; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\IAppData; @@ -47,16 +48,16 @@ abstract class Fetcher { protected $version; /** - * @param IAppData $appData + * @param Factory $appDataFactory * @param IClientService $clientService * @param ITimeFactory $timeFactory * @param IConfig $config */ - public function __construct(IAppData $appData, + public function __construct(Factory $appDataFactory, IClientService $clientService, ITimeFactory $timeFactory, IConfig $config) { - $this->appData = $appData; + $this->appData = $appDataFactory->get('appstore'); $this->clientService = $clientService; $this->timeFactory = $timeFactory; $this->config = $config; diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index 04747485c1..d24836228c 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -165,7 +165,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this->registerService(\OC\Security\IdentityProof\Manager::class, function ($c) { return new \OC\Security\IdentityProof\Manager( - $this->getServer()->getAppDataDir('identityproof'), + $this->getServer()->query(\OC\Files\AppData\Factory::class), $this->getServer()->getCrypto() ); }); diff --git a/lib/private/Security/IdentityProof/Manager.php b/lib/private/Security/IdentityProof/Manager.php index d2a9e57e33..73edac5f74 100644 --- a/lib/private/Security/IdentityProof/Manager.php +++ b/lib/private/Security/IdentityProof/Manager.php @@ -21,6 +21,7 @@ namespace OC\Security\IdentityProof; +use OC\Files\AppData\Factory; use OCP\Files\IAppData; use OCP\IUser; use OCP\Security\ICrypto; @@ -32,12 +33,12 @@ class Manager { private $crypto; /** - * @param IAppData $appData + * @param Factory $appDataFactory * @param ICrypto $crypto */ - public function __construct(IAppData $appData, + public function __construct(Factory $appDataFactory, ICrypto $crypto) { - $this->appData = $appData; + $this->appData = $appDataFactory->get('identityproof'); $this->crypto = $crypto; } diff --git a/lib/private/Server.php b/lib/private/Server.php index 9731bd294e..9d54421e3e 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -420,24 +420,8 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService('AppHelper', function ($c) { return new \OC\AppHelper(); }); - $this->registerService(AppFetcher::class, function ($c) { - return new AppFetcher( - $this->getAppDataDir('appstore'), - $this->getHTTPClientService(), - $this->query(TimeFactory::class), - $this->getConfig() - ); - }); $this->registerAlias('AppFetcher', AppFetcher::class); - - $this->registerService('CategoryFetcher', function ($c) { - return new CategoryFetcher( - $this->getAppDataDir('appstore'), - $this->getHTTPClientService(), - $this->query(TimeFactory::class), - $this->getConfig() - ); - }); + $this->registerAlias('CategoryFetcher', CategoryFetcher::class); $this->registerService(\OCP\ICache::class, function ($c) { return new Cache\File(); @@ -1290,7 +1274,7 @@ class Server extends ServerContainer implements IServerContainer { * @return AppFetcher */ public function getAppFetcher() { - return $this->query('AppFetcher'); + return $this->query(AppFetcher::class); } /** diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 5c4a7725a1..023b3e6972 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -32,7 +32,6 @@ namespace OC; -use OC\App\AppStore\Fetcher\AppFetcher; use OC\Hooks\BasicEmitter; use OC\IntegrityCheck\Checker; use OC_App; diff --git a/settings/Application.php b/settings/Application.php index 52661c5bae..0ca2d28dfe 100644 --- a/settings/Application.php +++ b/settings/Application.php @@ -30,8 +30,6 @@ namespace OC\Settings; -use OC\App\AppStore\Fetcher\AppFetcher; -use OC\App\AppStore\Fetcher\CategoryFetcher; use OC\AppFramework\Utility\TimeFactory; use OC\Authentication\Token\IProvider; use OC\Server; @@ -110,26 +108,6 @@ class Application extends App { Util::getDefaultEmailAddress('no-reply') ); }); - $container->registerService(AppFetcher::class, function (IContainer $c) { - /** @var Server $server */ - $server = $c->query('ServerContainer'); - return new AppFetcher( - $server->getAppDataDir('appstore'), - $server->getHTTPClientService(), - $server->query(TimeFactory::class), - $server->getConfig() - ); - }); - $container->registerService(CategoryFetcher::class, function (IContainer $c) { - /** @var Server $server */ - $server = $c->query('ServerContainer'); - return new CategoryFetcher( - $server->getAppDataDir('appstore'), - $server->getHTTPClientService(), - $server->query(TimeFactory::class), - $server->getConfig() - ); - }); } public function register() { diff --git a/tests/Core/Controller/CssControllerTest.php b/tests/Core/Controller/CssControllerTest.php index 30bbc12809..c78233d891 100644 --- a/tests/Core/Controller/CssControllerTest.php +++ b/tests/Core/Controller/CssControllerTest.php @@ -23,7 +23,7 @@ namespace Tests\Core\Controller; use OC\Core\Controller\CssController; -use OC\HintException; +use OC\Files\AppData\Factory; use OCP\AppFramework\Http; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Http\NotFoundResponse; @@ -40,7 +40,7 @@ class CssControllerTest extends TestCase { /** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */ private $appData; - /** @var IRequests|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ private $request; /** @var CssController */ @@ -49,8 +49,15 @@ class CssControllerTest extends TestCase { public function setUp() { parent::setUp(); + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */ + $factory = $this->createMock(Factory::class); $this->appData = $this->createMock(IAppData::class); + $factory->expects($this->once()) + ->method('get') + ->with('css') + ->willReturn($this->appData); + /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject $timeFactory */ $timeFactory = $this->createMock(ITimeFactory::class); $timeFactory->method('getTime') ->willReturn(1337); @@ -60,7 +67,7 @@ class CssControllerTest extends TestCase { $this->controller = new CssController( 'core', $this->request, - $this->appData, + $factory, $timeFactory ); } diff --git a/tests/Core/Controller/JsControllerTest.php b/tests/Core/Controller/JsControllerTest.php index 8456ba8b6e..571318c89d 100644 --- a/tests/Core/Controller/JsControllerTest.php +++ b/tests/Core/Controller/JsControllerTest.php @@ -23,6 +23,7 @@ namespace Tests\Core\Controller; use OC\Core\Controller\JsController; +use OC\Files\AppData\Factory; use OCP\AppFramework\Http; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Http\NotFoundResponse; @@ -48,8 +49,15 @@ class JsControllerTest extends TestCase { public function setUp() { parent::setUp(); + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */ + $factory = $this->createMock(Factory::class); $this->appData = $this->createMock(IAppData::class); + $factory->expects($this->once()) + ->method('get') + ->with('js') + ->willReturn($this->appData); + /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject $timeFactory */ $timeFactory = $this->createMock(ITimeFactory::class); $timeFactory->method('getTime') ->willReturn(1337); @@ -59,7 +67,7 @@ class JsControllerTest extends TestCase { $this->controller = new JsController( 'core', $this->request, - $this->appData, + $factory, $timeFactory ); } diff --git a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php index 6c0d079a20..f3769fc09c 100644 --- a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php +++ b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php @@ -22,6 +22,7 @@ namespace Test\App\AppStore\Fetcher; use OC\App\AppStore\Fetcher\AppFetcher; +use OC\Files\AppData\Factory; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\IAppData; use OCP\Files\NotFoundException; @@ -53,7 +54,13 @@ EOD; public function setUp() { parent::setUp(); + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */ + $factory = $this->createMock(Factory::class); $this->appData = $this->createMock(IAppData::class); + $factory->expects($this->once()) + ->method('get') + ->with('appstore') + ->willReturn($this->appData); $this->clientService = $this->createMock(IClientService::class); $this->timeFactory = $this->createMock(ITimeFactory::class); $this->config = $this->createMock(IConfig::class); @@ -64,7 +71,7 @@ EOD; ->with('version') ->willReturn('11.0.0.2'); $this->fetcher = new AppFetcher( - $this->appData, + $factory, $this->clientService, $this->timeFactory, $this->config diff --git a/tests/lib/App/AppStore/Fetcher/CategoryFetcherTest.php b/tests/lib/App/AppStore/Fetcher/CategoryFetcherTest.php index 27f33bed99..6143da662d 100644 --- a/tests/lib/App/AppStore/Fetcher/CategoryFetcherTest.php +++ b/tests/lib/App/AppStore/Fetcher/CategoryFetcherTest.php @@ -23,14 +23,14 @@ namespace Test\App\AppStore\Fetcher; use OC\App\AppStore\Fetcher\CategoryFetcher; -class CategoryFetcherTest extends FetcherBase { +class CategoryFetcherTest extends FetcherBase { public function setUp() { parent::setUp(); $this->fileName = 'categories.json'; $this->endpoint = 'https://apps.nextcloud.com/api/v1/categories.json'; $this->fetcher = new CategoryFetcher( - $this->appData, + $this->appDataFactory, $this->clientService, $this->timeFactory, $this->config diff --git a/tests/lib/App/AppStore/Fetcher/FetcherBase.php b/tests/lib/App/AppStore/Fetcher/FetcherBase.php index 96e4f3ae81..3d89ae942a 100644 --- a/tests/lib/App/AppStore/Fetcher/FetcherBase.php +++ b/tests/lib/App/AppStore/Fetcher/FetcherBase.php @@ -22,6 +22,7 @@ namespace Test\App\AppStore\Fetcher; use OC\App\AppStore\Fetcher\Fetcher; +use OC\Files\AppData\Factory; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\IAppData; use OCP\Files\NotFoundException; @@ -34,6 +35,8 @@ use OCP\IConfig; use Test\TestCase; abstract class FetcherBase extends TestCase { + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject */ + protected $appDataFactory; /** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */ protected $appData; /** @var IClientService|\PHPUnit_Framework_MockObject_MockObject */ @@ -51,7 +54,12 @@ abstract class FetcherBase extends TestCase { public function setUp() { parent::setUp(); + $this->appDataFactory = $this->createMock(Factory::class); $this->appData = $this->createMock(IAppData::class); + $this->appDataFactory->expects($this->once()) + ->method('get') + ->with('appstore') + ->willReturn($this->appData); $this->clientService = $this->createMock(IClientService::class); $this->timeFactory = $this->createMock(ITimeFactory::class); $this->config = $this->createMock(IConfig::class); diff --git a/tests/lib/Security/IdentityProof/ManagerTest.php b/tests/lib/Security/IdentityProof/ManagerTest.php index 2925dea5ec..b46ca30705 100644 --- a/tests/lib/Security/IdentityProof/ManagerTest.php +++ b/tests/lib/Security/IdentityProof/ManagerTest.php @@ -21,6 +21,7 @@ namespace Test\Security\IdentityProof; +use OC\Files\AppData\Factory; use OC\Security\IdentityProof\Key; use OC\Security\IdentityProof\Manager; use OCP\Files\IAppData; @@ -31,6 +32,8 @@ use OCP\Security\ICrypto; use Test\TestCase; class ManagerTest extends TestCase { + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject */ + private $factory; /** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */ private $appData; /** @var ICrypto|\PHPUnit_Framework_MockObject_MockObject */ @@ -40,11 +43,19 @@ class ManagerTest extends TestCase { public function setUp() { parent::setUp(); + + /** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */ + $this->factory = $this->createMock(Factory::class); $this->appData = $this->createMock(IAppData::class); + $this->factory->expects($this->any()) + ->method('get') + ->with('identityproof') + ->willReturn($this->appData); + $this->crypto = $this->createMock(ICrypto::class); $this->manager = $this->getMockBuilder(Manager::class) ->setConstructorArgs([ - $this->appData, + $this->factory, $this->crypto ]) ->setMethods(['generateKeyPair']) @@ -151,12 +162,12 @@ class ManagerTest extends TestCase { public function testGenerateKeyPair() { $manager = new Manager( - $this->appData, + $this->factory, $this->crypto ); $data = 'MyTestData'; - list($resultPublicKey, $resultPrivateKey) = $this->invokePrivate($manager, 'generateKeyPair'); + list($resultPublicKey, $resultPrivateKey) = self::invokePrivate($manager, 'generateKeyPair'); openssl_sign($data, $signature, $resultPrivateKey); $details = openssl_pkey_get_details(openssl_pkey_get_public($resultPublicKey));