89 lines
3.6 KiB
PowerShell
89 lines
3.6 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 = ""
|
||
|
$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
|
||
|
}
|
||
|
}
|
||
|
}
|