diff --git a/setup/sequencers/DataAuditSequencer.php b/setup/sequencers/DataAuditSequencer.php index 9abed8272..c79a865da 100644 --- a/setup/sequencers/DataAuditSequencer.php +++ b/setup/sequencers/DataAuditSequencer.php @@ -118,7 +118,11 @@ class DataAuditSequencer extends StepSequencer } $sFinalEnvDir = APPROOT.'env-'.$this->oRunTimeEnvironment->GetFinalEnv(); - return is_dir($sFinalEnvDir); + if (! is_dir($sFinalEnvDir)) { + return false; + } + + return count(glob($sFinalEnvDir."/**")) > 0; } public function GetStepNames(): array 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 e50c3126a..311533bfc 100644 --- a/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php +++ b/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php @@ -376,6 +376,48 @@ class DataAuditSequencerTest extends ItopTestCase self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); } + public function testIsDataAuditRequired_NoAuditWhenEnvProductionEmpty() + { + $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"); + + $sFolder = APPROOT.'env-production-gabuzomeu'; + if (! is_dir($sFolder)) { + mkdir($sFolder); + $this->aFileToClean [] = $sFolder; + } + + $aAdditionalParams = [ + 'mode' => 'upgrade', + 'optional_steps' => ['setup-audit' => true ], + ]; + $oSequencer = new DataAuditSequencer($this->GivenParams($aAdditionalParams), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + + public function testIsDataAuditRequired_NoAuditWhenEnvProductionFolderIsEmpty() + { + $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"); + + $sFolder = APPROOT.'env-production-gabuzomeu'; + if (! is_dir($sFolder)) { + mkdir($sFolder); + $this->aFileToClean [] = $sFolder; + } + + $aAdditionalParams = [ + 'mode' => 'upgrade', + 'optional_steps' => ['setup-audit' => true ], + ]; + $oSequencer = new DataAuditSequencer($this->GivenParams($aAdditionalParams), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + public function testIsDataAuditRequired_NoAuditTriggeredBecauseDisabled() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class);