N°9567 - fix back to setup from extension management - extension screen missing when back after audit

This commit is contained in:
odain
2026-05-20 14:56:55 +02:00
parent b6c48f4bba
commit 03e1806f9a
2 changed files with 50 additions and 21 deletions

View File

@@ -179,6 +179,7 @@ class WizStepModulesChoice extends AbstractWizStepInstall
$aSteps [] = ["class" => "WizStepModulesChoice","state" => "$i"]; $aSteps [] = ["class" => "WizStepModulesChoice","state" => "$i"];
$i++; $i++;
} }
$aSteps [] = ["class" => "WizStepModulesChoice","state" => "$i"];
return $aSteps; return $aSteps;
} }

View File

@@ -13,7 +13,8 @@ use XMLParameters;
class WizStepModulesChoiceTest extends ItopTestCase class WizStepModulesChoiceTest extends ItopTestCase
{ {
private WizStepModulesChoiceFake $oStep; private WizStepModulesChoiceFake $oWizStepModulesChoiceFake;
private WizardController $oWizard;
protected function setUp(): void protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
@@ -22,7 +23,8 @@ class WizStepModulesChoiceTest extends ItopTestCase
require_once __DIR__.'/iTopExtensionsMapFake.php'; require_once __DIR__.'/iTopExtensionsMapFake.php';
require_once __DIR__.'/WizStepModulesChoiceFake.php'; require_once __DIR__.'/WizStepModulesChoiceFake.php';
$this->oStep = new WizStepModulesChoiceFake(new WizardController('', ''), ''); $this->oWizard = new WizardController('', '');
$this->oWizStepModulesChoiceFake = new WizStepModulesChoiceFake($this->oWizard, '');
ModuleDiscovery::ResetCache(); ModuleDiscovery::ResetCache();
} }
@@ -373,8 +375,8 @@ class WizStepModulesChoiceTest extends ItopTestCase
*/ */
public function testComputeChoiceFlags($aExtensionsOnDiskOrDb, $aWizardStepDefinition, $bIsCurrentSelected, $bDisableUninstallChecks, $aExpectedFlags) public function testComputeChoiceFlags($aExtensionsOnDiskOrDb, $aWizardStepDefinition, $bIsCurrentSelected, $bDisableUninstallChecks, $aExpectedFlags)
{ {
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb));
$aFlags = $this->oStep->ComputeChoiceFlags($aWizardStepDefinition, '_0', $bIsCurrentSelected ? ['_0' => '_0'] : [], false, $bDisableUninstallChecks, true); $aFlags = $this->oWizStepModulesChoiceFake->ComputeChoiceFlags($aWizardStepDefinition, '_0', $bIsCurrentSelected ? ['_0' => '_0'] : [], false, $bDisableUninstallChecks, true);
$this->assertEquals($aExpectedFlags, $aFlags); $this->assertEquals($aExpectedFlags, $aFlags);
} }
@@ -495,8 +497,8 @@ class WizStepModulesChoiceTest extends ItopTestCase
*/ */
public function testGetAddedAndRemovedExtensions($aExtensionsOnDiskOrDb, $aSelectedExtensions, $aExpectedAddedList, $aExpectedRemovedList) public function testGetAddedAndRemovedExtensions($aExtensionsOnDiskOrDb, $aSelectedExtensions, $aExpectedAddedList, $aExpectedRemovedList)
{ {
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb));
[$aAddedList, $aRemovedList, $aNotUninstallableList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions); [$aAddedList, $aRemovedList, $aNotUninstallableList] = $this->oWizStepModulesChoiceFake->GetAddedAndRemovedExtensions($aSelectedExtensions);
$this->assertEquals($aExpectedAddedList, $aAddedList); $this->assertEquals($aExpectedAddedList, $aAddedList);
$this->assertEquals($aExpectedRemovedList, $aRemovedList); $this->assertEquals($aExpectedRemovedList, $aRemovedList);
} }
@@ -688,7 +690,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
'installed' => false, 'installed' => false,
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
$aStepInfo = [ $aStepInfo = [
'title' => 'Extensions', 'title' => 'Extensions',
@@ -729,7 +731,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aModules = []; $aModules = [];
$aExtensions = []; $aExtensions = [];
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
$this->assertEquals($aExpectedModules, $aModules); $this->assertEquals($aExpectedModules, $aModules);
$this->assertEquals($aExpectedExtensions, $aExtensions); $this->assertEquals($aExpectedExtensions, $aExtensions);
} }
@@ -745,7 +747,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
$aStepInfo = [ $aStepInfo = [
'title' => 'Extensions', 'title' => 'Extensions',
@@ -774,7 +776,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aModules = []; $aModules = [];
$aExtensions = []; $aExtensions = [];
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
$this->assertEquals($aExpectedModules, $aModules); $this->assertEquals($aExpectedModules, $aModules);
$this->assertEquals($aExpectedExtensions, $aExtensions); $this->assertEquals($aExpectedExtensions, $aExtensions);
} }
@@ -795,7 +797,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
], ],
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
$aStepInfo = [ $aStepInfo = [
'title' => 'Extensions', 'title' => 'Extensions',
@@ -824,7 +826,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aModules = []; $aModules = [];
$aExtensions = []; $aExtensions = [];
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
$this->assertEquals($aExpectedModules, $aModules); $this->assertEquals($aExpectedModules, $aModules);
$this->assertEquals($aExpectedExtensions, $aExtensions); $this->assertEquals($aExpectedExtensions, $aExtensions);
} }
@@ -842,7 +844,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
'installed' => false, 'installed' => false,
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
$aStepInfo = [ $aStepInfo = [
'options' => [ 'options' => [
@@ -886,7 +888,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aModules = []; $aModules = [];
$aExtensions = []; $aExtensions = [];
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
$this->assertEquals($aExpectedModules, $aModules); $this->assertEquals($aExpectedModules, $aModules);
$this->assertEquals($aExpectedExtensions, $aExtensions); $this->assertEquals($aExpectedExtensions, $aExtensions);
} }
@@ -898,7 +900,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
'installed' => false, 'installed' => false,
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
//GetSelectedModules //GetSelectedModules
$aStepInfo = [ $aStepInfo = [
@@ -925,13 +927,13 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aExtensions = []; $aExtensions = [];
$this->expectException('Exception'); $this->expectException('Exception');
$this->expectExceptionMessage('Extension combodo-sample does not have any module associated'); $this->expectExceptionMessage('Extension combodo-sample does not have any module associated');
$this->oStep->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions);
} }
public function testGetSelectedModulesShouldNotThrowAnExceptionWhenAMandatoryModuleIsMissing() public function testGetSelectedModulesShouldNotThrowAnExceptionWhenAMandatoryModuleIsMissing()
{ {
$aExtensionsMapData = []; $aExtensionsMapData = [];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData));
//GetSelectedModules //GetSelectedModules
$aStepInfo = [ $aStepInfo = [
@@ -956,7 +958,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
$aModules = []; $aModules = [];
$aExtensions = []; $aExtensions = [];
$this->oStep->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions); $this->oWizStepModulesChoiceFake->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions);
$this->assertCount(0, $aModules); $this->assertCount(0, $aModules);
$this->assertCount(1, $aExtensions); $this->assertCount(1, $aExtensions);
@@ -1380,14 +1382,14 @@ HTML,
'installed' => true, 'installed' => true,
], ],
]; ];
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb)); $this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb));
$aStepInfo = [ $aStepInfo = [
'options' => $aStepOptions, 'options' => $aStepOptions,
'alternatives' => $aStepAlternatives, 'alternatives' => $aStepAlternatives,
]; ];
$oPage = new \WebPageFake(); $oPage = new \WebPageFake();
$this->oStep->DisplayOptions($oPage, $aStepInfo, $aSelectedComponents, $aDefaults); $this->oWizStepModulesChoiceFake->DisplayOptions($oPage, $aStepInfo, $aSelectedComponents, $aDefaults);
$this->assertEquals($sExpectedHTML, $oPage->sContent); $this->assertEquals($sExpectedHTML, $oPage->sContent);
} }
@@ -1398,9 +1400,35 @@ HTML,
$aSteps = $aParams->Get('steps', []); $aSteps = $aParams->Get('steps', []);
$aSelectedExtensions = ["itop-config-mgmt-core","itop-config-mgmt-datacenter","itop-config-mgmt-end-user","itop-config-mgmt-storage","itop-config-mgmt-virtualization","itop-container-mgmt","itop-service-mgmt-enterprise","itop-ticket-mgmt-simple-ticket","itop-ticket-mgmt-simple-ticket-enhanced-portal","itop-change-mgmt-simple","itop-kown-error-mgmt","itop-problem-mgmt","combodo-oauth2-client","combodo-mfa-extended","combodo-data-replication","combodo-api-playground","combodo-snapshot"]; $aSelectedExtensions = ["itop-config-mgmt-core","itop-config-mgmt-datacenter","itop-config-mgmt-end-user","itop-config-mgmt-storage","itop-config-mgmt-virtualization","itop-container-mgmt","itop-service-mgmt-enterprise","itop-ticket-mgmt-simple-ticket","itop-ticket-mgmt-simple-ticket-enhanced-portal","itop-change-mgmt-simple","itop-kown-error-mgmt","itop-problem-mgmt","combodo-oauth2-client","combodo-mfa-extended","combodo-data-replication","combodo-api-playground","combodo-snapshot"];
$aRes = $this->oStep->GetSelectedComponents($aSteps, json_encode($aSelectedExtensions)); $aRes = $this->oWizStepModulesChoiceFake->GetSelectedComponents($aSteps, json_encode($aSelectedExtensions));
$aExpected = json_decode('[{"_0":"_0","_1":"_1","_2":"_2","_3":"_3","_4":"_4","_4_0":"_4_0"},{"_0":"_0"},{"_0":"_0","_0_0":"_0_0"},{"_0":"_0"},{"_0":"_0","_1":"_1"}]', true); $aExpected = json_decode('[{"_0":"_0","_1":"_1","_2":"_2","_3":"_3","_4":"_4","_4_0":"_4_0"},{"_0":"_0"},{"_0":"_0","_0_0":"_0_0"},{"_0":"_0"},{"_0":"_0","_1":"_1"}]', true);
$this->assertEquals($aExpected, $aRes); $this->assertEquals($aExpected, $aRes);
} }
public function testGetWizardSteps()
{
$this->oWizard->SetParameter('source_dir', __DIR__.'/ressources');
$aExtensionsOnDiskOrDb = [
'itop-ext-not-installed' => [
'installed' => false,
],
'itop-ext-installed' => [
'installed' => true,
],
];
$this->oWizStepModulesChoiceFake->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsOnDiskOrDb));
$expected = [
["class" => "WizStepWelcome","state" => ""],
["class" => "WizStepInstallOrUpgrade","state" => ""],
["class" => "WizStepDetectedInfo","state" => ""],
["class" => "WizStepUpgradeMiscParams","state" => ""],
];
for ($i = 0;$i <= 5; $i++) {
$expected [] = ["class" => "WizStepModulesChoice","state" => "".$i];
}
$this->assertEquals($expected, $this->oWizStepModulesChoiceFake->GetWizardSteps());
}
} }