tests/functions/Test-MtCaAzureDevOps.Tests.ps1
|
Describe 'Test-MtCaAzureDevOps' { BeforeAll { Import-Module $PSScriptRoot/../../Maester.psd1 -Force function New-CaPolicy { param( [string]$Id, [string]$DisplayName, [string[]]$IncludeApplications ) return [PSCustomObject]@{ id = $Id displayName = $DisplayName state = 'enabled' conditions = [PSCustomObject]@{ applications = [PSCustomObject]@{ includeApplications = $IncludeApplications } } } } } Context 'Azure DevOps app is unavailable in tenant' { It 'Should skip and return null' { $script:SkippedBecause = $null $script:SkippedCustomReason = $null Mock -ModuleName Maester Test-MtConnection { return $true } Mock -ModuleName Maester Get-MtLicenseInformation { return 'P1' } Mock -ModuleName Maester Invoke-MtGraphRequest { return @() } Mock -ModuleName Maester Add-MtTestResultDetail { param($SkippedBecause, $SkippedCustomReason) $script:SkippedBecause = $SkippedBecause $script:SkippedCustomReason = $SkippedCustomReason } $result = Test-MtCaAzureDevOps $result | Should -BeNull $script:SkippedBecause | Should -Be 'Custom' $script:SkippedCustomReason | Should -BeLike '*499b84ac-1321-427f-aa17-267ca6975798*' } } Context 'Azure DevOps app is available in tenant' { BeforeEach { Mock -ModuleName Maester Test-MtConnection { return $true } Mock -ModuleName Maester Get-MtLicenseInformation { return 'P1' } Mock -ModuleName Maester Invoke-MtGraphRequest { return @{ id = 'sp-id' } } } It 'Should return true when at least one enabled policy explicitly includes Azure DevOps' { $policies = @( New-CaPolicy -Id 'policy1' -DisplayName 'Include Azure DevOps' -IncludeApplications @('499b84ac-1321-427f-aa17-267ca6975798') ) Mock -ModuleName Maester Get-MtConditionalAccessPolicy { return $policies } Mock -ModuleName Maester Add-MtTestResultDetail {} Test-MtCaAzureDevOps | Should -BeTrue } It 'Should return false when no enabled policy explicitly includes Azure DevOps' { $policies = @( New-CaPolicy -Id 'policy1' -DisplayName 'All apps policy' -IncludeApplications @('All') ) Mock -ModuleName Maester Get-MtConditionalAccessPolicy { return $policies } Mock -ModuleName Maester Add-MtTestResultDetail {} Test-MtCaAzureDevOps | Should -BeFalse } } } |