223 lines
12 KiB
PowerShell
223 lines
12 KiB
PowerShell
|
. $PSScriptRoot\..\..\Load-PesterModules.ps1
|
||
|
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||
|
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.'
|
||
|
$functionPath = Join-Path -Path $here -ChildPath $sut
|
||
|
Write-Host "Overriding SUT: $functionPath"
|
||
|
Import-Module $functionPath -Force
|
||
|
$moduleForMock = ""
|
||
|
|
||
|
Describe "Move-LogsAndDeleteDotNetTemps" {
|
||
|
|
||
|
# CODEPATH: ALWAYS
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_Default]"}
|
||
|
|
||
|
# CODEPATH: No LogDirectory param
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-OrbLogsPath -MockWith {return "C:\temp\OrbLogs"}
|
||
|
|
||
|
# CODEPATH: FAB
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
|
||
|
# CODEPATH: Not FAB AND (No running Alkami workers OR forceRecycle)
|
||
|
# CONDITION: Backwards logic. $true means there are NOT any alkami worker processes running
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $true}
|
||
|
|
||
|
# ACTION: Remove dotnet temps
|
||
|
Mock -ModuleName $moduleForMock -CommandName Remove-DotNetTemporaryFiles -MockWith {}
|
||
|
|
||
|
# ACTION: Either backup logs or remove logs
|
||
|
# Backup
|
||
|
Mock -ModuleName $moduleForMock -CommandName Backup-AlkamiLogs -MockWith {}
|
||
|
# Remove
|
||
|
Mock -ModuleName $moduleForMock -CommandName Remove-ORBLogFiles -MockWith {}
|
||
|
|
||
|
# ACTION: Choco cleanup
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyInstallPath -MockWith {return "C:\temp\choco"}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Backup-LogFiles -MockWith {}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Remove-OldArchivedLogFiles -MockWith {}
|
||
|
|
||
|
|
||
|
# CODEPATH: Not FAB AND (EITHER running Alkami workers OR forceRecycle)
|
||
|
# ACTION: Just warn
|
||
|
Mock -ModuleName $moduleForMock -CommandName Write-Warning -MockWith {}
|
||
|
# NOTE: Mocks for Get-LogLeadName are left in below to enable easy test debugging in the future.
|
||
|
# You can just comment out this Mock for Write-Warning and start getting (some) warnings
|
||
|
# with test-specific $logLeads allowing you to see which codepath you are (supposed to be) on.
|
||
|
|
||
|
Context "Parameters_And_Codepaths" {
|
||
|
It "Get_LogLead" {
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps
|
||
|
|
||
|
Assert-MockCalled -CommandName Get-LogLeadName -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
}
|
||
|
It "Get_GetOrbLogsPath_If_LogDirectory_Omitted" {
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps
|
||
|
|
||
|
Assert-MockCalled -CommandName Get-OrbLogsPath -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
}
|
||
|
It "Skip_GetOrbLogsPath_If_LogDirectory_Passed" {
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -LogDirectory "C:\Temp\NotOrbLogs"
|
||
|
|
||
|
Assert-MockCalled -CommandName Get-OrbLogsPath -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
}
|
||
|
It "FabHost_Defaults_DeleteLogsSkipActive" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_Fab_Default]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_Fab_Default]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$SkipActiveLogs -eq $true}
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
}
|
||
|
It "FabHost_ArchiveLogFilesFlag_ArchiveLogsSkipActive" {
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_Fab_ArchiveLogFiles]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_Fab_ArchiveLogFiles]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -ArchiveLogFiles
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$SkipActiveLogs -eq $true}
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
}
|
||
|
It "NonFabHost_NoAlkamiServicesRunning_NoForceRecycle_Defaults_DeleteLogs_DeleteDotNetTemps_ArchiveAndCleanChocoLogs" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_Default]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_Default]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -ForceRecycle:$false
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-DotNetTemporaryFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$SkipActiveLogs -eq $false}
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-LogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$logDirectory -eq "c:\temp\choco\logs"}
|
||
|
Assert-MockCalled -CommandName Remove-OldArchivedLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$archiveDirectory -eq "c:\temp\choco\logs\Archive"}
|
||
|
|
||
|
}
|
||
|
It "NonFabHost_ArchiveLogFilesFlag_NoAlkamiServicesRunning_NoForceRecycle_ArchiveLogs_DeleteDotNetTemps_ArchiveAndCleanChocoLogs" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_Default]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_Default]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -ForceRecycle:$false -ArchiveLogFiles
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-DotNetTemporaryFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$SkipActiveLogs -eq $false}
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-LogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$logDirectory -eq "c:\temp\choco\logs"}
|
||
|
Assert-MockCalled -CommandName Remove-OldArchivedLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$archiveDirectory -eq "c:\temp\choco\logs\Archive"}
|
||
|
|
||
|
}
|
||
|
It "NonFabHost_AlkamiServicesRunning_NoForceRecycle_WarnOnly" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Write-Warning -MockWith {} `
|
||
|
-ParameterFilter {$Message -match "Cannot continue"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_ServicesRunning]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_ServicesRunning]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $false}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-DotNetTemporaryFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly -ParameterFilter {$SkipActiveLogs -eq $false}
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-LogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly -ParameterFilter {$logDirectory -eq "c:\temp\choco\logs"}
|
||
|
Assert-MockCalled -CommandName Remove-OldArchivedLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly -ParameterFilter {$archiveDirectory -eq "c:\temp\choco\logs\Archive"}
|
||
|
|
||
|
Assert-MockCalled -CommandName Write-Warning -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$Message -match "Alkami worker processes are still running"}
|
||
|
|
||
|
}
|
||
|
It "NonFabHost_NoAlkamiServicesRunning_ForceRecycle_Defaults_DeleteLogs_DeleteDotNetTemps_ArchiveAndCleanChocoLogs" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_NoServicesRunning]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_NoServicesRunning]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -forceRecycle
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-DotNetTemporaryFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$SkipActiveLogs -eq $false}
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-LogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$logDirectory -eq "c:\temp\choco\logs"}
|
||
|
Assert-MockCalled -CommandName Remove-OldArchivedLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$archiveDirectory -eq "c:\temp\choco\logs\Archive"}
|
||
|
|
||
|
}
|
||
|
It "NonFabHost_ArchiveLogFilesFlag_NoAlkamiServicesRunning_ForceRecycle_ArchiveLogs_DeleteDotNetTemps_ArchiveAndCleanChocoLogs" {
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_NoServicesRunning]"}
|
||
|
Mock -ModuleName Alkami.DevOps.Operations -CommandName Get-LogLeadName -MockWith {return "[UnitTest_NonFab_NoServicesRunning]"}
|
||
|
|
||
|
Mock -ModuleName $moduleForMock -CommandName Test-IsServiceFabricServer -MockWith {return $false}
|
||
|
Mock -ModuleName $moduleForMock -CommandName Search-ForRunningWorkerProcesses -MockWith {return $true}
|
||
|
|
||
|
Move-LogsAndDeleteDotNetTemps -forceRecycle -ArchiveLogFiles
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-DotNetTemporaryFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Remove-ORBLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 0 -Exactly -ParameterFilter {$SkipActiveLogs -eq $false}
|
||
|
Assert-MockCalled -CommandName Backup-AlkamiLogs -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly
|
||
|
|
||
|
Assert-MockCalled -CommandName Backup-LogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$logDirectory -eq "c:\temp\choco\logs"}
|
||
|
Assert-MockCalled -CommandName Remove-OldArchivedLogFiles -ModuleName $moduleForMock -Scope It `
|
||
|
-Times 1 -Exactly -ParameterFilter {$archiveDirectory -eq "c:\temp\choco\logs\Archive"}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|