Skip to content

Commit 9c95b56

Browse files
authored
Refactor live test scenarios to use new password generation function (#26037)
1 parent ffc4c3a commit 9c95b56

File tree

3 files changed

+73
-35
lines changed

3 files changed

+73
-35
lines changed

src/Compute/LiveTests/Compute/TestLiveScenarios.ps1

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@ Invoke-LiveTestScenario -Name "Creates a virtual machine." -Description "Test cr
55
$rgName = $rg.ResourceGroupName
66
$name = New-LiveTestResourceName
77

8-
$VMLocalAdminUser = New-LiveTestResourceName;
9-
$VMLocalAdminSecurePassword = ConvertTo-SecureString "Aalexwdy5#" -AsPlainText -Force;
10-
$LocationName = "eastus";
11-
$domainNameLabel = New-LiveTestResourceName;
12-
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
13-
$text = New-LiveTestResourceName;
14-
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text);
15-
$userData = [Convert]::ToBase64String($bytes);
8+
$VMLocalAdminUser = New-LiveTestResourceName
9+
$VMLocalAdminSecurePassword = ConvertTo-SecureString (New-LiveTestPassword) -AsPlainText -Force
10+
$domainNameLabel = New-LiveTestResourceName
11+
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword)
12+
$text = New-LiveTestResourceName
13+
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text)
14+
$userData = [Convert]::ToBase64String($bytes)
1615

17-
$actual = New-AzVM -ResourceGroupName $rgName -Name $name -Credential $Credential -DomainNameLabel $domainNameLabel -UserData $userData;
16+
$actual = New-AzVM -ResourceGroupName $rgName -Name $name -Credential $Credential -DomainNameLabel $domainNameLabel -UserData $userData -OpenPorts @()
1817

1918
Assert-AreEqual $name $actual.Name
2019
# Assert-AreEqual "Succeeded" Label $actual.ProvisioningState
@@ -28,16 +27,15 @@ Invoke-LiveTestScenario -Name "Removes a virtual machine from Azure" -Descriptio
2827
$rgName = $rg.ResourceGroupName
2928
$name = New-LiveTestResourceName
3029

31-
$VMLocalAdminUser = New-LiveTestResourceName;
32-
$VMLocalAdminSecurePassword = ConvertTo-SecureString "Aalexwdy5#" -AsPlainText -Force;
33-
$LocationName = "eastus";
34-
$domainNameLabel = New-LiveTestResourceName;
35-
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
36-
$text = New-LiveTestResourceName;
37-
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text);
38-
$userData = [Convert]::ToBase64String($bytes);
30+
$VMLocalAdminUser = New-LiveTestResourceName
31+
$VMLocalAdminSecurePassword = ConvertTo-SecureString (New-LiveTestPassword) -AsPlainText -Force
32+
$domainNameLabel = New-LiveTestResourceName
33+
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword)
34+
$text = New-LiveTestResourceName
35+
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text)
36+
$userData = [Convert]::ToBase64String($bytes)
3937

40-
New-AzVM -ResourceGroupName $rgName -Name $name -Credential $Credential -DomainNameLabel $domainNameLabel -UserData $userData;
38+
New-AzVM -ResourceGroupName $rgName -Name $name -Credential $Credential -DomainNameLabel $domainNameLabel -UserData $userData -OpenPorts @()
4139
Remove-AzVM -ResourceGroupName $rgName -Name $name -Force
4240

4341
$removedVM = Get-AzVM -ResourceGroupName $rgName -Name $name -ErrorAction SilentlyContinue

tools/TestFx/Live/InvokeLiveTestScenarios.ps1

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ param (
1313
)
1414

1515
$srcDir = Join-Path -Path ${env:BUILD_SOURCESDIRECTORY} -ChildPath "src"
16-
$liveScenarios = Get-ChildItem -Path $srcDir -Directory -Exclude "Accounts" -ErrorAction SilentlyContinue | Get-ChildItem -Directory -Filter "LiveTests" -Recurse | Get-ChildItem -File -Filter "TestLiveScenarios.ps1" | Select-Object -ExpandProperty FullName
16+
$liveScenarios = Get-ChildItem -Path $srcDir -Directory -Exclude "Accounts" -ErrorAction SilentlyContinue | Get-ChildItem -Directory -Filter "LiveTests" -Recurse | Get-ChildItem -File -Filter "TestLiveScenarios.ps1" -Recurse | Select-Object -ExpandProperty FullName
1717

1818
$maxRunspaces = 9
1919
[void][int]::TryParse(${env:RSPTHROTTLE}, [ref]$maxRunspaces)
@@ -27,16 +27,17 @@ $liveJobs = $liveScenarios | ForEach-Object {
2727
$ps = [powershell]::Create()
2828
$ps.RunspacePool = $rsp
2929
[void]$ps.AddScript({
30-
param (
31-
[string] $Module,
32-
[string] $RunPlatform,
33-
[string] $LiveScenarioScript
34-
)
35-
36-
Import-Module "./tools/TestFx/Assert.ps1" -Force
37-
Import-Module "./tools/TestFx/Live/LiveTestUtility.psd1" -ArgumentList $Module, $RunPlatform, ${env:DATALOCATION} -Force
38-
. $LiveScenarioScript
39-
}).AddParameter("Module", $module).AddParameter("RunPlatform", $RunPlatform).AddParameter("LiveScenarioScript", $_)
30+
param (
31+
[string] $Module,
32+
[string] $RunPlatform,
33+
[string] $LiveScenarioScript
34+
)
35+
36+
Import-Module "./tools/TestFx/Assert.ps1" -Force
37+
Import-Module "./tools/TestFx/Live/LiveTestUtility.psd1" -ArgumentList $Module, $RunPlatform, ${env:DATALOCATION} -Force
38+
. $LiveScenarioScript
39+
}
40+
).AddParameter("Module", $module).AddParameter("RunPlatform", $RunPlatform).AddParameter("LiveScenarioScript", $_)
4041

4142
[PSCustomObject]@{
4243
Id = $ps.InstanceId
@@ -136,7 +137,7 @@ while ($queuedJobs.Count -gt 0) {
136137
}
137138

138139
$accountsDir = Join-Path -Path $srcDir -ChildPath "Accounts"
139-
$accountsLiveScenario = Get-ChildItem -Path $accountsDir -Directory -Filter "LiveTests" -Recurse -ErrorAction SilentlyContinue | Get-ChildItem -File -Filter "TestLiveScenarios.ps1" | Select-Object -ExpandProperty FullName
140+
$accountsLiveScenario = Get-ChildItem -Path $accountsDir -Directory -Filter "LiveTests" -Recurse -ErrorAction SilentlyContinue | Get-ChildItem -File -Filter "TestLiveScenarios.ps1" -Recurse | Select-Object -ExpandProperty FullName
140141
if ($null -ne $accountsLiveScenario) {
141142
Write-Output ""
142143
Write-Output "##[section]Live test run for module `"Accounts`"."
@@ -150,11 +151,12 @@ $liveJobs | ForEach-Object {
150151
if ($null -ne $_.Instance) {
151152
$_.Instance.Commands.Clear()
152153
[void]$_.Instance.AddScript({
153-
$cleanupJobs = Get-Job
154-
$cleanupJobs | Wait-Job | Out-Null
155-
$cleanupJobs | Select-Object Name, Command, State, PSBeginTime, PSEndTime, Output
156-
$cleanupJobs | Remove-Job
157-
})
154+
$cleanupJobs = Get-Job
155+
$cleanupJobs | Wait-Job | Out-Null
156+
$cleanupJobs | Select-Object Name, Command, State, PSBeginTime, PSEndTime, Output
157+
$cleanupJobs | Remove-Job
158+
}
159+
)
158160
$_.AsyncHandle = $_.Instance.BeginInvoke()
159161
}
160162
}

tools/TestFx/Live/LiveTestUtility.psm1

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,44 @@ function New-LiveTestStorageAccountName {
172172
$saFullName
173173
}
174174

175+
function New-LiveTestPassword {
176+
[CmdletBinding()]
177+
[OutputType([string])]
178+
param (
179+
[Parameter()]
180+
[ValidateRange(12, 123)]
181+
[int] $MaxLength = 16
182+
)
183+
184+
$lowercase = 'abcdefghijklmnopqrstuvwxyz'
185+
$uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
186+
$numbers = '0123456789'
187+
$special = '!@#$%^&*()-_=+[]{}|;:,.<>?'
188+
$allCharacters = $lowercase + $uppercase + $numbers + $special
189+
190+
# Ensure at least three of the required character types
191+
$password = @()
192+
$characterTypes = @($lowercase, $uppercase, $numbers, $special)
193+
$selectedTypes = Get-Random -InputObject $characterTypes -Count 3
194+
195+
foreach ($type in $selectedTypes) {
196+
$password += $type[(Get-Random -Minimum 0 -Maximum $type.Length)]
197+
}
198+
199+
# Ensure the first character is not a special character
200+
$nonSpecialCharacters = $lowercase + $uppercase + $numbers
201+
$firstChar = $nonSpecialCharacters[(Get-Random -Minimum 0 -Maximum $nonSpecialCharacters.Length)]
202+
$password = @($firstChar) + $password
203+
204+
# Fill the rest of the password length with random characters from all sets
205+
$remainingLength = $MaxLength - $password.Length
206+
$password += (1..$remainingLength | ForEach-Object { $allCharacters[(Get-Random -Minimum 0 -Maximum $allCharacters.Length)] })
207+
208+
# Shuffle the password to ensure randomness, excluding the first character
209+
$password = $password[0] + ( -join ($password[1..($password.Length - 1)] | Get-Random -Count ($password.Length - 1)))
210+
return -join $password
211+
}
212+
175213
function Invoke-LiveTestCommand {
176214
[CmdletBinding()]
177215
param (

0 commit comments

Comments
 (0)