tests/Private/Start-AzureInstance.Tests.ps1
|
BeforeAll { Import-Module (Resolve-Path (Join-Path $PSScriptRoot '..\..\PSCumulus.psd1')).Path -Force } Describe 'Start-AzureInstance' { Context 'when Az.Compute is not installed' { It 'throws when Start-AzVM is unavailable' { InModuleScope PSCumulus { Mock Assert-CommandAvailable { throw [System.Management.Automation.CommandNotFoundException]::new( "Required command 'Start-AzVM' was not found." ) } { Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' } | Should -Throw } } } Context 'when the instance is started' { It 'returns a CloudRecord' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result | Should -Not -BeNullOrEmpty } } It 'sets Name correctly' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result.Name | Should -Be 'web-server-01' } } It 'sets Provider to Azure' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result.Provider | Should -Be 'Azure' } } It 'sets Status to Starting' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result.Status | Should -Be 'Starting' } } It 'includes ResourceGroup in Metadata' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result.Metadata.ResourceGroup | Should -Be 'prod-rg' } } It 'calls Start-AzVM with the correct parameters' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $null = Start-AzureInstance -Name 'my-vm' -ResourceGroup 'my-rg' Should -Invoke Start-AzVM -Times 1 -ParameterFilter { $Name -eq 'my-vm' -and $ResourceGroupName -eq 'my-rg' } } } It 'returns PSCumulus.CloudRecord type' { InModuleScope PSCumulus { Mock Assert-CommandAvailable {} Mock Start-AzVM { } $result = Start-AzureInstance -Name 'web-server-01' -ResourceGroup 'prod-rg' $result.PSObject.TypeNames | Should -Contain 'PSCumulus.CloudRecord' } } } } |