private/tests/Test-HighPriorityEntraRecommendationsAddressed.22124.ps1

<#
.SYNOPSIS
    Checks that high priority Entra recommendations are addressed
#>


function Test-HighPriorityEntraRecommendationsAddressed {
    [CmdletBinding()]
    param()

    Write-PSFMessage '🟦 Start' -Tag Test -Level VeryVerbose

    $activity = "Checking for directory recommendations that are high priority and are active or postponed"
    Write-ZtProgress -Activity $activity

    $recommendations = Invoke-ZtGraphRequest -RelativeUri "directory/recommendations" -ApiVersion beta
    $result = $recommendations | Where-Object { $_.priority -eq 'high' -and $_.status -in @('active', 'postponed') }
    Write-Output $result.Count

    $passed = $result.Count -eq 0

    if ($passed) {
        $testResultMarkdown = "High Priority Entra Recommendations are addressed.`n`n"
    }
    else {
        $testResultMarkdown = "Found $($result.Count) unaddressed high priority Entra recommendations.`n`n%TestResult%"
    }

    if ($result.Count -gt 0) {
        $mdInfo = "`n## Unaddressed high priority Entra recommendations`n`n"
        $mdInfo += "| Display Name | Status | Insights |`n"
        $mdInfo += "| :--- | :--- | :--- |`n"
        foreach ($item in $result) {
            $mdInfo += "| $($item.displayName) | $($item.status) | $($item.Insights) |`n"
        }
    }

    $testResultMarkdown = $testResultMarkdown -replace "%TestResult%", $mdInfo

    Add-ZtTestResultDetail -TestId '22124' -Title 'High priority Entra recommendations are addressed' `
        -UserImpact Medium -Risk High -ImplementationCost Medium `
        -AppliesTo Identity -Tag Application `
        -Status $passed -Result $testResultMarkdown
}