tests/Test-NewAzManagedIdentity.Tests.ps1

Describe "New-AzManagedIdentity" {
    BeforeAll { 
        Import-Module "$PSScriptRoot/../az-bootstrap.psd1" -Force
    }

    InModuleScope 'az-bootstrap' {
        It "Calls az identity create with correct parameters" {
            Mock az -ParameterFilter { $args -contains 'identity' -and $args -contains 'create' } -MockWith { return '{"name":"mi-test", "principalId":"principal-id", "clientId":"client-id"}' }
            
            $result = New-AzManagedIdentity -ManagedIdentityName "mi-test" -ResourceGroupName "rg-test" -Location "eastus"
            $result.name | Should -Be "mi-test"
            
            Assert-MockCalled az -ParameterFilter { 
                $args -contains 'identity' -and 
                $args -contains 'create' -and 
                $args -contains '--name' -and 
                $args -contains 'mi-test' -and
                $args -contains '--resource-group' -and
                $args -contains 'rg-test' -and
                $args -contains '--location' -and
                $args -contains 'eastus'
            } -Exactly 1 -Scope It
        }
        
        It "Throws if az identity create fails" {
            Mock az -ParameterFilter { $args -contains 'identity' -and $args -contains 'create' } -MockWith { throw "az identity create failed" }
            
            { New-AzManagedIdentity -ManagedIdentityName "fail" -ResourceGroupName "rg-test" -Location "eastus" } | Should -Throw
        }
    }
}