ps/Modules/Alkami.PowerShell.Services/Public/Set-ChocolateyPackageNewRelicState.Tests.ps1

91 lines
3.1 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
. $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 = ""
#region Set-ChocolateyPackageNewRelicState
Describe "Set-ChocolateyPackageNewRelicState" {
$global:nrXmlTrue = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="NewRelic.AgentEnabled" value="true" />
</appSettings>
</configuration>
'@
$global:nrXmlFalse = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="NewRelic.AgentEnabled" value="false" />
</appSettings>
</configuration>
'@
$global:nrXmlMissing = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="NotNewRelic" value="cornflower blue" />
</appSettings>
</configuration>
'@
$global:nrXmlNoAppSettings = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
'@
# Mock the pieces that make sure that the app.config is a real file.
Mock -ModuleName $moduleForMock Get-ChildItem { return "totally real file path.jpg" }
Mock -ModuleName $moduleForMock Test-Path { return $true }
Mock -ModuleName $moduleForMock Save-XMLFile { }
Mock -ModuleName $moduleForMock Get-UncPath { }
Mock -ModuleName $moduleForMock Set-DotNetCoreProfiling { }
Context "Sets NewRelic.AgentEnabled" {
# Mock Read-XmlFile for the Test
Mock -ModuleName $moduleForMock Read-XmlFile { return [xml]($nrXmlTrue.Clone()) }
Mock -ModuleName $moduleForMock Test-Path { return $true }
Mock -ModuleName $moduleForMock Set-AppSetting { }
It "Sets value to false" {
Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $false
Assert-MockCalled -ModuleName $moduleForMock Set-AppSetting -Times 1 -Exactly -Scope It -ParameterFilter {
$Key -eq "NewRelic.AgentEnabled" -and $Value -eq "false"
}
}
It "Sets value to true" {
Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $true
Assert-MockCalled -ModuleName $moduleForMock Set-AppSetting -Times 1 -Exactly -Scope It -ParameterFilter {
$Key -eq "NewRelic.AgentEnabled" -and $Value -eq "true"
}
}
}
Context "Package Path Doesn't Exist" {
# Mock Test-Path, which is only used to determine if the microservice path exists.
Mock -ModuleName $moduleForMock Test-Path { return $false }
Mock -ModuleName $moduleForMock Write-Warning { }
It "Warns if App.Config Path Doesn't Exist" {
Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $false
Assert-MockCalled -ModuleName $moduleForMock Write-Warning -Times 1 -Exactly -Scope It -ParameterFilter {
$message -like "*Could not locate app.config path*"
}
}
}
}
#endregion Set-ChocolateyPackageNewRelicState