diff --git a/apps/updatenotification/lib/ResetTokenBackgroundJob.php b/apps/updatenotification/lib/ResetTokenBackgroundJob.php index 96a50c5ff7f6d..6e80f0fc0bf76 100644 --- a/apps/updatenotification/lib/ResetTokenBackgroundJob.php +++ b/apps/updatenotification/lib/ResetTokenBackgroundJob.php @@ -26,7 +26,7 @@ */ namespace OCA\UpdateNotification; -use OC\BackgroundJob\TimedJob; +use OCP\BackgroundJob\TimedJob; use OCP\AppFramework\Utility\ITimeFactory; use OCP\IConfig; @@ -48,8 +48,9 @@ class ResetTokenBackgroundJob extends TimedJob { */ public function __construct(IConfig $config, ITimeFactory $timeFactory) { + parent::__construct($timeFactory); // Run all 10 minutes - $this->setInterval(60 * 10); + parent::setInterval(60 * 10); $this->config = $config; $this->timeFactory = $timeFactory; } @@ -59,7 +60,7 @@ public function __construct(IConfig $config, */ protected function run($argument) { // Delete old tokens after 2 days - if ($this->timeFactory->getTime() - $this->config->getAppValue('core', 'updater.secret.created', $this->timeFactory->getTime()) >= 172800) { + if ($this->config->getSystemValueBool('config_is_read_only') === false && $this->timeFactory->getTime() - (int) $this->config->getAppValue('core', 'updater.secret.created', (string) $this->timeFactory->getTime()) >= 172800) { $this->config->deleteSystemValue('updater.secret'); } } diff --git a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php index 129ba37098063..56a82b5b726ab 100644 --- a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php +++ b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php @@ -56,6 +56,11 @@ public function testRunWithNotExpiredToken() { ->expects($this->once()) ->method('getAppValue') ->with('core', 'updater.secret.created', 123); + $this->config + ->expects($this->once()) + ->method('getSystemValueBool') + ->with('config_is_read_only') + ->willReturn(false); $this->config ->expects($this->never()) ->method('deleteSystemValue'); @@ -65,13 +70,9 @@ public function testRunWithNotExpiredToken() { public function testRunWithExpiredToken() { $this->timeFactory - ->expects($this->at(0)) + ->expects($this->exactly(2)) ->method('getTime') - ->willReturn(1455131633); - $this->timeFactory - ->expects($this->at(1)) - ->method('getTime') - ->willReturn(1455045234); + ->willReturnOnConsecutiveCalls(1455131633, 1455045234); $this->config ->expects($this->once()) ->method('getAppValue') @@ -83,4 +84,23 @@ public function testRunWithExpiredToken() { static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]); } + + public function testRunWithExpiredTokenAndReadOnlyConfigFile() { + $this->timeFactory + ->expects($this->never()) + ->method('getTime'); + $this->config + ->expects($this->never()) + ->method('getAppValue'); + $this->config + ->expects($this->once()) + ->method('getSystemValueBool') + ->with('config_is_read_only') + ->willReturn(true); + $this->config + ->expects($this->never()) + ->method('deleteSystemValue'); + + static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]); + } }