diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2022-07-06 15:19:20 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-06 15:19:20 +0300 |
commit | ef1e4f349d0ba76658425cb18c3d77e724559659 (patch) | |
tree | 339de68e5bf75abb271d82a27ead19f51f0c5fb9 /apps/updatenotification | |
parent | f64b78d11be2120c0890769c46acee318057b202 (diff) | |
parent | dd1ea1354d7c921b2f2554fc689e3f7f23ff7093 (diff) |
Merge pull request #32882 from nextcloud/backport/32584/stable24
[stable24] Make sure ResetTokenBackgroundJob doesn't execute if config is read-only
Diffstat (limited to 'apps/updatenotification')
-rw-r--r-- | apps/updatenotification/lib/ResetTokenBackgroundJob.php | 7 | ||||
-rw-r--r-- | apps/updatenotification/tests/ResetTokenBackgroundJobTest.php | 32 |
2 files changed, 30 insertions, 9 deletions
diff --git a/apps/updatenotification/lib/ResetTokenBackgroundJob.php b/apps/updatenotification/lib/ResetTokenBackgroundJob.php index 96a50c5ff7f..6e80f0fc0bf 100644 --- a/apps/updatenotification/lib/ResetTokenBackgroundJob.php +++ b/apps/updatenotification/lib/ResetTokenBackgroundJob.php @@ -26,7 +26,7 @@ declare(strict_types=1); */ 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 @@ class ResetTokenBackgroundJob extends TimedJob { */ 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 129ba370980..56a82b5b726 100644 --- a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php +++ b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php @@ -57,6 +57,11 @@ class ResetTokenBackgroundJobTest extends TestCase { ->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 @@ class ResetTokenBackgroundJobTest extends TestCase { 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 @@ class ResetTokenBackgroundJobTest extends TestCase { 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]); + } } |