91 lines
3.1 KiB
PowerShell
91 lines
3.1 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 = ""
|
|||
|
|
|||
|
#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
|