From c9253cce6cacedc19dbb04d8dd89a3da1473ef20 Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <roeland@famdouma.nl>
Date: Thu, 30 Jan 2020 13:30:45 +0100
Subject: [PATCH] Move personal settings to proper registration

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
---
 apps/settings/appinfo/info.xml                |  5 +++
 .../composer/composer/autoload_classmap.php   | 10 ++---
 .../composer/composer/autoload_static.php     | 10 ++---
 .../lib/Settings/Personal/Additional.php      |  2 +-
 .../lib/Settings/Personal/PersonalInfo.php    |  2 +-
 .../Settings/Personal/Security/Authtokens.php |  2 +-
 .../Settings/Personal/Security/Password.php   |  2 +-
 .../lib/Settings/Personal/ServerDevNotice.php |  2 +-
 .../AdminSettingsControllerTest.php           |  2 +-
 .../Personal/Security/AuthtokensTest.php      |  5 +--
 .../Personal/Security/PasswordTest.php        |  6 +--
 lib/private/Settings/Manager.php              | 37 +------------------
 tests/lib/Settings/ManagerTest.php            | 25 ++++++++-----
 13 files changed, 43 insertions(+), 67 deletions(-)

diff --git a/apps/settings/appinfo/info.xml b/apps/settings/appinfo/info.xml
index d86e5395efc..d77d8690b44 100644
--- a/apps/settings/appinfo/info.xml
+++ b/apps/settings/appinfo/info.xml
@@ -24,6 +24,11 @@
 		<admin-section>OCA\Settings\Sections\Admin\Security</admin-section>
 		<admin-section>OCA\Settings\Sections\Admin\Server</admin-section>
 		<admin-section>OCA\Settings\Sections\Admin\Sharing</admin-section>
+		<personal>OCA\Settings\Settings\Personal\Additional</personal>
+		<personal>OCA\Settings\Settings\Personal\PersonalInfo</personal>
+		<personal>OCA\Settings\Settings\Personal\ServerDevNotice</personal>
+		<personal>OCA\Settings\Settings\Personal\Security\Authtokens</personal>
+		<personal>OCA\Settings\Settings\Personal\Security\Password</personal>
 		<personal>OCA\Settings\Settings\Personal\Security\TwoFactor</personal>
 		<personal-section>OCA\Settings\Sections\Personal\PersonalInfo</personal-section>
 		<personal-section>OCA\Settings\Sections\Personal\Security</personal-section>
diff --git a/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php
index 3e83c20bd38..c68f3d85279 100644
--- a/apps/settings/composer/composer/autoload_classmap.php
+++ b/apps/settings/composer/composer/autoload_classmap.php
@@ -36,11 +36,6 @@ return array(
     'OCA\\Settings\\Hooks' => $baseDir . '/../lib/Hooks.php',
     'OCA\\Settings\\Mailer\\NewUserMailHelper' => $baseDir . '/../lib/Mailer/NewUserMailHelper.php',
     'OCA\\Settings\\Middleware\\SubadminMiddleware' => $baseDir . '/../lib/Middleware/SubadminMiddleware.php',
-    'OCA\\Settings\\Personal\\Additional' => $baseDir . '/../lib/Settings/Personal/Additional.php',
-    'OCA\\Settings\\Personal\\PersonalInfo' => $baseDir . '/../lib/Settings/Personal/PersonalInfo.php',
-    'OCA\\Settings\\Personal\\Security\\Authtokens' => $baseDir . '/../lib/Settings/Personal/Security/Authtokens.php',
-    'OCA\\Settings\\Personal\\Security\\Password' => $baseDir . '/../lib/Settings/Personal/Security/Password.php',
-    'OCA\\Settings\\Personal\\ServerDevNotice' => $baseDir . '/../lib/Settings/Personal/ServerDevNotice.php',
     'OCA\\Settings\\Sections\\Admin\\Additional' => $baseDir . '/../lib/Sections/Admin/Additional.php',
     'OCA\\Settings\\Sections\\Admin\\Groupware' => $baseDir . '/../lib/Sections/Admin/Groupware.php',
     'OCA\\Settings\\Sections\\Admin\\Overview' => $baseDir . '/../lib/Sections/Admin/Overview.php',
@@ -50,5 +45,10 @@ return array(
     'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => $baseDir . '/../lib/Sections/Personal/PersonalInfo.php',
     'OCA\\Settings\\Sections\\Personal\\Security' => $baseDir . '/../lib/Sections/Personal/Security.php',
     'OCA\\Settings\\Sections\\Personal\\SyncClients' => $baseDir . '/../lib/Sections/Personal/SyncClients.php',
+    'OCA\\Settings\\Settings\\Personal\\Additional' => $baseDir . '/../lib/Settings/Personal/Additional.php',
+    'OCA\\Settings\\Settings\\Personal\\PersonalInfo' => $baseDir . '/../lib/Settings/Personal/PersonalInfo.php',
+    'OCA\\Settings\\Settings\\Personal\\Security\\Authtokens' => $baseDir . '/../lib/Settings/Personal/Security/Authtokens.php',
+    'OCA\\Settings\\Settings\\Personal\\Security\\Password' => $baseDir . '/../lib/Settings/Personal/Security/Password.php',
     'OCA\\Settings\\Settings\\Personal\\Security\\TwoFactor' => $baseDir . '/../lib/Settings/Personal/Security/TwoFactor.php',
+    'OCA\\Settings\\Settings\\Personal\\ServerDevNotice' => $baseDir . '/../lib/Settings/Personal/ServerDevNotice.php',
 );
diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php
index a76fe97eec9..41b2ad27271 100644
--- a/apps/settings/composer/composer/autoload_static.php
+++ b/apps/settings/composer/composer/autoload_static.php
@@ -51,11 +51,6 @@ class ComposerStaticInitSettings
         'OCA\\Settings\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php',
         'OCA\\Settings\\Mailer\\NewUserMailHelper' => __DIR__ . '/..' . '/../lib/Mailer/NewUserMailHelper.php',
         'OCA\\Settings\\Middleware\\SubadminMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/SubadminMiddleware.php',
-        'OCA\\Settings\\Personal\\Additional' => __DIR__ . '/..' . '/../lib/Settings/Personal/Additional.php',
-        'OCA\\Settings\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Settings/Personal/PersonalInfo.php',
-        'OCA\\Settings\\Personal\\Security\\Authtokens' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/Authtokens.php',
-        'OCA\\Settings\\Personal\\Security\\Password' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/Password.php',
-        'OCA\\Settings\\Personal\\ServerDevNotice' => __DIR__ . '/..' . '/../lib/Settings/Personal/ServerDevNotice.php',
         'OCA\\Settings\\Sections\\Admin\\Additional' => __DIR__ . '/..' . '/../lib/Sections/Admin/Additional.php',
         'OCA\\Settings\\Sections\\Admin\\Groupware' => __DIR__ . '/..' . '/../lib/Sections/Admin/Groupware.php',
         'OCA\\Settings\\Sections\\Admin\\Overview' => __DIR__ . '/..' . '/../lib/Sections/Admin/Overview.php',
@@ -65,7 +60,12 @@ class ComposerStaticInitSettings
         'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Sections/Personal/PersonalInfo.php',
         'OCA\\Settings\\Sections\\Personal\\Security' => __DIR__ . '/..' . '/../lib/Sections/Personal/Security.php',
         'OCA\\Settings\\Sections\\Personal\\SyncClients' => __DIR__ . '/..' . '/../lib/Sections/Personal/SyncClients.php',
+        'OCA\\Settings\\Settings\\Personal\\Additional' => __DIR__ . '/..' . '/../lib/Settings/Personal/Additional.php',
+        'OCA\\Settings\\Settings\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Settings/Personal/PersonalInfo.php',
+        'OCA\\Settings\\Settings\\Personal\\Security\\Authtokens' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/Authtokens.php',
+        'OCA\\Settings\\Settings\\Personal\\Security\\Password' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/Password.php',
         'OCA\\Settings\\Settings\\Personal\\Security\\TwoFactor' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/TwoFactor.php',
+        'OCA\\Settings\\Settings\\Personal\\ServerDevNotice' => __DIR__ . '/..' . '/../lib/Settings/Personal/ServerDevNotice.php',
     );
 
     public static function getInitializer(ClassLoader $loader)
diff --git a/apps/settings/lib/Settings/Personal/Additional.php b/apps/settings/lib/Settings/Personal/Additional.php
index 2fc710b88c3..ab128afe9a8 100644
--- a/apps/settings/lib/Settings/Personal/Additional.php
+++ b/apps/settings/lib/Settings/Personal/Additional.php
@@ -22,7 +22,7 @@
  *
  */
 
-namespace OCA\Settings\Personal;
+namespace OCA\Settings\Settings\Personal;
 
 
 use OCP\AppFramework\Http\TemplateResponse;
diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php
index a91be782431..c8d9b3f8128 100644
--- a/apps/settings/lib/Settings/Personal/PersonalInfo.php
+++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php
@@ -29,7 +29,7 @@
  *
  */
 
-namespace OCA\Settings\Personal;
+namespace OCA\Settings\Settings\Personal;
 
 use OC\Accounts\AccountManager;
 use OCA\FederatedFileSharing\AppInfo\Application;
diff --git a/apps/settings/lib/Settings/Personal/Security/Authtokens.php b/apps/settings/lib/Settings/Personal/Security/Authtokens.php
index 1944670b2ea..93019766663 100644
--- a/apps/settings/lib/Settings/Personal/Security/Authtokens.php
+++ b/apps/settings/lib/Settings/Personal/Security/Authtokens.php
@@ -25,7 +25,7 @@ declare(strict_types=1);
  *
  */
 
-namespace OCA\Settings\Personal\Security;
+namespace OCA\Settings\Settings\Personal\Security;
 
 use OCP\IUserSession;
 use function array_map;
diff --git a/apps/settings/lib/Settings/Personal/Security/Password.php b/apps/settings/lib/Settings/Personal/Security/Password.php
index 91d8b9228e8..06e82f6e4c3 100644
--- a/apps/settings/lib/Settings/Personal/Security/Password.php
+++ b/apps/settings/lib/Settings/Personal/Security/Password.php
@@ -26,7 +26,7 @@ declare(strict_types=1);
  *
  */
 
-namespace OCA\Settings\Personal\Security;
+namespace OCA\Settings\Settings\Personal\Security;
 
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\IUserManager;
diff --git a/apps/settings/lib/Settings/Personal/ServerDevNotice.php b/apps/settings/lib/Settings/Personal/ServerDevNotice.php
index b5cf8c2c49c..f69863fe35e 100644
--- a/apps/settings/lib/Settings/Personal/ServerDevNotice.php
+++ b/apps/settings/lib/Settings/Personal/ServerDevNotice.php
@@ -23,7 +23,7 @@
  *
  */
 
-namespace OCA\Settings\Personal;
+namespace OCA\Settings\Settings\Personal;
 
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\Settings\ISettings;
diff --git a/apps/settings/tests/Controller/AdminSettingsControllerTest.php b/apps/settings/tests/Controller/AdminSettingsControllerTest.php
index ee8672691fc..9a82fd97854 100644
--- a/apps/settings/tests/Controller/AdminSettingsControllerTest.php
+++ b/apps/settings/tests/Controller/AdminSettingsControllerTest.php
@@ -28,7 +28,7 @@
 namespace OCA\Settings\Tests\Controller;
 
 use OCA\Settings\Controller\AdminSettingsController;
-use OCA\Settings\Personal\ServerDevNotice;
+use OCA\Settings\Settings\Personal\ServerDevNotice;
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\Group\ISubAdmin;
 use OCP\IGroupManager;
diff --git a/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php
index 6fd7cf22efe..1f85f49106a 100644
--- a/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php
+++ b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php
@@ -29,8 +29,7 @@ namespace OCA\Settings\Tests\Settings\Personal\Security;
 
 use OC\Authentication\Token\DefaultToken;
 use OC\Authentication\Token\IProvider as IAuthTokenProvider;
-use OCA\Settings\Personal\Password;
-use OCA\Settings\Personal\Security\Authtokens;
+use OCA\Settings\Settings\Personal\Security\Authtokens;
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\IInitialStateService;
 use OCP\ISession;
@@ -55,7 +54,7 @@ class AuthtokensTest extends TestCase {
 	/** @var string */
 	private $uid;
 
-	/** @var Security\Authtokens */
+	/** @var Authtokens */
 	private $section;
 
 	protected function setUp(): void {
diff --git a/apps/settings/tests/Settings/Personal/Security/PasswordTest.php b/apps/settings/tests/Settings/Personal/Security/PasswordTest.php
index 160e4ebf844..8eb4c022e71 100644
--- a/apps/settings/tests/Settings/Personal/Security/PasswordTest.php
+++ b/apps/settings/tests/Settings/Personal/Security/PasswordTest.php
@@ -25,9 +25,9 @@ declare(strict_types=1);
  *
  */
 
-namespace OCA\Settings\Tests\Settings\Personal;
+namespace OCA\Settings\Tests\Settings\Personal\Security;
 
-use OCA\Settings\Personal\Security\Password;
+use OCA\Settings\Settings\Personal\Security\Password;
 use OCP\AppFramework\Http\TemplateResponse;
 use OCP\IUser;
 use OCP\IUserManager;
@@ -69,7 +69,7 @@ class PasswordTest extends TestCase {
 
 		$form = $this->section->getForm();
 
-		$expected = new TemplateResponse('settings', 'settings/personal/security', [
+		$expected = new TemplateResponse('settings', 'settings/personal/security/password', [
 			'passwordChangeSupported' => true,
 		]);
 		$this->assertEquals($expected, $form);
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php
index 157ab9db1d3..8018ecaba61 100644
--- a/lib/private/Settings/Manager.php
+++ b/lib/private/Settings/Manager.php
@@ -175,7 +175,7 @@ class Manager implements IManager {
 
 			try {
 				/** @var ISettings $setting */
-				$setting = \OC::$server->query($class);
+				$setting = $this->container->query($class);
 			} catch (QueryException $e) {
 				$this->log->logException($e, ['level' => ILogger::INFO]);
 				continue;
@@ -272,39 +272,6 @@ class Manager implements IManager {
 		return $forms;
 	}
 
-	/**
-	 * @param string $section
-	 *
-	 * @return ISection[]
-	 */
-	private function getBuiltInPersonalSettings($section): array {
-		$forms = [];
-
-		if ($section === 'personal-info') {
-			/** @var ISettings $form */
-			$form = $this->container->query(\OCA\Settings\Personal\PersonalInfo::class);
-			$forms[$form->getPriority()] = [$form];
-			$form = new \OCA\Settings\Personal\ServerDevNotice();
-			$forms[$form->getPriority()] = [$form];
-		}
-		if ($section === 'security') {
-			/** @var ISettings $form */
-			$form = $this->container->query(\OCA\Settings\Personal\Security\Password::class);
-			$forms[$form->getPriority()] = [$form];
-
-			/** @var ISettings $form */
-			$form = $this->container->query(\OCA\Settings\Personal\Security\Authtokens::class);
-			$forms[$form->getPriority()] = [$form];
-		}
-		if ($section === 'additional') {
-			/** @var ISettings $form */
-			$form = $this->container->query(\OCA\Settings\Personal\Additional::class);
-			$forms[$form->getPriority()] = [$form];
-		}
-
-		return $forms;
-	}
-
 	/**
 	 * @inheritdoc
 	 */
@@ -380,7 +347,7 @@ class Manager implements IManager {
 	 * @inheritdoc
 	 */
 	public function getPersonalSettings($section): array {
-		$settings = $this->getBuiltInPersonalSettings($section);
+		$settings = [];
 		$appSettings = $this->getSettings('personal', $section);
 
 		foreach ($appSettings as $setting) {
diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php
index 7972a4bdbba..06eafb6528b 100644
--- a/tests/lib/Settings/ManagerTest.php
+++ b/tests/lib/Settings/ManagerTest.php
@@ -24,15 +24,14 @@
 namespace OCA\Settings\Tests\AppInfo;
 
 use OC\Settings\Manager;
-use OC\Settings\Section;
 use OCA\Settings\Admin\Sharing;
-use OCA\Settings\Personal\Password;
 use OCP\IDBConnection;
 use OCP\IL10N;
 use OCP\ILogger;
 use OCP\IServerContainer;
 use OCP\IURLGenerator;
 use OCP\L10N\IFactory;
+use OCP\Settings\ISettings;
 use OCP\Settings\ISubAdminSettings;
 use Test\TestCase;
 
@@ -149,21 +148,27 @@ class ManagerTest extends TestCase {
 	}
 
 	public function testGetPersonalSettings() {
-		$section = $this->createMock(Password::class);
-		$section->expects($this->once())
-			->method('getPriority')
+		$section = $this->createMock(ISettings::class);
+		$section->method('getPriority')
 			->willReturn(16);
-		$section2 = $this->createMock(Security\Authtokens::class);
-		$section2->expects($this->once())
-			->method('getPriority')
+		$section->method('getSection')
+			->willReturn('security');
+		$section2 = $this->createMock(ISettings::class);
+		$section2->method('getPriority')
 			->willReturn(100);
+		$section2->method('getSection')
+			->willReturn('security');
+
+		$this->manager->registerSetting('personal', 'section1');
+		$this->manager->registerSetting('personal', 'section2');
+
 		$this->container->expects($this->at(0))
 			->method('query')
-			->with(Password::class)
+			->with('section1')
 			->willReturn($section);
 		$this->container->expects($this->at(1))
 			->method('query')
-			->with(Security\Authtokens::class)
+			->with('section2')
 			->willReturn($section2);
 
 		$settings = $this->manager->getPersonalSettings('security');
-- 
GitLab