Add unit tests for Config\Forms classes

Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
Maurício Meneghini Fauth 2025-09-08 16:33:22 -03:00
parent be01432c56
commit 166b0ab4c0
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
12 changed files with 1567 additions and 0 deletions

View File

@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Page;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Page\BrowseForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(BrowseForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class BrowseFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$browseForm = new BrowseForm(new ConfigFile([]), 1);
self::assertSame('', BrowseForm::getName());
$forms = $browseForm->getRegisteredForms();
self::assertCount(1, $forms);
self::assertArrayHasKey('Browse', $forms);
$form = $forms['Browse'];
self::assertSame('Browse', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TableNavigationLinksMode' => 'TableNavigationLinksMode',
'ActionLinksMode' => 'ActionLinksMode',
'ShowAll' => 'ShowAll',
'MaxRows' => 'MaxRows',
'Order' => 'Order',
'BrowsePointerEnable' => 'BrowsePointerEnable',
'BrowseMarkerEnable' => 'BrowseMarkerEnable',
'GridEditing' => 'GridEditing',
'SaveCellsAtOnce' => 'SaveCellsAtOnce',
'RepeatCells' => 'RepeatCells',
'LimitChars' => 'LimitChars',
'RowActionLinks' => 'RowActionLinks',
'RowActionLinksWithoutUnique' => 'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder' => 'TablePrimaryKeyOrder',
'RememberSorting' => 'RememberSorting',
'RelationalDisplay' => 'RelationalDisplay',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'TableNavigationLinksMode',
'ActionLinksMode',
'ShowAll',
'MaxRows',
'Order',
'BrowsePointerEnable',
'BrowseMarkerEnable',
'GridEditing',
'SaveCellsAtOnce',
'RepeatCells',
'LimitChars',
'RowActionLinks',
'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder',
'RememberSorting',
'RelationalDisplay',
],
BrowseForm::getFields(),
);
}
}

View File

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Page;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Page\DbStructureForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(DbStructureForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class DbStructureFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$dbStructureForm = new DbStructureForm(new ConfigFile([]), 1);
self::assertSame('', DbStructureForm::getName());
$forms = $dbStructureForm->getRegisteredForms();
self::assertCount(1, $forms);
self::assertArrayHasKey('DbStructure', $forms);
$form = $forms['DbStructure'];
self::assertSame('DbStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowDbStructureCharset' => 'ShowDbStructureCharset',
'ShowDbStructureComment' => 'ShowDbStructureComment',
'ShowDbStructureCreation' => 'ShowDbStructureCreation',
'ShowDbStructureLastUpdate' => 'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck' => 'ShowDbStructureLastCheck',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowDbStructureCharset',
'ShowDbStructureComment',
'ShowDbStructureCreation',
'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck',
],
DbStructureForm::getFields(),
);
}
}

View File

@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Page;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Page\EditForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(EditForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class EditFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$editForm = new EditForm(new ConfigFile([]), 1);
self::assertSame('', EditForm::getName());
$forms = $editForm->getRegisteredForms();
self::assertCount(2, $forms);
self::assertArrayHasKey('Edit', $forms);
$form = $forms['Edit'];
self::assertSame('Edit', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ProtectBinary' => 'ProtectBinary',
'ShowFunctionFields' => 'ShowFunctionFields',
'ShowFieldTypesInDataEditView' => 'ShowFieldTypesInDataEditView',
'InsertRows' => 'InsertRows',
'ForeignKeyDropdownOrder' => 'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit' => 'ForeignKeyMaxLimit',
],
$form->fields,
);
self::assertArrayHasKey('Text_fields', $forms);
$form = $forms['Text_fields'];
self::assertSame('Text_fields', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'CharEditing' => 'CharEditing',
'MinSizeForInputField' => 'MinSizeForInputField',
'MaxSizeForInputField' => 'MaxSizeForInputField',
'CharTextareaCols' => 'CharTextareaCols',
'CharTextareaRows' => 'CharTextareaRows',
'TextareaCols' => 'TextareaCols',
'TextareaRows' => 'TextareaRows',
'LongtextDoubleTextarea' => 'LongtextDoubleTextarea',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ProtectBinary',
'ShowFunctionFields',
'ShowFieldTypesInDataEditView',
'InsertRows',
'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit',
'CharEditing',
'MinSizeForInputField',
'MaxSizeForInputField',
'CharTextareaCols',
'CharTextareaRows',
'TextareaCols',
'TextareaRows',
'LongtextDoubleTextarea',
],
EditForm::getFields(),
);
}
}

View File

@ -0,0 +1,77 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Page;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Page\TableStructureForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(TableStructureForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class TableStructureFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$tableStructureForm = new TableStructureForm(new ConfigFile([]), 1);
self::assertSame('', TableStructureForm::getName());
$forms = $tableStructureForm->getRegisteredForms();
self::assertCount(1, $forms);
self::assertArrayHasKey('TableStructure', $forms);
$form = $forms['TableStructure'];
self::assertSame('TableStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'HideStructureActions' => 'HideStructureActions',
'ShowColumnComments' => 'ShowColumnComments',
':group:Default transformations' => ':group:Default transformations',
'Hex' => 'DefaultTransformations/Hex',
'Substring' => 'DefaultTransformations/Substring',
'Bool2Text' => 'DefaultTransformations/Bool2Text',
'External' => 'DefaultTransformations/External',
'PreApPend' => 'DefaultTransformations/PreApPend',
'DateFormat' => 'DefaultTransformations/DateFormat',
'Inline' => 'DefaultTransformations/Inline',
'TextImageLink' => 'DefaultTransformations/TextImageLink',
'TextLink' => 'DefaultTransformations/TextLink',
':group:end:0' => ':group:end:0',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'HideStructureActions',
'ShowColumnComments',
':group:Default transformations',
'DefaultTransformations/Hex',
'DefaultTransformations/Substring',
'DefaultTransformations/Bool2Text',
'DefaultTransformations/External',
'DefaultTransformations/PreApPend',
'DefaultTransformations/DateFormat',
'DefaultTransformations/Inline',
'DefaultTransformations/TextImageLink',
'DefaultTransformations/TextLink',
':group:end',
],
TableStructureForm::getFields(),
);
}
}

View File

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Setup;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\ConfigForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(ConfigForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class ConfigFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$configForm = new ConfigForm(new ConfigFile([]), 1);
self::assertSame('', ConfigForm::getName());
$forms = $configForm->getRegisteredForms();
self::assertCount(1, $forms);
self::assertArrayHasKey('Config', $forms);
$form = $forms['Config'];
self::assertSame('Config', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(['DefaultLang' => 'DefaultLang', 'ServerDefault' => 'ServerDefault'], $form->fields);
}
public function testGetFields(): void
{
self::assertSame(['DefaultLang', 'ServerDefault'], ConfigForm::getFields());
}
}

View File

@ -0,0 +1,292 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Setup;
use PhpMyAdmin\Config;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\FeaturesForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(FeaturesForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class FeaturesFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$config = new Config();
$config->settings['UserprefsDeveloperTab'] = true;
Config::$instance = $config;
$featuresForm = new FeaturesForm(new ConfigFile([]), 1);
self::assertSame('Features', FeaturesForm::getName());
$forms = $featuresForm->getRegisteredForms();
self::assertCount(10, $forms);
self::assertArrayHasKey('General', $forms);
$form = $forms['General'];
self::assertSame('General', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'VersionCheck' => 'VersionCheck',
'NaturalOrder' => 'NaturalOrder',
'InitialSlidersState' => 'InitialSlidersState',
'LoginCookieValidity' => 'LoginCookieValidity',
'SkipLockedTables' => 'SkipLockedTables',
'DisableMultiTableMaintenance' => 'DisableMultiTableMaintenance',
'ShowHint' => 'ShowHint',
'SendErrorReports' => 'SendErrorReports',
'ConsoleEnterExecutes' => 'ConsoleEnterExecutes',
'DisableShortcutKeys' => 'DisableShortcutKeys',
'FirstDayOfCalendar' => 'FirstDayOfCalendar',
],
$form->fields,
);
self::assertArrayHasKey('Databases', $forms);
$form = $forms['Databases'];
self::assertSame('Databases', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'MaxDbList' => 'MaxDbList',
'MaxTableList' => 'MaxTableList',
'DefaultConnectionCollation' => 'DefaultConnectionCollation',
],
$form->fields,
);
self::assertArrayHasKey('Text_fields', $forms);
$form = $forms['Text_fields'];
self::assertSame('Text_fields', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'CharEditing' => 'CharEditing',
'MinSizeForInputField' => 'MinSizeForInputField',
'MaxSizeForInputField' => 'MaxSizeForInputField',
'CharTextareaCols' => 'CharTextareaCols',
'CharTextareaRows' => 'CharTextareaRows',
'TextareaCols' => 'TextareaCols',
'TextareaRows' => 'TextareaRows',
'LongtextDoubleTextarea' => 'LongtextDoubleTextarea',
],
$form->fields,
);
self::assertArrayHasKey('Page_titles', $forms);
$form = $forms['Page_titles'];
self::assertSame('Page_titles', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TitleDefault' => 'TitleDefault',
'TitleTable' => 'TitleTable',
'TitleDatabase' => 'TitleDatabase',
'TitleServer' => 'TitleServer',
],
$form->fields,
);
self::assertArrayHasKey('Warnings', $forms);
$form = $forms['Warnings'];
self::assertSame('Warnings', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'PmaNoRelation_DisableWarning' => 'PmaNoRelation_DisableWarning',
'SuhosinDisableWarning' => 'SuhosinDisableWarning',
'LoginCookieValidityDisableWarning' => 'LoginCookieValidityDisableWarning',
'ReservedWordDisableWarning' => 'ReservedWordDisableWarning',
],
$form->fields,
);
self::assertArrayHasKey('Console', $forms);
$form = $forms['Console'];
self::assertSame('Console', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'Mode' => 'Console/Mode',
'StartHistory' => 'Console/StartHistory',
'AlwaysExpand' => 'Console/AlwaysExpand',
'CurrentQuery' => 'Console/CurrentQuery',
'EnterExecutes' => 'Console/EnterExecutes',
'DarkTheme' => 'Console/DarkTheme',
'Height' => 'Console/Height',
'GroupQueries' => 'Console/GroupQueries',
'OrderBy' => 'Console/OrderBy',
'Order' => 'Console/Order',
],
$form->fields,
);
self::assertArrayHasKey('Developer', $forms);
$form = $forms['Developer'];
self::assertSame('Developer', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(['UserprefsDeveloperTab' => 'UserprefsDeveloperTab', 'sql' => 'DBG/sql'], $form->fields);
self::assertArrayHasKey('Import_export', $forms);
$form = $forms['Import_export'];
self::assertSame('Import_export', $form->name);
self::assertSame(1, $form->index);
self::assertSame(['RecodingEngine' => ':group'], $form->default);
self::assertSame(
[
'UploadDir' => 'UploadDir',
'SaveDir' => 'SaveDir',
'RecodingEngine' => 'RecodingEngine',
'IconvExtraParams' => 'IconvExtraParams',
':group:end:0' => ':group:end:0',
'ZipDump' => 'ZipDump',
'GZipDump' => 'GZipDump',
'BZipDump' => 'BZipDump',
'CompressOnFly' => 'CompressOnFly',
],
$form->fields,
);
self::assertArrayHasKey('Security', $forms);
$form = $forms['Security'];
self::assertSame('Security', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'blowfish_secret' => 'blowfish_secret',
'CheckConfigurationPermissions' => 'CheckConfigurationPermissions',
'TrustedProxies' => 'TrustedProxies',
'AllowUserDropDatabase' => 'AllowUserDropDatabase',
'AllowArbitraryServer' => 'AllowArbitraryServer',
'ArbitraryServerRegexp' => 'ArbitraryServerRegexp',
'LoginCookieRecall' => 'LoginCookieRecall',
'LoginCookieStore' => 'LoginCookieStore',
'LoginCookieDeleteAll' => 'LoginCookieDeleteAll',
'CaptchaLoginPublicKey' => 'CaptchaLoginPublicKey',
'CaptchaLoginPrivateKey' => 'CaptchaLoginPrivateKey',
'CaptchaSiteVerifyURL' => 'CaptchaSiteVerifyURL',
],
$form->fields,
);
self::assertArrayHasKey('Other_core_settings', $forms);
$form = $forms['Other_core_settings'];
self::assertSame('Other_core_settings', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'PersistentConnections' => 'PersistentConnections',
'ExecTimeLimit' => 'ExecTimeLimit',
'MemoryLimit' => 'MemoryLimit',
'UseDbSearch' => 'UseDbSearch',
'ProxyUrl' => 'ProxyUrl',
'ProxyUser' => 'ProxyUser',
'ProxyPass' => 'ProxyPass',
'AllowThirdPartyFraming' => 'AllowThirdPartyFraming',
'ZeroConf' => 'ZeroConf',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'VersionCheck',
'NaturalOrder',
'InitialSlidersState',
'LoginCookieValidity',
'SkipLockedTables',
'DisableMultiTableMaintenance',
'ShowHint',
'SendErrorReports',
'ConsoleEnterExecutes',
'DisableShortcutKeys',
'FirstDayOfCalendar',
'MaxDbList',
'MaxTableList',
'DefaultConnectionCollation',
'CharEditing',
'MinSizeForInputField',
'MaxSizeForInputField',
'CharTextareaCols',
'CharTextareaRows',
'TextareaCols',
'TextareaRows',
'LongtextDoubleTextarea',
'TitleDefault',
'TitleTable',
'TitleDatabase',
'TitleServer',
'PmaNoRelation_DisableWarning',
'SuhosinDisableWarning',
'LoginCookieValidityDisableWarning',
'ReservedWordDisableWarning',
'Console/Mode',
'Console/StartHistory',
'Console/AlwaysExpand',
'Console/CurrentQuery',
'Console/EnterExecutes',
'Console/DarkTheme',
'Console/Height',
'Console/GroupQueries',
'Console/OrderBy',
'Console/Order',
'UploadDir',
'SaveDir',
'RecodingEngine',
'IconvExtraParams',
':group:end',
'ZipDump',
'GZipDump',
'BZipDump',
'CompressOnFly',
'blowfish_secret',
'CheckConfigurationPermissions',
'TrustedProxies',
'AllowUserDropDatabase',
'AllowArbitraryServer',
'ArbitraryServerRegexp',
'LoginCookieRecall',
'LoginCookieStore',
'LoginCookieDeleteAll',
'CaptchaLoginPublicKey',
'CaptchaLoginPrivateKey',
'CaptchaSiteVerifyURL',
'UserprefsDeveloperTab',
'DBG/sql',
'PersistentConnections',
'ExecTimeLimit',
'MemoryLimit',
'UseDbSearch',
'ProxyUrl',
'ProxyUser',
'ProxyPass',
'AllowThirdPartyFraming',
'ZeroConf',
],
FeaturesForm::getFields(),
);
}
}

View File

@ -0,0 +1,212 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Setup;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\MainForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(MainForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class MainFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$mainForm = new MainForm(new ConfigFile([]), 1);
self::assertSame('Main panel', MainForm::getName());
$forms = $mainForm->getRegisteredForms();
self::assertCount(7, $forms);
self::assertArrayHasKey('Startup', $forms);
$form = $forms['Startup'];
self::assertSame('Startup', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowCreateDb' => 'ShowCreateDb',
'ShowStats' => 'ShowStats',
'ShowServerInfo' => 'ShowServerInfo',
'ShowPhpInfo' => 'ShowPhpInfo',
'ShowChgPassword' => 'ShowChgPassword',
],
$form->fields,
);
self::assertArrayHasKey('DbStructure', $forms);
$form = $forms['DbStructure'];
self::assertSame('DbStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowDbStructureCharset' => 'ShowDbStructureCharset',
'ShowDbStructureComment' => 'ShowDbStructureComment',
'ShowDbStructureCreation' => 'ShowDbStructureCreation',
'ShowDbStructureLastUpdate' => 'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck' => 'ShowDbStructureLastCheck',
],
$form->fields,
);
self::assertArrayHasKey('TableStructure', $forms);
$form = $forms['TableStructure'];
self::assertSame('TableStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'HideStructureActions' => 'HideStructureActions',
'ShowColumnComments' => 'ShowColumnComments',
':group:Default transformations' => ':group:Default transformations',
'Hex' => 'DefaultTransformations/Hex',
'Substring' => 'DefaultTransformations/Substring',
'Bool2Text' => 'DefaultTransformations/Bool2Text',
'External' => 'DefaultTransformations/External',
'PreApPend' => 'DefaultTransformations/PreApPend',
'DateFormat' => 'DefaultTransformations/DateFormat',
'Inline' => 'DefaultTransformations/Inline',
'TextImageLink' => 'DefaultTransformations/TextImageLink',
'TextLink' => 'DefaultTransformations/TextLink',
':group:end:0' => ':group:end:0',
],
$form->fields,
);
self::assertArrayHasKey('Browse', $forms);
$form = $forms['Browse'];
self::assertSame('Browse', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TableNavigationLinksMode' => 'TableNavigationLinksMode',
'ActionLinksMode' => 'ActionLinksMode',
'ShowAll' => 'ShowAll',
'MaxRows' => 'MaxRows',
'Order' => 'Order',
'BrowsePointerEnable' => 'BrowsePointerEnable',
'BrowseMarkerEnable' => 'BrowseMarkerEnable',
'GridEditing' => 'GridEditing',
'SaveCellsAtOnce' => 'SaveCellsAtOnce',
'RepeatCells' => 'RepeatCells',
'LimitChars' => 'LimitChars',
'RowActionLinks' => 'RowActionLinks',
'RowActionLinksWithoutUnique' => 'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder' => 'TablePrimaryKeyOrder',
'RememberSorting' => 'RememberSorting',
'RelationalDisplay' => 'RelationalDisplay',
],
$form->fields,
);
self::assertArrayHasKey('Edit', $forms);
$form = $forms['Edit'];
self::assertSame('Edit', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ProtectBinary' => 'ProtectBinary',
'ShowFunctionFields' => 'ShowFunctionFields',
'ShowFieldTypesInDataEditView' => 'ShowFieldTypesInDataEditView',
'InsertRows' => 'InsertRows',
'ForeignKeyDropdownOrder' => 'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit' => 'ForeignKeyMaxLimit',
],
$form->fields,
);
self::assertArrayHasKey('Tabs', $forms);
$form = $forms['Tabs'];
self::assertSame('Tabs', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TabsMode' => 'TabsMode',
'DefaultTabServer' => 'DefaultTabServer',
'DefaultTabDatabase' => 'DefaultTabDatabase',
'DefaultTabTable' => 'DefaultTabTable',
],
$form->fields,
);
self::assertArrayHasKey('DisplayRelationalSchema', $forms);
$form = $forms['DisplayRelationalSchema'];
self::assertSame('DisplayRelationalSchema', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(['PDFDefaultPageSize' => 'PDFDefaultPageSize'], $form->fields);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowCreateDb',
'ShowStats',
'ShowServerInfo',
'ShowPhpInfo',
'ShowChgPassword',
'ShowDbStructureCharset',
'ShowDbStructureComment',
'ShowDbStructureCreation',
'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck',
'HideStructureActions',
'ShowColumnComments',
':group:Default transformations',
'DefaultTransformations/Hex',
'DefaultTransformations/Substring',
'DefaultTransformations/Bool2Text',
'DefaultTransformations/External',
'DefaultTransformations/PreApPend',
'DefaultTransformations/DateFormat',
'DefaultTransformations/Inline',
'DefaultTransformations/TextImageLink',
'DefaultTransformations/TextLink',
':group:end',
'TableNavigationLinksMode',
'ActionLinksMode',
'ShowAll',
'MaxRows',
'Order',
'BrowsePointerEnable',
'BrowseMarkerEnable',
'GridEditing',
'SaveCellsAtOnce',
'RepeatCells',
'LimitChars',
'RowActionLinks',
'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder',
'RememberSorting',
'RelationalDisplay',
'ProtectBinary',
'ShowFunctionFields',
'ShowFieldTypesInDataEditView',
'InsertRows',
'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit',
'TabsMode',
'DefaultTabServer',
'DefaultTabDatabase',
'DefaultTabTable',
'PDFDefaultPageSize',
],
MainForm::getFields(),
);
}
}

View File

@ -0,0 +1,172 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Setup;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\ServersForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(ServersForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class ServersFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$serversForm = new ServersForm(new ConfigFile([]), 1);
self::assertSame('', ServersForm::getName());
$forms = $serversForm->getRegisteredForms();
self::assertCount(5, $forms);
self::assertArrayHasKey('Server', $forms);
$form = $forms['Server'];
self::assertSame('Server', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'verbose' => 'Servers/1/verbose',
'host' => 'Servers/1/host',
'port' => 'Servers/1/port',
'socket' => 'Servers/1/socket',
'ssl' => 'Servers/1/ssl',
'compress' => 'Servers/1/compress',
],
$form->fields,
);
self::assertArrayHasKey('Server_auth', $forms);
$form = $forms['Server_auth'];
self::assertSame('Server_auth', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'auth_type' => 'Servers/1/auth_type',
':group:Config authentication' => 'Servers/1/:group:Config authentication',
'user' => 'Servers/1/user',
'password' => 'Servers/1/password',
':group:end:0' => 'Servers/1/:group:end:0',
':group:HTTP authentication' => 'Servers/1/:group:HTTP authentication',
'auth_http_realm' => 'Servers/1/auth_http_realm',
':group:end:1' => 'Servers/1/:group:end:1',
':group:Signon authentication' => 'Servers/1/:group:Signon authentication',
'SignonSession' => 'Servers/1/SignonSession',
'SignonURL' => 'Servers/1/SignonURL',
'LogoutURL' => 'Servers/1/LogoutURL',
],
$form->fields,
);
self::assertArrayHasKey('Server_config', $forms);
$form = $forms['Server_config'];
self::assertSame('Server_config', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'only_db' => 'Servers/1/only_db',
'hide_db' => 'Servers/1/hide_db',
'AllowRoot' => 'Servers/1/AllowRoot',
'AllowNoPassword' => 'Servers/1/AllowNoPassword',
'DisableIS' => 'Servers/1/DisableIS',
'order' => 'Servers/1/AllowDeny/order',
'rules' => 'Servers/1/AllowDeny/rules',
'SessionTimeZone' => 'Servers/1/SessionTimeZone',
],
$form->fields,
);
self::assertArrayHasKey('Server_pmadb', $forms);
$form = $forms['Server_pmadb'];
self::assertSame('Server_pmadb', $form->name);
self::assertSame(1, $form->index);
self::assertSame(
[
'Servers/1/pmadb' => 'phpmyadmin',
'Servers/1/bookmarktable' => 'pma__bookmark',
'Servers/1/relation' => 'pma__relation',
'Servers/1/userconfig' => 'pma__userconfig',
'Servers/1/users' => 'pma__users',
'Servers/1/usergroups' => 'pma__usergroups',
'Servers/1/navigationhiding' => 'pma__navigationhiding',
'Servers/1/table_info' => 'pma__table_info',
'Servers/1/column_info' => 'pma__column_info',
'Servers/1/history' => 'pma__history',
'Servers/1/recent' => 'pma__recent',
'Servers/1/favorite' => 'pma__favorite',
'Servers/1/table_uiprefs' => 'pma__table_uiprefs',
'Servers/1/tracking' => 'pma__tracking',
'Servers/1/table_coords' => 'pma__table_coords',
'Servers/1/pdf_pages' => 'pma__pdf_pages',
'Servers/1/savedsearches' => 'pma__savedsearches',
'Servers/1/central_columns' => 'pma__central_columns',
'Servers/1/designer_settings' => 'pma__designer_settings',
'Servers/1/export_templates' => 'pma__export_templates',
'Servers/1/MaxTableUiprefs' => 100,
],
$form->default,
);
self::assertSame(
[
'pmadb' => 'Servers/1/pmadb',
'controlhost' => 'Servers/1/controlhost',
'controlport' => 'Servers/1/controlport',
'controluser' => 'Servers/1/controluser',
'controlpass' => 'Servers/1/controlpass',
'bookmarktable' => 'Servers/1/bookmarktable',
'relation' => 'Servers/1/relation',
'userconfig' => 'Servers/1/userconfig',
'users' => 'Servers/1/users',
'usergroups' => 'Servers/1/usergroups',
'navigationhiding' => 'Servers/1/navigationhiding',
'table_info' => 'Servers/1/table_info',
'column_info' => 'Servers/1/column_info',
'history' => 'Servers/1/history',
'recent' => 'Servers/1/recent',
'favorite' => 'Servers/1/favorite',
'table_uiprefs' => 'Servers/1/table_uiprefs',
'tracking' => 'Servers/1/tracking',
'table_coords' => 'Servers/1/table_coords',
'pdf_pages' => 'Servers/1/pdf_pages',
'savedsearches' => 'Servers/1/savedsearches',
'central_columns' => 'Servers/1/central_columns',
'designer_settings' => 'Servers/1/designer_settings',
'export_templates' => 'Servers/1/export_templates',
'MaxTableUiprefs' => 'Servers/1/MaxTableUiprefs',
],
$form->fields,
);
self::assertArrayHasKey('Server_tracking', $forms);
$form = $forms['Server_tracking'];
self::assertSame('Server_tracking', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'tracking_version_auto_create' => 'Servers/1/tracking_version_auto_create',
'tracking_default_statements' => 'Servers/1/tracking_default_statements',
'tracking_add_drop_view' => 'Servers/1/tracking_add_drop_view',
'tracking_add_drop_table' => 'Servers/1/tracking_add_drop_table',
'tracking_add_drop_database' => 'Servers/1/tracking_add_drop_database',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(['Servers', 'Servers', 'Servers', 'Servers', 'Servers'], ServersForm::getFields());
}
}

View File

@ -0,0 +1,94 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\Setup;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\SqlForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(SqlForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class SqlFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$sqlForm = new SqlForm(new ConfigFile([]), 1);
self::assertSame('SQL queries', SqlForm::getName());
$forms = $sqlForm->getRegisteredForms();
self::assertCount(2, $forms);
self::assertArrayHasKey('Sql_queries', $forms);
$form = $forms['Sql_queries'];
self::assertSame('Sql_queries', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowSQL' => 'ShowSQL',
'Confirm' => 'Confirm',
'QueryHistoryMax' => 'QueryHistoryMax',
'IgnoreMultiSubmitErrors' => 'IgnoreMultiSubmitErrors',
'MaxCharactersInDisplayedSQL' => 'MaxCharactersInDisplayedSQL',
'RetainQueryBox' => 'RetainQueryBox',
'CodemirrorEnable' => 'CodemirrorEnable',
'LintEnable' => 'LintEnable',
'EnableAutocompleteForTablesAndColumns' => 'EnableAutocompleteForTablesAndColumns',
'DefaultForeignKeyChecks' => 'DefaultForeignKeyChecks',
'QueryHistoryDB' => 'QueryHistoryDB',
'AllowSharedBookmarks' => 'AllowSharedBookmarks',
],
$form->fields,
);
self::assertArrayHasKey('Sql_box', $forms);
$form = $forms['Sql_box'];
self::assertSame('Sql_box', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'Edit' => 'SQLQuery/Edit',
'Explain' => 'SQLQuery/Explain',
'ShowAsPHP' => 'SQLQuery/ShowAsPHP',
'Refresh' => 'SQLQuery/Refresh',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowSQL',
'Confirm',
'QueryHistoryMax',
'IgnoreMultiSubmitErrors',
'MaxCharactersInDisplayedSQL',
'RetainQueryBox',
'CodemirrorEnable',
'LintEnable',
'EnableAutocompleteForTablesAndColumns',
'DefaultForeignKeyChecks',
'QueryHistoryDB',
'AllowSharedBookmarks',
'SQLQuery/Edit',
'SQLQuery/Explain',
'SQLQuery/ShowAsPHP',
'SQLQuery/Refresh',
],
SqlForm::getFields(),
);
}
}

View File

@ -0,0 +1,204 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\User;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\User\MainForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(MainForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class MainFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$mainForm = new MainForm(new ConfigFile([]), 1);
self::assertSame('Main panel', MainForm::getName());
$forms = $mainForm->getRegisteredForms();
self::assertCount(7, $forms);
self::assertArrayHasKey('Startup', $forms);
$form = $forms['Startup'];
self::assertSame('Startup', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
['ShowCreateDb' => 'ShowCreateDb', 'ShowStats' => 'ShowStats', 'ShowServerInfo' => 'ShowServerInfo'],
$form->fields,
);
self::assertArrayHasKey('DbStructure', $forms);
$form = $forms['DbStructure'];
self::assertSame('DbStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowDbStructureCharset' => 'ShowDbStructureCharset',
'ShowDbStructureComment' => 'ShowDbStructureComment',
'ShowDbStructureCreation' => 'ShowDbStructureCreation',
'ShowDbStructureLastUpdate' => 'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck' => 'ShowDbStructureLastCheck',
],
$form->fields,
);
self::assertArrayHasKey('TableStructure', $forms);
$form = $forms['TableStructure'];
self::assertSame('TableStructure', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'HideStructureActions' => 'HideStructureActions',
'ShowColumnComments' => 'ShowColumnComments',
':group:Default transformations' => ':group:Default transformations',
'Hex' => 'DefaultTransformations/Hex',
'Substring' => 'DefaultTransformations/Substring',
'Bool2Text' => 'DefaultTransformations/Bool2Text',
'External' => 'DefaultTransformations/External',
'PreApPend' => 'DefaultTransformations/PreApPend',
'DateFormat' => 'DefaultTransformations/DateFormat',
'Inline' => 'DefaultTransformations/Inline',
'TextImageLink' => 'DefaultTransformations/TextImageLink',
'TextLink' => 'DefaultTransformations/TextLink',
':group:end:0' => ':group:end:0',
],
$form->fields,
);
self::assertArrayHasKey('Browse', $forms);
$form = $forms['Browse'];
self::assertSame('Browse', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TableNavigationLinksMode' => 'TableNavigationLinksMode',
'ActionLinksMode' => 'ActionLinksMode',
'ShowAll' => 'ShowAll',
'MaxRows' => 'MaxRows',
'Order' => 'Order',
'BrowsePointerEnable' => 'BrowsePointerEnable',
'BrowseMarkerEnable' => 'BrowseMarkerEnable',
'GridEditing' => 'GridEditing',
'SaveCellsAtOnce' => 'SaveCellsAtOnce',
'RepeatCells' => 'RepeatCells',
'LimitChars' => 'LimitChars',
'RowActionLinks' => 'RowActionLinks',
'RowActionLinksWithoutUnique' => 'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder' => 'TablePrimaryKeyOrder',
'RememberSorting' => 'RememberSorting',
'RelationalDisplay' => 'RelationalDisplay',
],
$form->fields,
);
self::assertArrayHasKey('Edit', $forms);
$form = $forms['Edit'];
self::assertSame('Edit', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ProtectBinary' => 'ProtectBinary',
'ShowFunctionFields' => 'ShowFunctionFields',
'ShowFieldTypesInDataEditView' => 'ShowFieldTypesInDataEditView',
'InsertRows' => 'InsertRows',
'ForeignKeyDropdownOrder' => 'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit' => 'ForeignKeyMaxLimit',
],
$form->fields,
);
self::assertArrayHasKey('Tabs', $forms);
$form = $forms['Tabs'];
self::assertSame('Tabs', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'TabsMode' => 'TabsMode',
'DefaultTabServer' => 'DefaultTabServer',
'DefaultTabDatabase' => 'DefaultTabDatabase',
'DefaultTabTable' => 'DefaultTabTable',
],
$form->fields,
);
self::assertArrayHasKey('DisplayRelationalSchema', $forms);
$form = $forms['DisplayRelationalSchema'];
self::assertSame('DisplayRelationalSchema', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(['PDFDefaultPageSize' => 'PDFDefaultPageSize'], $form->fields);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowCreateDb',
'ShowStats',
'ShowServerInfo',
'ShowDbStructureCharset',
'ShowDbStructureComment',
'ShowDbStructureCreation',
'ShowDbStructureLastUpdate',
'ShowDbStructureLastCheck',
'HideStructureActions',
'ShowColumnComments',
':group:Default transformations',
'DefaultTransformations/Hex',
'DefaultTransformations/Substring',
'DefaultTransformations/Bool2Text',
'DefaultTransformations/External',
'DefaultTransformations/PreApPend',
'DefaultTransformations/DateFormat',
'DefaultTransformations/Inline',
'DefaultTransformations/TextImageLink',
'DefaultTransformations/TextLink',
':group:end',
'TableNavigationLinksMode',
'ActionLinksMode',
'ShowAll',
'MaxRows',
'Order',
'BrowsePointerEnable',
'BrowseMarkerEnable',
'GridEditing',
'SaveCellsAtOnce',
'RepeatCells',
'LimitChars',
'RowActionLinks',
'RowActionLinksWithoutUnique',
'TablePrimaryKeyOrder',
'RememberSorting',
'RelationalDisplay',
'ProtectBinary',
'ShowFunctionFields',
'ShowFieldTypesInDataEditView',
'InsertRows',
'ForeignKeyDropdownOrder',
'ForeignKeyMaxLimit',
'TabsMode',
'DefaultTabServer',
'DefaultTabDatabase',
'DefaultTabTable',
'PDFDefaultPageSize',
],
MainForm::getFields(),
);
}
}

View File

@ -0,0 +1,148 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\User;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\User\NaviForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(NaviForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class NaviFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$naviForm = new NaviForm(new ConfigFile([]), 1);
self::assertSame('Navigation panel', NaviForm::getName());
$forms = $naviForm->getRegisteredForms();
self::assertCount(5, $forms);
self::assertArrayHasKey('Navi_panel', $forms);
$form = $forms['Navi_panel'];
self::assertSame('Navi_panel', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowDatabasesNavigationAsTree' => 'ShowDatabasesNavigationAsTree',
'NavigationLinkWithMainPanel' => 'NavigationLinkWithMainPanel',
'NavigationDisplayLogo' => 'NavigationDisplayLogo',
'NavigationLogoLink' => 'NavigationLogoLink',
'NavigationLogoLinkWindow' => 'NavigationLogoLinkWindow',
'NavigationTreePointerEnable' => 'NavigationTreePointerEnable',
'FirstLevelNavigationItems' => 'FirstLevelNavigationItems',
'NavigationTreeDisplayItemFilterMinimum' => 'NavigationTreeDisplayItemFilterMinimum',
'NumRecentTables' => 'NumRecentTables',
'NumFavoriteTables' => 'NumFavoriteTables',
'NavigationWidth' => 'NavigationWidth',
],
$form->fields,
);
self::assertArrayHasKey('Navi_tree', $forms);
$form = $forms['Navi_tree'];
self::assertSame('Navi_tree', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'MaxNavigationItems' => 'MaxNavigationItems',
'NavigationTreeEnableGrouping' => 'NavigationTreeEnableGrouping',
'NavigationTreeEnableExpansion' => 'NavigationTreeEnableExpansion',
'NavigationTreeShowTables' => 'NavigationTreeShowTables',
'NavigationTreeShowViews' => 'NavigationTreeShowViews',
'NavigationTreeShowFunctions' => 'NavigationTreeShowFunctions',
'NavigationTreeShowProcedures' => 'NavigationTreeShowProcedures',
'NavigationTreeShowEvents' => 'NavigationTreeShowEvents',
'NavigationTreeAutoexpandSingleDb' => 'NavigationTreeAutoexpandSingleDb',
],
$form->fields,
);
self::assertArrayHasKey('Navi_servers', $forms);
$form = $forms['Navi_servers'];
self::assertSame('Navi_servers', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
['NavigationDisplayServers' => 'NavigationDisplayServers', 'DisplayServersList' => 'DisplayServersList'],
$form->fields,
);
self::assertArrayHasKey('Navi_databases', $forms);
$form = $forms['Navi_databases'];
self::assertSame('Navi_databases', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'NavigationTreeDisplayDbFilterMinimum' => 'NavigationTreeDisplayDbFilterMinimum',
'NavigationTreeDbSeparator' => 'NavigationTreeDbSeparator',
],
$form->fields,
);
self::assertArrayHasKey('Navi_tables', $forms);
$form = $forms['Navi_tables'];
self::assertSame('Navi_tables', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'NavigationTreeDefaultTabTable' => 'NavigationTreeDefaultTabTable',
'NavigationTreeDefaultTabTable2' => 'NavigationTreeDefaultTabTable2',
'NavigationTreeTableSeparator' => 'NavigationTreeTableSeparator',
'NavigationTreeTableLevel' => 'NavigationTreeTableLevel',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowDatabasesNavigationAsTree',
'NavigationLinkWithMainPanel',
'NavigationDisplayLogo',
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
'FirstLevelNavigationItems',
'NavigationTreeDisplayItemFilterMinimum',
'NumRecentTables',
'NumFavoriteTables',
'NavigationWidth',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
'NavigationTreeEnableExpansion',
'NavigationTreeShowTables',
'NavigationTreeShowViews',
'NavigationTreeShowFunctions',
'NavigationTreeShowProcedures',
'NavigationTreeShowEvents',
'NavigationTreeAutoexpandSingleDb',
'NavigationDisplayServers',
'DisplayServersList',
'NavigationTreeDisplayDbFilterMinimum',
'NavigationTreeDbSeparator',
'NavigationTreeDefaultTabTable',
'NavigationTreeDefaultTabTable2',
'NavigationTreeTableSeparator',
'NavigationTreeTableLevel',
],
NaviForm::getFields(),
);
}
}

View File

@ -0,0 +1,90 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\User;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\User\SqlForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(SqlForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class SqlFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$sqlForm = new SqlForm(new ConfigFile([]), 1);
self::assertSame('SQL queries', SqlForm::getName());
$forms = $sqlForm->getRegisteredForms();
self::assertCount(2, $forms);
self::assertArrayHasKey('Sql_queries', $forms);
$form = $forms['Sql_queries'];
self::assertSame('Sql_queries', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowSQL' => 'ShowSQL',
'Confirm' => 'Confirm',
'QueryHistoryMax' => 'QueryHistoryMax',
'IgnoreMultiSubmitErrors' => 'IgnoreMultiSubmitErrors',
'MaxCharactersInDisplayedSQL' => 'MaxCharactersInDisplayedSQL',
'RetainQueryBox' => 'RetainQueryBox',
'CodemirrorEnable' => 'CodemirrorEnable',
'LintEnable' => 'LintEnable',
'EnableAutocompleteForTablesAndColumns' => 'EnableAutocompleteForTablesAndColumns',
'DefaultForeignKeyChecks' => 'DefaultForeignKeyChecks',
],
$form->fields,
);
self::assertArrayHasKey('Sql_box', $forms);
$form = $forms['Sql_box'];
self::assertSame('Sql_box', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'Edit' => 'SQLQuery/Edit',
'Explain' => 'SQLQuery/Explain',
'ShowAsPHP' => 'SQLQuery/ShowAsPHP',
'Refresh' => 'SQLQuery/Refresh',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowSQL',
'Confirm',
'QueryHistoryMax',
'IgnoreMultiSubmitErrors',
'MaxCharactersInDisplayedSQL',
'RetainQueryBox',
'CodemirrorEnable',
'LintEnable',
'EnableAutocompleteForTablesAndColumns',
'DefaultForeignKeyChecks',
'SQLQuery/Edit',
'SQLQuery/Explain',
'SQLQuery/ShowAsPHP',
'SQLQuery/Refresh',
],
SqlForm::getFields(),
);
}
}