63 lines
2.3 KiB
PowerShell
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"
|
||
|
}
|
||
|
}
|
||
|
}
|