. $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" } } }