tests/Unit/Public/Invoke-sqmMonitoringKey.Tests.ps1
|
#Requires -Modules Pester <# .SYNOPSIS Unit Tests fuer den Registry-Pfad von Invoke-sqmMonitoringKey. .DESCRIPTION Hintergrund: die Quelldatei ist zwischenzeitlich auf den Pfad "HKLM:\<RegistryBase>\dtcSoftware\sqmSQLTool" zurueckgefallen, obwohl die reale System-Center-Konvention beim Kunden "HKLM:\SYSTEM\FITS\Systemcenter" ist, mit den Werten SQL (0/1/2, kundenabhaengig, manuell) und SQLFreeSpaceVersion (Standard/Cluster, per -AutoDetectSQLFreeSpaceVersion erkennbar) direkt unter diesem Schluessel. Die gebaute/verteilte Kopie in bin/Public hatte weiterhin den richtigen Pfad - dieser Test haelt den korrekten Pfad in der Quelle fest, damit das nicht nochmal auseinanderlaeuft. Alle Registry-Zugriffe sind gemockt - es wird nie in die echte HKLM geschrieben oder aus ihr gelesen, auch nicht auf einer Entwicklermaschine, auf der der Schluessel bereits real gepflegt wird. #> BeforeAll { . "$PSScriptRoot\..\..\..\tests\TestHelpers.ps1" Import-sqmTestModule } AfterAll { if (Get-Module sqmSQLTool) { Remove-Module sqmSQLTool -Force } $env:MSSQLTOOLS_SKIP_AUTO_UPDATE = $null } Describe 'Invoke-sqmMonitoringKey' { It 'schreibt unter HKLM:\RegistryBase\FITS\SystemCenter, nicht dem alten dtcSoftware-sqmSQLTool-Pfad' { InModuleScope sqmSQLTool { Mock Invoke-sqmLogging { } $usedPaths = [System.Collections.Generic.List[string]]::new() Mock Test-Path { $usedPaths.Add($Path); $false } -ParameterFilter { $Path -like 'HKLM:*' } Mock New-Item { [PSCustomObject]@{ } } -ParameterFilter { $Path -like 'HKLM:*' } Mock Set-ItemProperty { $usedPaths.Add($Path) } -ParameterFilter { $Path -like 'HKLM:*' } Mock Get-ItemProperty { [PSCustomObject]@{ SQL = 2; SQLFreeSpaceVersion = 'Standard'; TSM = $null } } -ParameterFilter { $Path -like 'HKLM:*' } Invoke-sqmMonitoringKey -Operation Set -SQL Full -Confirm:$false | Out-Null $usedPaths | Should -Not -BeNullOrEmpty foreach ($p in $usedPaths) { $p | Should -Be 'HKLM:\System\FITS\SystemCenter' } $usedPaths | Should -Not -Contain 'HKLM:\System\dtcSoftware\sqmSQLTool' } } It 'meldet den vollen Pfad HKLM:\System\FITS\SystemCenter im Ergebnisobjekt (Operation Get, Standard-RegistryBase)' { InModuleScope sqmSQLTool { Mock Invoke-sqmLogging { } Mock Test-Path { $false } -ParameterFilter { $Path -like 'HKLM:*' } $result = Invoke-sqmMonitoringKey -Operation Get $result.RegistryPath | Should -Be 'HKLM:\System\FITS\SystemCenter' } } } |