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

63 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-CurrentInstanceRegion" {
Context "When Not Running in AWS" {
Mock -ModuleName $moduleForMock Test-IsAws { return $false }
Mock -ModuleName $moduleForMock Write-Warning {}
Mock -ModuleName $moduleForMock Get-InstanceMetadata {}
Get-CurrentInstanceRegion -WarningAction SilentlyContinue
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 -Times 0 -Exactly -Scope Context
}
}
Context "When Running in AWS" {
Mock -ModuleName $moduleForMock Test-IsAws { return $true }
Mock -ModuleName $moduleForMock Write-Warning {}
Mock -ModuleName $moduleForMock Get-InstanceMetadata {
return (New-Object PSObject -Property @{
"privateIp" = "10.16.72.103";
"devpayProductCodes" = $null;
"marketplaceProductCodes" = $null;
"version" = "2017-09-30";
"instanceId" = "i-0ecc6833047799e3b";
"billingProducts" = "bp-6ba54002";
"instanceType" = "m5.2xlarge";
"kernelId" = $null;
"ramdiskId" = $null;
"availabilityZone" = "us-fake-1a";
"accountId" = "790953160341";
"architecture" = "x86_64";
"imageId" = "ami-7b454e04";
"pendingTime" = "2018-10-03T20:19:27Z";
"region" = "us-fake-1";
} | ConvertTo-JSON)
}
It "Returns the Instance Region" {
$testResult = Get-CurrentInstanceRegion
Assert-MockCalled -ModuleName $moduleForMock Get-InstanceMetadata -Times 1 -Exactly -Scope It
$testResult | Should -Be "us-fake-1"
}
}
}