Tests/Unit/Public/Policies.Tests.ps1
|
BeforeAll { $moduleRoot = (Resolve-Path (Join-Path $PSScriptRoot '../../..')).Path Import-Module (Join-Path $moduleRoot 'psSIA.psd1') -Force } Describe 'Get-SIAPolicy' { It 'routes to the Uap service' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Path, $Service) $Path | Should -Be '/policies' $Service | Should -Be 'Uap' @() } Get-SIAPolicy | Out-Null } } It 'requests a single policy by ID' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Path) $Path | Should -Be '/policies/policy-1' [pscustomobject]@{ id = 'policy-1' } } (Get-SIAPolicy -Id 'policy-1').id | Should -Be 'policy-1' } } } Describe 'Remove-SIAPolicy' { It 'calls DELETE against the Uap service' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path, $Service) $Method | Should -Be 'DELETE' $Path | Should -Be '/policies/policy-1' $Service | Should -Be 'Uap' } Remove-SIAPolicy -Id 'policy-1' -Confirm:$false } } } Describe 'Get-SIAAccessPolicy (legacy)' { It 'calls the legacy Dpa-hosted endpoint, not Uap' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Path) $Path | Should -Be '/api/access-policies' @() } Get-SIAAccessPolicy | Out-Null } } } Describe 'Test-SIAPolicy' { It 'calls the validate endpoint with the supplied body' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Path, $Body) $Path | Should -Be '/policies/policy-1/validate' $Body.name | Should -Be 'test-policy' } Test-SIAPolicy -Id 'policy-1' -Body @{ name = 'test-policy' } } } } Describe 'New-SIAPolicy and Set-SIAPolicy' { It 'New-SIAPolicy posts to /policies on the Uap service' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path, $Service) $Method | Should -Be 'POST' $Path | Should -Be '/policies' $Service | Should -Be 'Uap' } New-SIAPolicy -Body @{ name = 'test-policy' } -Confirm:$false } } It 'Set-SIAPolicy puts to /policies/{id} on the Uap service' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path, $Service) $Method | Should -Be 'PUT' $Path | Should -Be '/policies/policy-1' $Service | Should -Be 'Uap' } Set-SIAPolicy -Id 'policy-1' -Body @{ name = 'test-policy' } -Confirm:$false } } } Describe 'Legacy access policy write cmdlets' { It 'New-SIAAccessPolicy posts policyName, the VM policyType constant, and status' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path, $Body) $Method | Should -Be 'POST' $Path | Should -Be '/api/access-policies' $Body.policyName | Should -Be 'legacy-policy' $Body.policyType | Should -Be 'VM' $Body.status | Should -Be 'Draft' } New-SIAAccessPolicy -PolicyName 'legacy-policy' -Confirm:$false } } It 'New-SIAAccessPolicy accepts an explicit Status' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Body) $Body.status | Should -Be 'Enabled' } New-SIAAccessPolicy -PolicyName 'legacy-policy' -Status Enabled -Confirm:$false } } It 'Set-SIAAccessPolicy only includes supplied fields' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path, $Body) $Method | Should -Be 'PUT' $Path | Should -Be '/api/access-policies/policy-1' $Body.status | Should -Be 'Disabled' $Body.Keys | Should -Not -Contain 'policyName' } Set-SIAAccessPolicy -Id 'policy-1' -Status Disabled -Confirm:$false } } It 'Remove-SIAAccessPolicy deletes /api/access-policies/{id}' { InModuleScope psSIA { Mock Invoke-SIARequest { param($Method, $Path) $Method | Should -Be 'DELETE' $Path | Should -Be '/api/access-policies/policy-1' } Remove-SIAAccessPolicy -Id 'policy-1' -Confirm:$false } } It 'does not call the API under -WhatIf' { InModuleScope psSIA { Mock Invoke-SIARequest {} Remove-SIAAccessPolicy -Id 'policy-1' -WhatIf Should -Invoke Invoke-SIARequest -Times 0 -Exactly } } } |