From 020d72014061ce2a133c31c8730d09d6eff2ca9b Mon Sep 17 00:00:00 2001 From: odain Date: Mon, 20 Apr 2026 16:15:13 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B09434=20-=20Do=20not=20launch=20dry=20run?= =?UTF-8?q?=20on=20a=20iTop=20version=20upgrade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup/sequencers/DataAuditSequencer.php | 7 +++ .../sequencers/DataAuditSequencerTest.php | 53 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/setup/sequencers/DataAuditSequencer.php b/setup/sequencers/DataAuditSequencer.php index 857e5a81a4..d381cc4316 100644 --- a/setup/sequencers/DataAuditSequencer.php +++ b/setup/sequencers/DataAuditSequencer.php @@ -101,6 +101,13 @@ class DataAuditSequencer extends StepSequencer return false; } + $aInstalledInfo = $this->oRunTimeEnvironment->GetApplicationVersion($this->GetConfig()); + $sInstalledVersion = $aInstalledInfo['product_version']; + + if ($sInstalledVersion !== ITOP_VERSION_FULL) { + return false; + } + $sFinalEnvDir = APPROOT.'env-'.$this->oRunTimeEnvironment->GetFinalEnv(); return is_dir($sFinalEnvDir); } diff --git a/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php b/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php index 950ab793d3..4e290774e5 100644 --- a/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php +++ b/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php @@ -77,6 +77,8 @@ class DataAuditSequencerTest extends ItopTestCase public function testCompileWithAudit() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); $oRunTimeEnvironment->expects($this->once())->method('DoCompile'); $oRunTimeEnvironment->expects($this->once())->method('GetFinalEnv') ->willReturn('production'); @@ -117,6 +119,8 @@ class DataAuditSequencerTest extends ItopTestCase public function testCompileNoAuditInUpgradeWithoutAnyRuntimeEnv() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); $oRunTimeEnvironment->expects($this->once())->method('DoCompile'); $oRunTimeEnvironment->expects($this->once())->method('GetFinalEnv') ->willReturn('gabuzomeu'); @@ -159,6 +163,8 @@ class DataAuditSequencerTest extends ItopTestCase public function testAuditCalled() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); $oRunTimeEnvironment->expects($this->once())->method('DataToCleanupAudit'); $oRunTimeEnvironment->expects($this->any())->method('GetFinalEnv') ->willReturn('production'); @@ -182,6 +188,8 @@ class DataAuditSequencerTest extends ItopTestCase public function testNoAuditInUpgradeModeWhenNoRuntimeEnvironmentAvailable() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); $oRunTimeEnvironment->expects($this->never())->method('DataToCleanupAudit'); $oRunTimeEnvironment->expects($this->once())->method('GetFinalEnv') ->willReturn('gabuzomeu'); @@ -244,4 +252,49 @@ class DataAuditSequencerTest extends ItopTestCase $oParams->LoadFromHash($aParams); return $oParams; } + + public function testIsDataAuditRequired_NoAuditInFreshInstall() + { + $this->oConfig = $this->createMock(\Config::class); + + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method("GetBuildEnv")->willReturn("production-test"); + + $oSequencer = new DataAuditSequencer($this->GivenParams(), $oRunTimeEnvironment); + $this->SetNonPublicProperty($oSequencer, 'oTestConfig', $this->oConfig); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + + public function testIsDataAuditRequired_NoAuditOnPackageUpgrade() + { + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL."_alpha"]); + $oRunTimeEnvironment->expects($this->never())->method("GetFinalEnv"); + + $oSequencer = new DataAuditSequencer($this->GivenParams(['mode' => 'upgrade']), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + + public function testIsDataAuditRequired_NoAuditOnSystemChange() + { + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); + $oRunTimeEnvironment->expects($this->once())->method("GetFinalEnv")->willReturn("production-gabuzomeu"); + + $oSequencer = new DataAuditSequencer($this->GivenParams(['mode' => 'upgrade']), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + + public function testIsDataAuditRequired_AuditTriggered() + { + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); + $oRunTimeEnvironment->expects($this->once())->method("GetFinalEnv")->willReturn("production"); + + $oSequencer = new DataAuditSequencer($this->GivenParams(['mode' => 'upgrade']), $oRunTimeEnvironment); + self::assertTrue($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } }