66 lines
3.3 KiB
PowerShell
66 lines
3.3 KiB
PowerShell
$repositoryRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path
|
|
$localUserScriptPath = Join-Path $repositoryRoot 'scripts\Set-SguStandardLocalUser.ps1'
|
|
$enrollmentTestScriptPath = Join-Path $repositoryRoot 'scripts\Test-SguClientEnrollment.ps1'
|
|
$packageScriptPath = Join-Path $repositoryRoot 'scripts\New-SguBootstrapPackages.ps1'
|
|
$releaseScriptPath = Join-Path $repositoryRoot 'scripts\Publish-GiteaRelease.ps1'
|
|
$azureLauncherPath = Join-Path $repositoryRoot 'scripts\Start-SguAzureClientEnrollment.cmd'
|
|
|
|
$tokens = $null
|
|
$parseErrors = $null
|
|
$scriptAst = [Management.Automation.Language.Parser]::ParseFile(
|
|
$localUserScriptPath,
|
|
[ref]$tokens,
|
|
[ref]$parseErrors)
|
|
if ($parseErrors.Count -gt 0) {
|
|
throw ($parseErrors -join [Environment]::NewLine)
|
|
}
|
|
|
|
$descriptionAssignment = $scriptAst.Find({
|
|
param($node)
|
|
$node -is [Management.Automation.Language.AssignmentStatementAst] -and
|
|
$node.Left.Extent.Text -eq '$description'
|
|
}, $true)
|
|
$description = $descriptionAssignment.Right.Extent.Text.Trim("'")
|
|
|
|
Describe 'SGU Windows client enrollment scripts' {
|
|
It 'keeps the local-user description within the Windows 10 limit' {
|
|
($description.Length -le 48) | Should Be $true
|
|
}
|
|
|
|
It 'declares the managed local student account' {
|
|
$source = Get-Content -LiteralPath $localUserScriptPath -Raw
|
|
$source | Should Match "\$userName = 'alumno'"
|
|
$source | Should Match "\$plainTextPassword = 'ingenieria'"
|
|
}
|
|
|
|
It 'uses the cross-version Windows account flag for password expiration' {
|
|
$localUserSource = Get-Content -LiteralPath $localUserScriptPath -Raw
|
|
$enrollmentTestSource = Get-Content -LiteralPath $enrollmentTestScriptPath -Raw
|
|
$localUserSource | Should Match '\$passwordNeverExpiresFlag = 0x10000'
|
|
$enrollmentTestSource | Should Match '\$passwordNeverExpiresFlag = 0x10000'
|
|
$localUserSource | Should Not Match '\$verifiedUser\.PasswordNeverExpires'
|
|
$enrollmentTestSource | Should Not Match '\$standardLocalUser\.PasswordNeverExpires'
|
|
}
|
|
|
|
It 'publishes separate legacy Windows 10 and modern Windows 11 artifacts' {
|
|
$packageSource = Get-Content -LiteralPath $packageScriptPath -Raw
|
|
$releaseSource = Get-Content -LiteralPath $releaseScriptPath -Raw
|
|
$packageSource | Should Match 'sgu-windows10-legacy-client-bootstrap-\$Version'
|
|
$packageSource | Should Match 'sgu-windows11-client-bootstrap-\$Version'
|
|
$packageSource | Should Match '-CompatibilityProfile Windows10Legacy'
|
|
$packageSource | Should Match '-CompatibilityProfile Windows11Modern'
|
|
$releaseSource | Should Match 'sgu-windows10-legacy-client-bootstrap-\$Version\.zip'
|
|
$releaseSource | Should Match 'sgu-windows11-client-bootstrap-\$Version\.zip'
|
|
}
|
|
|
|
It 'keeps Azure P2S in the modern Windows 11 artifact' {
|
|
$packageSource = Get-Content -LiteralPath $packageScriptPath -Raw
|
|
$azureLauncher = Get-Content -LiteralPath $azureLauncherPath -Raw
|
|
$packageSource.Contains("Join-Path `$windows11ClientRoot 'Start-SguAzureClientEnrollment.cmd'") |
|
|
Should Be $true
|
|
$packageSource.Contains("Join-Path `$windows10ClientRoot 'Start-SguAzureClientEnrollment.cmd'") |
|
|
Should Be $false
|
|
$azureLauncher | Should Match '-PauseOnError'
|
|
}
|
|
}
|