tests/functions/logging/providerV2.Tests.ps1
Describe "Logging System: Provider V2 Unit Test" { Describe "Logging Provider - Act 1: Post-Registration" { It "Should register without an error" { #region Register Logging Provider $paramRegisterPSFLoggingProvider = @{ Name = 'Demo' ConfigurationRoot = 'Demo.Provider' InstanceProperties = 'StartCounter', 'Increment', 'MaxCounter' BeginEvent = { Write-PSFMessage "Starting Provider Instance: $($Instance.Name) of Provider $($Instance.Provider)" -Target $Instance.Name } StartEvent = { $script:counter = Get-ConfigValue -Name StartCounter $script:increment = Get-ConfigValue -Name Increment $script:maxCounter = Get-ConfigValue -Name MaxCounter Write-Hello -Name "Jack" Write-PSFMessage "Starting Counter at $script:counter" -Target $Instance.Name } MessageEvent = { param ( $Message ) if (($script:counter + $script:increment) -le $script:maxCounter) { $script:counter = $script:counter + $script:increment } } EndEvent = { Write-PSFMessage "Current Counter is at $script:counter" -Target $Instance.Name } FinalEvent = { Write-PSFMessage "Stopping to count" -Target $Instance.Name } FunctionDefinitions = { function Write-Hello { [CmdletBinding()] param ( $Name ) Write-PSFMessage "Hello $Name" -Target $Instance.Name } } } { Register-PSFLoggingProvider @paramRegisterPSFLoggingProvider } | Should -Not -Throw # Wait until the next logging cycle has definitely passed Start-Sleep -Seconds 10 #endregion Register Logging Provider } It "Should exist" { Get-PSFLoggingProvider -Name Demo | Should -BeNullOrEmpty -Not } It "Should create a default instance that is disabled" { $provider = Get-PSFLoggingProvider -Name Demo $provider.Instances.Count | Should -Be 1 $provider.Instances.Keys | Should -Contain 'Default' $provider.Instances.Default.Enabled | Should -BeFalse } } Describe "Logging Provider - Act 2: Post-Activation" { BeforeAll { Set-PSFLoggingProvider -Name Demo -InstanceName MyInstance -StartCounter 0 -Increment 2 -MaxCounter 50 -Enabled $true # Wait until the next logging cycle has definitely passed Start-Sleep -Seconds 8 } It "Should have created the MyInstance instance" { $provider = Get-PSFLoggingProvider -Name Demo $provider.Instances.Count | Should -Be 2 $provider.Instances.Keys | Should -Contain 'MyInstance' $provider.Instances.MyInstance.Enabled | Should -BeTrue } It "Should have written messages without error" { Get-PSFMessage | Where-Object FunctionName -eq 'Write-Hello' | Should -BeNullOrEmpty -Not Get-PSFMessage | Where-Object Message -eq 'Current Counter is at 6' | Should -BeNullOrEmpty -Not Get-PSFMessage | Where-Object Message -eq 'Starting Provider Instance: MyInstance of Provider Demo' | Should -BeNullOrEmpty -Not $provider = Get-PSFLoggingProvider -Name Demo $provider.Instances.MyInstance.Errors.Count | Should -Be 0 } AfterAll { Set-PSFLoggingProvider -Name Demo -InstanceName MyInstance -Enabled $false $null = [PSFramework.Logging.ProviderHost]::Providers.TryRemove("Demo", [ref]$null) } } } |