diff --git a/src/Compute/Compute.Test/LiveTests/TestLiveScenarios.ps1 b/src/Compute/Compute.Test/LiveTests/TestLiveScenarios.ps1 index d0b356cdeb36..b4c4ffbc3a95 100644 --- a/src/Compute/Compute.Test/LiveTests/TestLiveScenarios.ps1 +++ b/src/Compute/Compute.Test/LiveTests/TestLiveScenarios.ps1 @@ -111,3 +111,64 @@ Invoke-LiveTestScenario -Name "Remove a managed disk" -Description "Test removin $actual = Get-AzDisk -ResourceGroupName $rgName -DiskName $diskName -ErrorAction SilentlyContinue Assert-Null $actual } + +Invoke-LiveTestScenario -Name "Create a ssh key" -Description "Test creating a ssh key" -ScenarioScript ` +{ + param ($rg) + + $rgName = $rg.ResourceGroupName + $keyName = New-LiveTestResourceName + + New-AzSshKey -ResourceGroupName $rgName -Name $keyName + + $actual = Get-AzSshKey -ResourceGroupName $rgName -Name $keyName + Assert-NotNull $actual + Assert-AreEqual $keyName $actual.Name +} + +Invoke-LiveTestScenario -Name "Update a ssh key" -Description "Test updating an existing ssh key" -ScenarioScript ` +{ + param ($rg) + + $rgName = $rg.ResourceGroupName + $key1Name = New-LiveTestResourceName + $key2Name = New-LiveTestResourceName + + $key1 = New-AzSshKey -ResourceGroupName $rgName -Name $key1Name + $publicKey1 = $key1.publicKey + + $key2 = New-AzSshKey -ResourceGroupname $rgName -Name $key2Name + $publicKey2 = $key2.publicKey + + Get-AzSshKey -ResourceGroupName $rgName -Name $key1Name | Update-AzSshKey -PublicKey $publicKey2 + Update-AzSshKey -ResourceId $key2.Id -PublicKey $publicKey1 + + $actual1 = Get-AzSshKey -ResourceGroupname $rgName -Name $key1Name + Assert-NotNull $actual1 + Assert-AreEqual $key1Name $actual1.Name + Assert-AreEqual $publicKey2 $actual1.publicKey + + $actual2 = Get-AzSshKey -ResourceGroupname $rgName -Name $key2Name + Assert-NotNull $actual2 + Assert-AreEqual $key2Name $actual2.Name + Assert-AreEqual $publicKey1 $actual2.publicKey +} + +Invoke-LiveTestScenario -Name "Delete a ssh key" -Description "Test deleting a ssh key" -ScenarioScript ` +{ + param ($rg) + + $rgName = $rg.ResourceGroupName + $key1Name = New-LiveTestResourceName + $key2Name = New-LiveTestResourceName + + New-AzSshKey -ResourceGroupName $rgName -Name $key1Name + Remove-AzSshKey -ResourceGroupName $rgName -name $key1Name + $actual = Get-AzSshKey -ResourceGroupName $rgName -Name $key1Name + Assert-Null $actual + + $key2 = New-AzSshKey -ResourceGroupName $rgName -Name $key2Name + Remove-AzSshKey -ResourceId $key2.Id + $actual = Get-AzSshKey -ResourceGroupName $rgName -Name $key2Name + Assert-Null $actual +} diff --git a/tools/TestFx/Live/LiveTestUtility.psm1 b/tools/TestFx/Live/LiveTestUtility.psm1 index 7033db422e6b..3d9600ec568e 100644 --- a/tools/TestFx/Live/LiveTestUtility.psm1 +++ b/tools/TestFx/Live/LiveTestUtility.psm1 @@ -215,7 +215,7 @@ function Invoke-LiveTestCommand { } function Invoke-LiveTestScenario { - [CmdletBinding()] + [CmdletBinding(DefaultParameterSetName = "HasDefaultResourceGroup")] [OutputType([bool])] param ( [Parameter(Mandatory, Position = 0)] @@ -226,10 +226,13 @@ function Invoke-LiveTestScenario { [ValidateNotNullOrEmpty()] [string] $Description, - [Parameter()] + [Parameter(ParameterSetName = "HasDefaulResourceGroup")] [ValidateNotNullOrEmpty()] [string] $ResourceGroupLocation, + [Parameter(ParameterSetName = "HasNoDefaultResourceGroup")] + [switch] $NoResourceGroup, + [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [scriptblock] $ScenarioScript @@ -256,32 +259,34 @@ function Invoke-LiveTestScenario { Errors = "" } - $snrResourceGroupName = New-LiveTestResourceGroupName - $snrResourceGroupLocation = "westus" - if ($PSBoundParameters.ContainsKey("ResourceGroupLocation")) { - $snrResourceGroupLocation = $ResourceGroupLocation - } + if (!$NoResourceGroup.IsPresent) { + $snrResourceGroupName = New-LiveTestResourceGroupName + $snrResourceGroupLocation = "westus" + if ($PSBoundParameters.ContainsKey("ResourceGroupLocation")) { + $snrResourceGroupLocation = $ResourceGroupLocation + } - Write-Host "##[section]Start to create a resource group." -ForegroundColor Green - Write-Host "##[section]Resource group name: $snrResourceGroupName" -ForegroundColor Green - Write-Host "##[section]Resource group location: $snrResourceGroupLocation" -ForegroundColor Green + Write-Host "##[section]Start to create a resource group." -ForegroundColor Green + Write-Host "##[section]Resource group name: $snrResourceGroupName" -ForegroundColor Green + Write-Host "##[section]Resource group location: $snrResourceGroupLocation" -ForegroundColor Green - $snrResourceGroup = New-LiveTestResourceGroup -Name $snrResourceGroupName -Location $snrResourceGroupLocation + $snrResourceGroup = New-LiveTestResourceGroup -Name $snrResourceGroupName -Location $snrResourceGroupLocation - Write-Host "##[section]Successfully created the resource group." -ForegroundColor Green + Write-Host "##[section]Successfully created the resource group." -ForegroundColor Green + } $snrRetryCount = 0 $snrRetryErrors = @() do { try { + $sPrefs = @([psvariable]::new("ErrorActionPreference", "Stop"), [psvariable]::new("ConfirmPreference", "None")) if ($snrRetryCount -eq $script:ScenarioMaxRetryCount) { - $ScenarioScript.InvokeWithContext($null, @([psvariable]::new("ErrorActionPreference", "Stop"), [psvariable]::new("ConfirmPreference", "None"), [psvariable]::new("DebugPreference", "Continue")), $snrResourceGroup) - } - else { - $ScenarioScript.InvokeWithContext($null, @([psvariable]::new("ErrorActionPreference", "Stop"), [psvariable]::new("ConfirmPreference", "None")), $snrResourceGroup) + $prefs += [psvariable]::new("DebugPreference", "Continue") } + $ScenarioScript.InvokeWithContext($null, $prefs, $snrResourceGroup) + Write-Host "##[section]Successfully executed the live scenario `"$Name`"." -ForegroundColor Green break } @@ -346,7 +351,10 @@ function Invoke-LiveTestScenario { $snrCsvData.Errors = ConvertToLiveTestJsonErrors -Errors $snrErrorMessage } finally { - if ($null -ne $snrResourceGroup) { + $snrCsvData.EndDateTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss") + $snrCsvData | Export-Csv -LiteralPath $script:LiveTestRawCsvFile -Encoding utf8 -NoTypeInformation -Append + + if (!$NoResourceGroup.IsPresent -and $null -ne $snrResourceGroup) { try { Write-Host "##[section]Start to clean up the resource group `"$snrResourceGroupName`"." -ForegroundColor Green Clear-LiveTestResources -Name $snrResourceGroupName @@ -355,8 +363,6 @@ function Invoke-LiveTestScenario { # Ignore exception for clean up } } - $snrCsvData.EndDateTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss") - $snrCsvData | Export-Csv -LiteralPath $script:LiveTestRawCsvFile -Encoding utf8 -NoTypeInformation -Append Write-Host "##[endgroup]" }