Tests/Unit/Public/Access/Grant-SCAAccess.Tests.ps1

Import-Module (Join-Path $PSScriptRoot '../../../../psSCA.psd1') -Force

Describe 'Grant-SCAAccess' {
    InModuleScope psSCA {
        It 'posts the pipeline object to /access/elevate' {
            Mock Invoke-SCARequest { }

            [pscustomobject]@{ accountId = '111122223333'; roleId = 'role-1' } | Grant-SCAAccess -Confirm:$false | Out-Null

            Should -Invoke Invoke-SCARequest -ParameterFilter {
                $Service -eq 'SCA' -and $Method -eq 'POST' -and $Path -eq '/access/elevate' -and
                $Body['accountId'] -eq '111122223333' -and $Body['roleId'] -eq 'role-1'
            }
        }

        It 'accepts a hashtable directly' {
            Mock Invoke-SCARequest { }

            Grant-SCAAccess -InputObject @{ subscriptionId = 'sub-1' } -Confirm:$false | Out-Null

            Should -Invoke Invoke-SCARequest -ParameterFilter { $Body['subscriptionId'] -eq 'sub-1' }
        }

        It 'does not call Invoke-SCARequest when -WhatIf is specified' {
            Mock Invoke-SCARequest { }

            Grant-SCAAccess -InputObject @{ accountId = '1' } -WhatIf | Out-Null

            Should -Invoke Invoke-SCARequest -Times 0 -Exactly
        }
    }
}