ps/Modules/Alkami.DevOps.Installation/Public/Get-MicroserviceNewRelicMapping.Tests.ps1

89 lines
3.6 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 = ""
$currentErrorActionPreference = $ErrorActionPreference
$ErrorActionPreference = "stop"
Describe 'Get-MicroserviceNewRelicMapping'{
# Silence messages. Comment these out if you're debugging tests.
Mock -CommandName Write-Host -MockWith {}
Mock -CommandName Write-Warning -MockWith {}
Mock -CommandName Write-Error -MockWith {}
Mock -CommandName Set-Content -MockWith {}
Mock -CommandName Add-Member -MockWith {}
Mock -CommandName Join-Path -MockWith {return "TestDrive:\$ChildPath"}
Mock -CommandName Test-Path -MockWith {return $true}
Mock -CommandName Get-Content -MockWith { return @"
app.package1
app.package2
"@
}
Context 'When Some New Relic Monitoring Should Be Disabled' {
$packageData = New-PackageMetadataObject
$packageData.DisableMicroserviceNewRelic = $true
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale
$packageArray = @($appPackage1, $appPackage2)
$packageData.AppPackagesToInstall = $packageArray
It "Sets NR On/Off Status" {
$packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData
$packages | Should -Not -BeNullOrEmpty
Assert-MockCalled -CommandName Add-Member -Scope Context -Times 1
}
}
Context 'When No New Relic Monitoring Should Be Disabled' {
$packageData = New-PackageMetadataObject
$packageData.DisableMicroserviceNewRelic = $false
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale
$packageArray = @($appPackage1, $appPackage2)
$packageData.AppPackagesToInstall = $packageArray
It "Does Not Modify New Relic Status On Any Packages"{
$packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData
$packages | Should -Not -BeNullOrEmpty
Assert-MockCalled -CommandName Add-Member -Scope Context -Times 0
}
}
Context 'When NewRelicMicroServices.txt is not found' {
# No New Relic file:
Mock -CommandName Test-Path -MockWith {return $false}
Mock -CommandName Write-Warning -MockWith {}
$packageData = New-PackageMetadataObject
$packageData.DisableMicroserviceNewRelic = $true
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale
$packageArray = @($appPackage1, $appPackage2)
$packageData.AppPackagesToInstall = $packageArray
It "Disables Everything"{
$packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData
foreach ($package in $packages) {
$package.EnableNewRelic | Should -BeNullOrEmpty
}
Assert-MockCalled -CommandName Write-Warning -Scope Context -Times 1
}
}
}