ps/Modules/Alkami.DevOps.Common/Public/Get-Environment.tests.ps1

113 lines
5.1 KiB
PowerShell
Raw 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 = ""
Describe "Get-Environment" {
Context "Happy Path" {
It "Returns the Expected Environment Based on AWS Tags" {
Mock -CommandName Get-CurrentInstanceTags -ModuleName $moduleForMock -MockWith { return $Global:MockedEnvironmentValue; }
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $true }
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentDev
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentDev
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentQa
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentQa
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentSandbox
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentSandbox
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentStaging
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentStaging
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentProd
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentProd
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentDR
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentDR
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentLTM
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentLTM
$Global:MockedEnvironmentValue = $Global:AlkamiTagValueEnvironmentLoadtest
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentLoadtest
}
It "Returns the Expected Environment Based on Machine Config Environment.Type Setting" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $false }
Mock -CommandName Get-AppSetting -ModuleName $moduleForMock -MockWith { return $Global:MockAppSettingValue; }
$Global:MockAppSettingValue = "Development"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentDev
$Global:MockAppSettingValue = "TeamQA"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentQa
$Global:MockAppSettingValue = "QA"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentQa
$Global:MockAppSettingValue = "Staging"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentStaging
$Global:MockAppSettingValue = "Production"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentProd
}
It "Returns the Expected Environment Based on (Shudder) Naming Convention" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $false }
Mock -CommandName Get-AppSetting -ModuleName $moduleForMock -MockWith { return $null; }
$env:ComputerName = "ALK-PLA1-QA999999999999"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentQa
$env:ComputerName = "ALK-WIDGETSZ-WEB1"
Get-Environment | Should -Be $Global:AlkamiTagValueEnvironmentDev
}
}
Context "Errors and Unknowns" {
It "Returns Unknown if the AWS Tag Value is Unexpected" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $true }
Mock -CommandName Get-CurrentInstanceTags -ModuleName $moduleForMock -MockWith { return $Global:MockedEnvironmentValue; }
$Global:MockedEnvironmentValue = "You fool! You thought you could defeat me? With my power levels at OVER 50000?"
Get-Environment | Should -Be "Unknown"
}
It "Returns Unknown if All Efforts At Finding a Value to Key Off of Fail" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $false }
Mock -CommandName Get-AppSetting -ModuleName $moduleForMock -MockWith { return $null; }
$env:COMPUTERNAME = "WEB1234567"
Get-Environment | Should -Be "Unknown"
}
It "Returns Unknown if The $Global:AlkamiTagKeyEnvironment Tag Doesn't Exist" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $true }
Mock -CommandName Get-CurrentInstanceTags -ModuleName $moduleForMock -MockWith { return $null; }
Get-Environment | Should -Be "Unknown"
}
It "Returns Unknown if The $Global:AlkamiTagKeyEnvironment Tag Is Empty" {
Mock -CommandName Test-IsAws -ModuleName $moduleForMock -MockWith { return $true }
Mock -CommandName Get-CurrentInstanceTags -ModuleName $moduleForMock -MockWith { return ""; }
Get-Environment | Should -Be "Unknown"
}
}
}