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

103 lines
4.3 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-EnvironmentData" {
$fakeDotNetConfigPath = Join-Path -Path $TestDrive -ChildPath "machine.config"
# Return each of the settings based on parameter filters
Mock -CommandName Write-Host -ModuleName $moduleForMock -MockWith {}
Mock -CommandName Write-Warning -ModuleName $moduleForMock -MockWith {}
Mock -CommandName Get-UncPath -ModuleName $moduleForMock -MockWith { return $fakeDotNetConfigPath }
Mock -CommandName Read-XmlFile -ModuleName $moduleForMock -MockWith {}
Mock -CommandName Invoke-Parallel -ModuleName $moduleForMock -MockWith {}
Context "When Successfully Getting EnvironmentData from AppSettings" {
$packageData = @{}
$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
# these tests were essentially "does Get-EnvironmentThing work?"
# there's no business logic to them
# It "It Gets EnvironmentName" {
# $data = Get-EnvironmentData $packageData
# $data.EnvironmentName | Should -Match "UnitTest.Env"
# }
# It "It Gets EnvironmentType" {
# $data = Get-EnvironmentData $packageData
# $data.EnvironmentType | Should -Match "UnitTest.Type"
# }
# It "It Gets EnvironmentNameSafeDesignation" {
# $data = Get-EnvironmentData $packageData
# $data.EnvironmentNameSafeDesignation | Should -Match "UTT"
# }
# It "It Gets EnvironmentHosting" {
# $data = Get-EnvironmentData $packageData
# $data.EnvironmentHosting | Should -Match "local"
# }
}
Context "When Getting Data from Tags" {
$packageData = @{}
$packageData.AppServers = @("APP123TEST.fh.local")
$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
Mock Get-InstanceTags -MockWith { # return tags
$tag1 = @{
PSComputerName = "Test.Machine"
Key = "alk:env"
Value = "dev"
}
$tag2 = @{
PSComputerName = "Test.Machine"
Key = "alk:designation"
Value = "FAKEVALUE"
}
return @($tag1, $tag2)
}
Mock -CommandName Get-DesignationTagNameByEnvironment -ModuleName $moduleForMock -MockWith {
return "designation"
}
# How was this mocked? It's a degree of separation away. It shouldnot have been being used.∫
# Mock Get-AppSetting -MockWith {return "UnitTest.Env"} -ParameterFilter {$Key -eq "Environment.Name"}
# Mock Get-AppSetting -MockWith {return "UnitTest.Type"} -ParameterFilter {$Key -eq "Environment.Type"}
# Mock Get-AppSetting -MockWith {return "local"} -ParameterFilter {$Key -eq "Environment.Hosting"}
# No available value locally
Mock -CommandName Get-AppSetting -ModuleName $moduleForMock -MockWith { return $null } -ParameterFilter { $Key -eq "Environment.NameSafeDesignation" }
Mock -CommandName Write-Error -ModuleName $moduleForMock -MockWith {}
It "It Gets EnvironmentNameSafeDesignation" {
$data = Get-EnvironmentData $packageData
$data.EnvironmentNameSafeDesignation | Should -Match "FAKEVALUE"
}
}
}