public/maester/azuredevops/Test-AzdoOrganizationTriggerPullRequestGitHubRepository.ps1

<#
.SYNOPSIS
    Returns a boolean depending on the configuration.

.DESCRIPTION
    Checks the status if Azure Pipelines can automatically build and validate every pull request and commit to your GitHub repository.

    https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#validate-contributions-from-forks

.EXAMPLE
    ```
    Test-AzdoOrganizationTriggerPullRequestGitHubRepository
    ```

    Returns a boolean depending on the configuration.

.LINK
    https://maester.dev/docs/commands/Test-AzdoOrganizationTriggerPullRequestGitHubRepository
#>

function Test-AzdoOrganizationTriggerPullRequestGitHubRepository {
    [CmdletBinding()]
    [OutputType([bool])]
    param()

    if ($null -eq (Get-ADOPSConnection)['Organization']) {
        Write-Verbose 'Not connected to Azure DevOps'
        Add-MtTestResultDetail -SkippedBecause Custom -SkippedCustomReason 'Not connected to Azure DevOps'
        return $null
    }

    $settings = Get-ADOPSOrganizationPipelineSettings

    if ($settings -eq 'AccessDeniedException') {
        Add-MtTestResultDetail -SkippedBecause Custom -SkippedCustomReason 'Insufficient permissions to access the pipeline settings API. Please ensure you have the necessary permissions to access this information.'
        return $null
    }

    $result = $settings.forkProtectionEnabled

    if ($result) {
        if ($settings.requireCommentsForNonTeamMemberAndNonContributors) {
            $AdditionalInfo = 'Only on pull requests from non-team members and contributors'
        } elseif ($settings.requireCommentsForNonTeamMembersOnly) {
            $AdditionalInfo = 'Only on pull requests from non-team members'
        } else {
            $AdditionalInfo = 'On all pull requests'
        }

        $data = @'
            Prevent pipelines from making secrets available to fork builds is set to '{0}'
            Prevent pipelines from making fork builds have the same permissions as regular builds is set to '{1}'
            Require a team member's comment before building a pull request is set to '{2}' ({3})
'@
 -f $settings.enforceNoAccessToSecretsFromForks, $settings.enforceJobAuthScopeForForks, $settings.isCommentRequiredForPullRequest, $AdditionalInfo

        $resultMarkdown = "You have configured building pull requests from forked GitHub repositories according to your requirements. $data"
    } else {
        $resultMarkdown = "No limits building pull requests from forked GitHub repositories have been configured."
    }

    Add-MtTestResultDetail -Result $resultMarkdown

    return $result
}