diff --git a/core/Application.php b/core/Application.php index 5a2bc477fe..5fafb0441f 100644 --- a/core/Application.php +++ b/core/Application.php @@ -30,7 +30,6 @@ namespace OC\Core; -use OC\Security\IdentityProof\Manager; use OCP\AppFramework\App; use OCP\Util; @@ -49,11 +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() - ); - }); } } 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/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));