$repositoryRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path $localUserScriptPath = Join-Path $repositoryRoot 'scripts\Set-SguStandardLocalUser.ps1' $enrollmentTestScriptPath = Join-Path $repositoryRoot 'scripts\Test-SguClientEnrollment.ps1' $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' } }