tests/Public/Get-CloudContext.Tests.ps1
|
BeforeAll { Import-Module (Resolve-Path (Join-Path $PSScriptRoot '..\..\PSCumulus.psd1')).Path -Force } Describe 'Get-CloudContext' { Context 'when no providers are connected' { It 'returns nothing' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = $null $script:PSCumulusContext.Providers.Azure = $null $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = $null $result = Get-CloudContext $result | Should -BeNullOrEmpty } } } Context 'when one provider is connected' { It 'returns one context entry' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'GCP' $script:PSCumulusContext.Providers.Azure = $null $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = @{ Account = 'adil@example.com' Scope = 'my-project' Region = $null ConnectedAt = (Get-Date) } $result = @(Get-CloudContext) $result.Count | Should -Be 1 $result[0].Provider | Should -Be 'GCP' } } It 'marks the connected provider as IsActive' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'GCP' $script:PSCumulusContext.Providers.Azure = $null $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = @{ Account = 'adil@example.com'; Scope = 'my-project'; Region = $null; ConnectedAt = (Get-Date) } $result = Get-CloudContext $result.IsActive | Should -Be $true } } It 'returns a PSCumulus.CloudContext object' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'Azure' $script:PSCumulusContext.Providers.Azure = @{ Account = 'adil@contoso.com'; Scope = 'my-sub'; Region = $null; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = $null $result = Get-CloudContext $result.PSObject.TypeNames | Should -Contain 'PSCumulus.CloudContext' } } It 'exposes Account and Scope from the stored context' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'Azure' $script:PSCumulusContext.Providers.Azure = @{ Account = 'adil@contoso.com'; Scope = 'my-sub'; Region = $null; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = $null $result = Get-CloudContext $result.Account | Should -Be 'adil@contoso.com' $result.Scope | Should -Be 'my-sub' } } } Context 'when multiple providers are connected' { It 'returns an entry for each connected provider' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'AWS' $script:PSCumulusContext.Providers.Azure = @{ Account = 'adil@contoso.com'; Scope = 'my-sub'; Region = $null; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.AWS = @{ Account = 'default'; Scope = 'default'; Region = 'us-east-1'; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.GCP = $null $result = @(Get-CloudContext) $result.Count | Should -Be 2 } } It 'marks only the active provider as IsActive' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'AWS' $script:PSCumulusContext.Providers.Azure = @{ Account = 'adil@contoso.com'; Scope = 'my-sub'; Region = $null; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.AWS = @{ Account = 'default'; Scope = 'default'; Region = 'us-east-1'; ConnectedAt = (Get-Date) } $script:PSCumulusContext.Providers.GCP = $null $result = @(Get-CloudContext) $active = $result | Where-Object { $_.IsActive } @($active).Count | Should -Be 1 $active.Provider | Should -Be 'AWS' } } It 'omits providers that have not been connected' { InModuleScope PSCumulus { $script:PSCumulusContext.ActiveProvider = 'GCP' $script:PSCumulusContext.Providers.Azure = $null $script:PSCumulusContext.Providers.AWS = $null $script:PSCumulusContext.Providers.GCP = @{ Account = 'adil@gcp.com'; Scope = 'proj'; Region = $null; ConnectedAt = (Get-Date) } $result = @(Get-CloudContext) $result.Provider | Should -Not -Contain 'Azure' $result.Provider | Should -Not -Contain 'AWS' } } } } |