diff options
author | Vincent Petry <vincent@nextcloud.com> | 2022-06-10 15:31:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-10 15:31:58 +0200 |
commit | ddac16b6ec35c5f714ff366979e141ba3f2181eb (patch) | |
tree | d43b6b01b2f982091d3e8c337b3f84c077a36f0a | |
parent | 535b84e4e69d09ac3fb5d994c778325844dbe4fb (diff) | |
parent | 26050a48f0e84dd31287bd78a88ef4c90c915aed (diff) | |
download | nextcloud-server-ddac16b6ec35c5f714ff366979e141ba3f2181eb.tar.gz nextcloud-server-ddac16b6ec35c5f714ff366979e141ba3f2181eb.zip |
Merge pull request #32657 from nextcloud/backport/32655/stable24
[stable24] Handle non existing settings again
-rw-r--r-- | lib/private/Settings/Manager.php | 9 | ||||
-rw-r--r-- | tests/lib/Settings/ManagerTest.php | 42 |
2 files changed, 37 insertions, 14 deletions
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php index 84fbf9426b0..05a286e4758 100644 --- a/lib/private/Settings/Manager.php +++ b/lib/private/Settings/Manager.php @@ -126,8 +126,13 @@ class Manager implements IManager { } foreach (array_unique($this->sectionClasses[$type]) as $index => $class) { - /** @var IIconSection $section */ - $section = \OC::$server->get($class); + try { + /** @var IIconSection $section */ + $section = $this->container->get($class); + } catch (QueryException $e) { + $this->log->info($e->getMessage(), ['exception' => $e]); + continue; + } $sectionID = $section->getID(); diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index 96711e75cab..29ae33c3c93 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -21,7 +21,7 @@ * */ -namespace OCA\Settings\Tests\AppInfo; +namespace OC\Settings\Tests\AppInfo; use OC\Settings\AuthorizedGroupMapper; use OC\Settings\Manager; @@ -82,16 +82,26 @@ class ManagerTest extends TestCase { public function testGetAdminSections() { $this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class); + $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $this->container->method('get') + ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->willReturn($section); + $this->assertEquals([ - 55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)], + 55 => [$section], ], $this->manager->getAdminSections()); } public function testGetPersonalSections() { $this->manager->registerSection('personal', \OCA\WorkflowEngine\Settings\Section::class); + $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $this->container->method('get') + ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->willReturn($section); + $this->assertEquals([ - 55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)], + 55 => [$section], ], $this->manager->getPersonalSections()); } @@ -181,14 +191,16 @@ class ManagerTest extends TestCase { $this->manager->registerSetting('personal', 'section1'); $this->manager->registerSetting('personal', 'section2'); - $this->container->expects($this->at(0)) + $this->container->expects($this->exactly(2)) ->method('get') - ->with('section1') - ->willReturn($section); - $this->container->expects($this->at(1)) - ->method('get') - ->with('section2') - ->willReturn($section2); + ->withConsecutive( + ['section1'], + ['section2'] + ) + ->willReturnMap([ + ['section1', $section], + ['section2', $section2], + ]); $settings = $this->manager->getPersonalSettings('security'); @@ -212,12 +224,18 @@ class ManagerTest extends TestCase { $this->manager->registerSection('personal', \OCA\WorkflowEngine\Settings\Section::class); $this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class); + + $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $this->container->method('get') + ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->willReturn($section); + $this->assertEquals([ - 55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)], + 55 => [$section], ], $this->manager->getPersonalSections()); $this->assertEquals([ - 55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)], + 55 => [$section], ], $this->manager->getAdminSections()); } } |