Signed-off-by: Morris Jobke <hey@morrisjobke.de>tags/v17.0.0beta1
@@ -392,6 +392,10 @@ return array( | |||
'OCP\\Support\\CrashReport\\IMessageReporter' => $baseDir . '/lib/public/Support/CrashReport/IMessageReporter.php', | |||
'OCP\\Support\\CrashReport\\IRegistry' => $baseDir . '/lib/public/Support/CrashReport/IRegistry.php', | |||
'OCP\\Support\\CrashReport\\IReporter' => $baseDir . '/lib/public/Support/CrashReport/IReporter.php', | |||
'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => $baseDir . '/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php', | |||
'OCP\\Support\\Subscription\\IRegistry' => $baseDir . '/lib/public/Support/Subscription/IRegistry.php', | |||
'OCP\\Support\\Subscription\\ISubscription' => $baseDir . '/lib/public/Support/Subscription/ISubscription.php', | |||
'OCP\\Support\\Subscription\\ISupportedApps' => $baseDir . '/lib/public/Support/Subscription/ISupportedApps.php', | |||
'OCP\\SystemTag\\ISystemTag' => $baseDir . '/lib/public/SystemTag/ISystemTag.php', | |||
'OCP\\SystemTag\\ISystemTagManager' => $baseDir . '/lib/public/SystemTag/ISystemTagManager.php', | |||
'OCP\\SystemTag\\ISystemTagManagerFactory' => $baseDir . '/lib/public/SystemTag/ISystemTagManagerFactory.php', | |||
@@ -1144,6 +1148,7 @@ return array( | |||
'OC\\Streamer' => $baseDir . '/lib/private/Streamer.php', | |||
'OC\\SubAdmin' => $baseDir . '/lib/private/SubAdmin.php', | |||
'OC\\Support\\CrashReport\\Registry' => $baseDir . '/lib/private/Support/CrashReport/Registry.php', | |||
'OC\\Support\\Subscription\\Registry' => $baseDir . '/lib/private/Support/Subscription/Registry.php', | |||
'OC\\SystemConfig' => $baseDir . '/lib/private/SystemConfig.php', | |||
'OC\\SystemTag\\ManagerFactory' => $baseDir . '/lib/private/SystemTag/ManagerFactory.php', | |||
'OC\\SystemTag\\SystemTag' => $baseDir . '/lib/private/SystemTag/SystemTag.php', |
@@ -422,6 +422,10 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c | |||
'OCP\\Support\\CrashReport\\IMessageReporter' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IMessageReporter.php', | |||
'OCP\\Support\\CrashReport\\IRegistry' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IRegistry.php', | |||
'OCP\\Support\\CrashReport\\IReporter' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IReporter.php', | |||
'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php', | |||
'OCP\\Support\\Subscription\\IRegistry' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/IRegistry.php', | |||
'OCP\\Support\\Subscription\\ISubscription' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/ISubscription.php', | |||
'OCP\\Support\\Subscription\\ISupportedApps' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/ISupportedApps.php', | |||
'OCP\\SystemTag\\ISystemTag' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTag.php', | |||
'OCP\\SystemTag\\ISystemTagManager' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTagManager.php', | |||
'OCP\\SystemTag\\ISystemTagManagerFactory' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTagManagerFactory.php', | |||
@@ -1174,6 +1178,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c | |||
'OC\\Streamer' => __DIR__ . '/../../..' . '/lib/private/Streamer.php', | |||
'OC\\SubAdmin' => __DIR__ . '/../../..' . '/lib/private/SubAdmin.php', | |||
'OC\\Support\\CrashReport\\Registry' => __DIR__ . '/../../..' . '/lib/private/Support/CrashReport/Registry.php', | |||
'OC\\Support\\Subscription\\Registry' => __DIR__ . '/../../..' . '/lib/private/Support/Subscription/Registry.php', | |||
'OC\\SystemConfig' => __DIR__ . '/../../..' . '/lib/private/SystemConfig.php', | |||
'OC\\SystemTag\\ManagerFactory' => __DIR__ . '/../../..' . '/lib/private/SystemTag/ManagerFactory.php', | |||
'OC\\SystemTag\\SystemTag' => __DIR__ . '/../../..' . '/lib/private/SystemTag/SystemTag.php', |
@@ -551,6 +551,7 @@ class Server extends ServerContainer implements IServerContainer { | |||
$this->registerAlias('AvatarManager', AvatarManager::class); | |||
$this->registerAlias(\OCP\Support\CrashReport\IRegistry::class, \OC\Support\CrashReport\Registry::class); | |||
$this->registerAlias(\OCP\Support\Subscription\IRegistry::class, \OC\Support\Subscription\Registry::class); | |||
$this->registerService(\OC\Log::class, function (Server $c) { | |||
$logType = $c->query('AllConfig')->getSystemValue('log_type', 'file'); |
@@ -0,0 +1,75 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OC\Support\Subscription; | |||
use OCP\Support\Subscription\Exception\AlreadyRegisteredException; | |||
use OCP\Support\Subscription\IRegistry; | |||
use OCP\Support\Subscription\ISubscription; | |||
use OCP\Support\Subscription\ISupportedApps; | |||
class Registry implements IRegistry { | |||
/** @var ISubscription */ | |||
private $subscription = null; | |||
/** | |||
* Register a subscription instance. In case it is called multiple times the | |||
* first one is used. | |||
* | |||
* @param ISubscription $subscription | |||
* @throws AlreadyRegisteredException | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function register(ISubscription $subscription): void { | |||
if ($this->subscription !== null) { | |||
throw new AlreadyRegisteredException(); | |||
} | |||
$this->subscription = $subscription; | |||
} | |||
/** | |||
* Fetches the list of app IDs that are supported by the subscription | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function delegateGetSupportedApps(): array { | |||
if ($this->subscription instanceof ISupportedApps) { | |||
return $this->subscription->getSupportedApps(); | |||
} | |||
return []; | |||
} | |||
/** | |||
* Indicates if a valid subscription is available | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function delegateHasValidSubscription(): bool { | |||
if ($this->subscription instanceof ISubscription) { | |||
return $this->subscription->hasValidSubscription(); | |||
} | |||
return false; | |||
} | |||
} |
@@ -0,0 +1,30 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCP\Support\Subscription\Exception; | |||
/** | |||
* @since 17.0.0 | |||
*/ | |||
class AlreadyRegisteredException extends \Exception { | |||
} |
@@ -0,0 +1,57 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCP\Support\Subscription; | |||
use OCP\Support\Subscription\Exception\AlreadyRegisteredException; | |||
/** | |||
* @since 17.0.0 | |||
*/ | |||
interface IRegistry { | |||
/** | |||
* Register a subscription instance. In case it is called multiple times the | |||
* first one is used. | |||
* | |||
* @param ISubscription $subscription | |||
* @throws AlreadyRegisteredException | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function register(ISubscription $subscription): void; | |||
/** | |||
* Fetches the list of app IDs that are supported by the subscription | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function delegateGetSupportedApps(): array; | |||
/** | |||
* Indicates if a valid subscription is available | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function delegateHasValidSubscription(): bool; | |||
} |
@@ -0,0 +1,37 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCP\Support\Subscription; | |||
/** | |||
* @since 17.0.0 | |||
*/ | |||
interface ISubscription { | |||
/** | |||
* Indicates if a valid subscription is available | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function hasValidSubscription(): bool; | |||
} |
@@ -0,0 +1,37 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCP\Support\Subscription; | |||
/** | |||
* @since 17.0.0 | |||
*/ | |||
interface ISupportedApps extends ISubscription { | |||
/** | |||
* Fetches the list of app IDs that are supported by the subscription | |||
* | |||
* @since 17.0.0 | |||
*/ | |||
public function getSupportedApps(): array; | |||
} |
@@ -0,0 +1,87 @@ | |||
<?php | |||
/** | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace Test\Support\Subscription; | |||
use OC\Support\Subscription\Registry; | |||
use OCP\Support\Subscription\ISubscription; | |||
use OCP\Support\Subscription\ISupportedApps; | |||
use Test\TestCase; | |||
class RegistryTest extends TestCase { | |||
/** @var Registry */ | |||
private $registry; | |||
protected function setUp() { | |||
parent::setUp(); | |||
$this->registry = new Registry(); | |||
} | |||
/** | |||
* Doesn't assert anything, just checks whether anything "explodes" | |||
*/ | |||
public function testDelegateToNone() { | |||
$this->registry->delegateHasValidSubscription(); | |||
$this->addToAssertionCount(1); | |||
} | |||
/** | |||
* @expectedException \OCP\Support\Subscription\Exception\AlreadyRegisteredException | |||
*/ | |||
public function testDoubleRegistration() { | |||
/* @var ISubscription $subscription1 */ | |||
$subscription1 = $this->createMock(ISubscription::class); | |||
/* @var ISubscription $subscription2 */ | |||
$subscription2 = $this->createMock(ISubscription::class); | |||
$this->registry->register($subscription1); | |||
$this->registry->register($subscription2); | |||
} | |||
public function testNoSupportApp() { | |||
$this->assertSame([], $this->registry->delegateGetSupportedApps()); | |||
$this->assertSame(false, $this->registry->delegateHasValidSubscription()); | |||
} | |||
public function testDelegateHasValidSubscription() { | |||
/* @var ISubscription|\PHPUnit_Framework_MockObject_MockObject $subscription */ | |||
$subscription = $this->createMock(ISubscription::class); | |||
$subscription->expects($this->once()) | |||
->method('hasValidSubscription') | |||
->willReturn(true); | |||
$this->registry->register($subscription); | |||
$this->assertSame(true, $this->registry->delegateHasValidSubscription()); | |||
} | |||
public function testDelegateGetSupportedApps() { | |||
/* @var ISupportedApps|\PHPUnit_Framework_MockObject_MockObject $subscription */ | |||
$subscription = $this->createMock(ISupportedApps::class); | |||
$subscription->expects($this->once()) | |||
->method('getSupportedApps') | |||
->willReturn(['abc']); | |||
$this->registry->register($subscription); | |||
$this->assertSame(['abc'], $this->registry->delegateGetSupportedApps()); | |||
} | |||
} |