summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/updatenotification/appinfo/info.xml4
-rw-r--r--apps/updatenotification/composer/composer/autoload_classmap.php1
-rw-r--r--apps/updatenotification/composer/composer/autoload_static.php1
-rw-r--r--apps/updatenotification/lib/Controller/AdminController.php79
-rw-r--r--apps/updatenotification/lib/Settings/Admin.php116
-rw-r--r--apps/updatenotification/tests/Controller/AdminControllerTest.php131
-rw-r--r--apps/updatenotification/tests/Settings/AdminTest.php126
7 files changed, 249 insertions, 209 deletions
diff --git a/apps/updatenotification/appinfo/info.xml b/apps/updatenotification/appinfo/info.xml
index 5dc0889bb9d..14ec98916ab 100644
--- a/apps/updatenotification/appinfo/info.xml
+++ b/apps/updatenotification/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>Displays update notifications for Nextcloud and provides the SSO for the updater.</description>
<licence>AGPL</licence>
<author>Lukas Reschke</author>
- <version>1.4.0</version>
+ <version>1.4.1</version>
<namespace>UpdateNotification</namespace>
<default_enable/>
<dependencies>
@@ -17,6 +17,6 @@
</background-jobs>
<settings>
- <admin>OCA\UpdateNotification\Controller\AdminController</admin>
+ <admin>OCA\UpdateNotification\Settings\Admin</admin>
</settings>
</info>
diff --git a/apps/updatenotification/composer/composer/autoload_classmap.php b/apps/updatenotification/composer/composer/autoload_classmap.php
index e1833548bcf..55ad497a858 100644
--- a/apps/updatenotification/composer/composer/autoload_classmap.php
+++ b/apps/updatenotification/composer/composer/autoload_classmap.php
@@ -11,5 +11,6 @@ return array(
'OCA\\UpdateNotification\\Notification\\BackgroundJob' => $baseDir . '/../lib/Notification/BackgroundJob.php',
'OCA\\UpdateNotification\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\UpdateNotification\\ResetTokenBackgroundJob' => $baseDir . '/../lib/ResetTokenBackgroundJob.php',
+ 'OCA\\UpdateNotification\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
'OCA\\UpdateNotification\\UpdateChecker' => $baseDir . '/../lib/UpdateChecker.php',
);
diff --git a/apps/updatenotification/composer/composer/autoload_static.php b/apps/updatenotification/composer/composer/autoload_static.php
index 1c63a2d234b..4a50e180a8f 100644
--- a/apps/updatenotification/composer/composer/autoload_static.php
+++ b/apps/updatenotification/composer/composer/autoload_static.php
@@ -26,6 +26,7 @@ class ComposerStaticInitUpdateNotification
'OCA\\UpdateNotification\\Notification\\BackgroundJob' => __DIR__ . '/..' . '/../lib/Notification/BackgroundJob.php',
'OCA\\UpdateNotification\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\UpdateNotification\\ResetTokenBackgroundJob' => __DIR__ . '/..' . '/../lib/ResetTokenBackgroundJob.php',
+ 'OCA\\UpdateNotification\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
'OCA\\UpdateNotification\\UpdateChecker' => __DIR__ . '/..' . '/../lib/UpdateChecker.php',
);
diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php
index 78f2d411bb8..ba16f114f61 100644
--- a/apps/updatenotification/lib/Controller/AdminController.php
+++ b/apps/updatenotification/lib/Controller/AdminController.php
@@ -26,21 +26,17 @@
namespace OCA\UpdateNotification\Controller;
use OCA\UpdateNotification\ResetTokenBackgroundJob;
-use OCA\UpdateNotification\UpdateChecker;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
-use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\IConfig;
-use OCP\IDateTimeFormatter;
use OCP\IL10N;
use OCP\IRequest;
use OCP\Security\ISecureRandom;
-use OCP\Settings\ISettings;
use OCP\Util;
-class AdminController extends Controller implements ISettings {
+class AdminController extends Controller {
/** @var IJobList */
private $jobList;
/** @var ISecureRandom */
@@ -49,12 +45,8 @@ class AdminController extends Controller implements ISettings {
private $config;
/** @var ITimeFactory */
private $timeFactory;
- /** @var UpdateChecker */
- private $updateChecker;
/** @var IL10N */
private $l10n;
- /** @var IDateTimeFormatter */
- private $dateTimeFormatter;
/**
* @param string $appName
@@ -64,8 +56,6 @@ class AdminController extends Controller implements ISettings {
* @param IConfig $config
* @param ITimeFactory $timeFactory
* @param IL10N $l10n
- * @param UpdateChecker $updateChecker
- * @param IDateTimeFormatter $dateTimeFormatter
*/
public function __construct($appName,
IRequest $request,
@@ -73,60 +63,13 @@ class AdminController extends Controller implements ISettings {
ISecureRandom $secureRandom,
IConfig $config,
ITimeFactory $timeFactory,
- IL10N $l10n,
- UpdateChecker $updateChecker,
- IDateTimeFormatter $dateTimeFormatter) {
+ IL10N $l10n) {
parent::__construct($appName, $request);
$this->jobList = $jobList;
$this->secureRandom = $secureRandom;
$this->config = $config;
$this->timeFactory = $timeFactory;
$this->l10n = $l10n;
- $this->updateChecker = $updateChecker;
- $this->dateTimeFormatter = $dateTimeFormatter;
- }
-
- /**
- * @return TemplateResponse
- */
- public function getForm() {
- $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat');
- $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp);
-
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels)) !== false) {
- unset($channels[$key]);
- }
- $updateState = $this->updateChecker->getUpdateState();
-
- $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
-
- $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/';
- $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL);
-
- $params = [
- 'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
- 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0,
- 'lastChecked' => $lastUpdateCheck,
- 'currentChannel' => $currentChannel,
- 'channels' => $channels,
- 'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
- 'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
- 'updaterEnabled' => (empty($updateState['updaterEnabled'])) ? false : $updateState['updaterEnabled'],
- 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL,
- 'updateServerURL' => $updateServerURL,
- 'notify_groups' => implode('|', $notifyGroups),
- ];
-
- return new TemplateResponse($this->appName, 'admin', $params, '');
}
/**
@@ -153,22 +96,4 @@ class AdminController extends Controller implements ISettings {
return new DataResponse($newToken);
}
-
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection() {
- return 'server';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- *
- * E.g.: 70
- */
- public function getPriority() {
- return 1;
- }
}
diff --git a/apps/updatenotification/lib/Settings/Admin.php b/apps/updatenotification/lib/Settings/Admin.php
new file mode 100644
index 00000000000..1df4827d77f
--- /dev/null
+++ b/apps/updatenotification/lib/Settings/Admin.php
@@ -0,0 +1,116 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @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\UpdateNotification\Settings;
+
+use OCA\UpdateNotification\UpdateChecker;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IDateTimeFormatter;
+use OCP\Settings\ISettings;
+use OCP\Util;
+
+class Admin implements ISettings {
+ /** @var IConfig */
+ private $config;
+ /** @var UpdateChecker */
+ private $updateChecker;
+ /** @var IDateTimeFormatter */
+ private $dateTimeFormatter;
+
+ /**
+ * @param IConfig $config
+ * @param UpdateChecker $updateChecker
+ * @param IDateTimeFormatter $dateTimeFormatter
+ */
+ public function __construct(IConfig $config,
+ UpdateChecker $updateChecker,
+ IDateTimeFormatter $dateTimeFormatter) {
+ $this->config = $config;
+ $this->updateChecker = $updateChecker;
+ $this->dateTimeFormatter = $dateTimeFormatter;
+ }
+
+ /**
+ * @return TemplateResponse
+ */
+ public function getForm() {
+ $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat');
+ $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp);
+
+ $channels = [
+ 'daily',
+ 'beta',
+ 'stable',
+ 'production',
+ ];
+ $currentChannel = Util::getChannel();
+
+ // Remove the currently used channel from the channels list
+ if(($key = array_search($currentChannel, $channels, true)) !== false) {
+ unset($channels[$key]);
+ }
+ $updateState = $this->updateChecker->getUpdateState();
+
+ $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
+
+ $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/';
+ $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL);
+
+ $params = [
+ 'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
+ 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0,
+ 'lastChecked' => $lastUpdateCheck,
+ 'currentChannel' => $currentChannel,
+ 'channels' => $channels,
+ 'newVersionString' => empty($updateState['updateVersion']) ? '' : $updateState['updateVersion'],
+ 'downloadLink' => empty($updateState['downloadLink']) ? '' : $updateState['downloadLink'],
+ 'updaterEnabled' => empty($updateState['updaterEnabled']) ? false : $updateState['updaterEnabled'],
+ 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL,
+ 'updateServerURL' => $updateServerURL,
+ 'notify_groups' => implode('|', $notifyGroups),
+ ];
+
+ return new TemplateResponse('updatenotification', 'admin', $params, '');
+ }
+
+ /**
+ * @return string the section ID, e.g. 'sharing'
+ */
+ public function getSection() {
+ return 'server';
+ }
+
+ /**
+ * @return int whether the form should be rather on the top or bottom of
+ * the admin section. The forms are arranged in ascending order of the
+ * priority values. It is required to return a value between 0 and 100.
+ *
+ * E.g.: 70
+ */
+ public function getPriority() {
+ return 1;
+ }
+}
diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php
index 42afbd43b22..00d3974ed02 100644
--- a/apps/updatenotification/tests/Controller/AdminControllerTest.php
+++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php
@@ -54,10 +54,6 @@ class AdminControllerTest extends TestCase {
private $timeFactory;
/** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l10n;
- /** @var UpdateChecker|\PHPUnit_Framework_MockObject_MockObject */
- private $updateChecker;
- /** @var IDateTimeFormatter|\PHPUnit_Framework_MockObject_MockObject */
- private $dateTimeFormatter;
public function setUp() {
parent::setUp();
@@ -68,8 +64,6 @@ class AdminControllerTest extends TestCase {
$this->config = $this->createMock(IConfig::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->l10n = $this->createMock(IL10N::class);
- $this->updateChecker = $this->createMock(UpdateChecker::class);
- $this->dateTimeFormatter = $this->createMock(IDateTimeFormatter::class);
$this->adminController = new AdminController(
'updatenotification',
@@ -78,126 +72,10 @@ class AdminControllerTest extends TestCase {
$this->secureRandom,
$this->config,
$this->timeFactory,
- $this->l10n,
- $this->updateChecker,
- $this->dateTimeFormatter
+ $this->l10n
);
}
- public function testGetFormWithUpdate() {
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels, true)) !== false) {
- unset($channels[$key]);
- }
-
- $this->config
- ->expects($this->exactly(2))
- ->method('getAppValue')
- ->willReturnMap([
- ['core', 'lastupdatedat', '', '12345'],
- ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
- ]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
- ->willReturn('https://updates.nextcloud.com/server/');
- $this->dateTimeFormatter
- ->expects($this->once())
- ->method('formatDateTime')
- ->with('12345')
- ->willReturn('LastCheckedReturnValue');
- $this->updateChecker
- ->expects($this->once())
- ->method('getUpdateState')
- ->willReturn([
- 'updateAvailable' => true,
- 'updateVersion' => '8.1.2',
- 'downloadLink' => 'https://downloads.nextcloud.org/server',
- 'updaterEnabled' => true,
- ]);
-
- $params = [
- 'isNewVersionAvailable' => true,
- 'isUpdateChecked' => true,
- 'lastChecked' => 'LastCheckedReturnValue',
- 'currentChannel' => Util::getChannel(),
- 'channels' => $channels,
- 'newVersionString' => '8.1.2',
- 'downloadLink' => 'https://downloads.nextcloud.org/server',
- 'updaterEnabled' => true,
- 'isDefaultUpdateServerURL' => true,
- 'updateServerURL' => 'https://updates.nextcloud.com/server/',
- 'notify_groups' => 'admin',
- ];
-
- $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
- $this->assertEquals($expected, $this->adminController->getForm());
- }
-
- public function testGetFormWithoutUpdate() {
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels, true)) !== false) {
- unset($channels[$key]);
- }
-
- $this->config
- ->expects($this->exactly(2))
- ->method('getAppValue')
- ->willReturnMap([
- ['core', 'lastupdatedat', '', '12345'],
- ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
- ]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
- ->willReturn('https://updates.nextcloud.com/server/');
- $this->dateTimeFormatter
- ->expects($this->once())
- ->method('formatDateTime')
- ->with('12345')
- ->willReturn('LastCheckedReturnValue');
- $this->updateChecker
- ->expects($this->once())
- ->method('getUpdateState')
- ->willReturn([]);
-
- $params = [
- 'isNewVersionAvailable' => false,
- 'isUpdateChecked' => true,
- 'lastChecked' => 'LastCheckedReturnValue',
- 'currentChannel' => Util::getChannel(),
- 'channels' => $channels,
- 'newVersionString' => '',
- 'downloadLink' => '',
- 'updaterEnabled' => 0,
- 'isDefaultUpdateServerURL' => true,
- 'updateServerURL' => 'https://updates.nextcloud.com/server/',
- 'notify_groups' => 'admin',
- ];
-
- $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
- $this->assertEquals($expected, $this->adminController->getForm());
- }
-
-
public function testCreateCredentials() {
$this->jobList
->expects($this->once())
@@ -225,11 +103,4 @@ class AdminControllerTest extends TestCase {
$this->assertEquals($expected, $this->adminController->createCredentials());
}
- public function testGetSection() {
- $this->assertSame('server', $this->adminController->getSection());
- }
-
- public function testGetPriority() {
- $this->assertSame(1, $this->adminController->getPriority());
- }
}
diff --git a/apps/updatenotification/tests/Settings/AdminTest.php b/apps/updatenotification/tests/Settings/AdminTest.php
new file mode 100644
index 00000000000..f49fdf378b8
--- /dev/null
+++ b/apps/updatenotification/tests/Settings/AdminTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @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\UpdateNotification\Tests\Settings;
+
+use OCA\UpdateNotification\Settings\Admin;
+use OCA\UpdateNotification\UpdateChecker;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IDateTimeFormatter;
+use OCP\Util;
+use Test\TestCase;
+
+class AdminTest extends TestCase {
+ /** @var Admin */
+ private $admin;
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $config;
+ /** @var UpdateChecker|\PHPUnit_Framework_MockObject_MockObject */
+ private $updateChecker;
+ /** @var IDateTimeFormatter|\PHPUnit_Framework_MockObject_MockObject */
+ private $dateTimeFormatter;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->config = $this->createMock(IConfig::class);
+ $this->updateChecker = $this->createMock(UpdateChecker::class);
+ $this->dateTimeFormatter = $this->createMock(IDateTimeFormatter::class);
+
+ $this->admin = new Admin(
+ $this->config,
+ $this->updateChecker,
+ $this->dateTimeFormatter
+ );
+ }
+
+ public function testGetFormWithUpdate() {
+ $channels = [
+ 'daily',
+ 'beta',
+ 'stable',
+ 'production',
+ ];
+ $currentChannel = Util::getChannel();
+
+ // Remove the currently used channel from the channels list
+ if(($key = array_search($currentChannel, $channels, true)) !== false) {
+ unset($channels[$key]);
+ }
+
+ $this->config
+ ->expects($this->exactly(2))
+ ->method('getAppValue')
+ ->willReturnMap([
+ ['core', 'lastupdatedat', '', '12345'],
+ ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
+ ]);
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValue')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
+ ->willReturn('https://updates.nextcloud.com/server/');
+ $this->dateTimeFormatter
+ ->expects($this->once())
+ ->method('formatDateTime')
+ ->with('12345')
+ ->willReturn('LastCheckedReturnValue');
+ $this->updateChecker
+ ->expects($this->once())
+ ->method('getUpdateState')
+ ->willReturn([
+ 'updateAvailable' => true,
+ 'updateVersion' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
+ ]);
+
+ $params = [
+ 'isNewVersionAvailable' => true,
+ 'isUpdateChecked' => true,
+ 'lastChecked' => 'LastCheckedReturnValue',
+ 'currentChannel' => Util::getChannel(),
+ 'channels' => $channels,
+ 'newVersionString' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
+ 'isDefaultUpdateServerURL' => true,
+ 'updateServerURL' => 'https://updates.nextcloud.com/server/',
+ 'notify_groups' => 'admin',
+ ];
+
+ $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
+ $this->assertEquals($expected, $this->admin->getForm());
+ }
+
+
+ public function testGetSection() {
+ $this->assertSame('server', $this->admin->getSection());
+ }
+
+ public function testGetPriority() {
+ $this->assertSame(1, $this->admin->getPriority());
+ }
+}