113 lines
5.1 KiB
PowerShell
113 lines
5.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 = ""
|
|||
|
|
|||
|
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"
|
|||
|
}
|
|||
|
}
|
|||
|
}
|