ps/Modules/Alkami.PowerShell.Common/Public/Get-CurrentInstanceAvailabilityZone.tests.ps1
2023-05-30 22:51:22 -07:00

67 lines
2.3 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-CurrentInstanceAvailabilityZone" {
Context "When Not Running in AWS" {
Mock -ModuleName $moduleForMock Test-IsAws { return $false }
Mock -ModuleName $moduleForMock Write-Warning {}
Mock -ModuleName $moduleForMock Get-InstanceMetadata {}
Get-CurrentInstanceAvailabilityZone -WarningAction SilentlyContinue
It "Calls Test-IsAws" {
Assert-MockCalled -ModuleName $moduleForMock Test-IsAws -Times 1 -Exactly -Scope Context
}
It "Writes a Warning" {
Assert-MockCalled -ModuleName $moduleForMock Write-Warning -Times 1 -Exactly -Scope Context
}
It "Returns Without Calling AWS APIs" {
Assert-MockCalled -ModuleName $moduleForMock Get-InstanceMetadata -ParameterFilter {$Endpoint -Match $azEndpointPath } -Times 0 -Exactly -Scope Context
}
}
Context "When Running in AWS" {
$azEndpointPath = "meta-data/placement/availability-zone"
Mock -ModuleName $moduleForMock Test-IsAws { return $true }
Mock -ModuleName $moduleForMock Write-Warning {}
Mock -ModuleName $moduleForMock Get-InstanceMetadata {
return (New-Object PSObject -Property @{
"StatusCode" = "200";
"Content" = "us-fake-1a";
} )
}
It "Returns the Instance AvailabilityZone" {
$testResult = Get-CurrentInstanceAvailabilityZone
Assert-MockCalled -ModuleName $moduleForMock Get-InstanceMetadata -ParameterFilter {$Endpoint -Match $azEndpointPath } -Times 1 -Exactly -Scope It
$testResult | Should -Be "us-fake-1a"
}
It "Throws if not success" {
Mock -ModuleName $moduleForMock Get-InstanceMetadata {
return (New-Object PSObject -Property @{
"StatusCode" = "404";
"Content" = "Not found";
} )
}
{Get-CurrentInstanceAvailabilityZone} | Should -Throw
}
}
}