tests/Unit/Public/Get-sqmADGroupMembers.Tests.ps1

#Requires -Modules Pester
<#
.SYNOPSIS
    Unit Tests fuer Get-sqmADGroupMembers (Parameter-Contract).
    Reine Metadaten-Pruefung - keine Live-ADSI-Aufrufe (CI-tauglich).
#>


BeforeAll {
    . "$PSScriptRoot\..\..\..\tests\TestHelpers.ps1"
    Import-sqmTestModule
}

AfterAll {
    if (Get-Module sqmSQLTool) { Remove-Module sqmSQLTool -Force }
    $env:MSSQLTOOLS_SKIP_AUTO_UPDATE = $null
}

Describe 'Get-sqmADGroupMembers' {

    Context 'Parameter-Validierung' {

        It 'Funktion existiert und ist aufrufbar' {
            Get-Command Get-sqmADGroupMembers | Should -Not -BeNullOrEmpty
        }

        It 'GroupName ist Mandatory' {
            $cmd = Get-Command Get-sqmADGroupMembers
            $cmd.Parameters['GroupName'].Attributes.Where{ $_.TypeId.Name -eq 'ParameterAttribute' }.Mandatory | Should -Be $true
        }

        It 'GroupName akzeptiert Pipeline-Input' {
            $cmd = Get-Command Get-sqmADGroupMembers
            $cmd.Parameters['GroupName'].Attributes.Where{ $_.TypeId.Name -eq 'ParameterAttribute' }.ValueFromPipeline | Should -Be $true
        }

        It 'GroupName Parameter ist vom Typ string[]' {
            $cmd = Get-Command Get-sqmADGroupMembers
            $cmd.Parameters['GroupName'].ParameterType.Name | Should -Match 'string'
        }

        It 'Domain Parameter existiert' {
            (Get-Command Get-sqmADGroupMembers).Parameters.ContainsKey('Domain') | Should -Be $true
        }

        It 'OutputPath Parameter existiert' {
            (Get-Command Get-sqmADGroupMembers).Parameters.ContainsKey('OutputPath') | Should -Be $true
        }

        It 'WhatIf wird unterstützt' {
            (Get-Command Get-sqmADGroupMembers).Parameters.ContainsKey('WhatIf') | Should -Be $true
        }

        It 'Confirm wird unterstützt' {
            (Get-Command Get-sqmADGroupMembers).Parameters.ContainsKey('Confirm') | Should -Be $true
        }
    }

    Context 'Rückgabeobjekt-Struktur' {

        It 'Deklariert PSCustomObject als OutputType' {
            (Get-Command Get-sqmADGroupMembers).OutputType.Name | Should -Match 'PSObject'
        }
    }

    Context 'OutputPath-Handling' {

        It 'OutputPath ist vom Typ String' {
            (Get-Command Get-sqmADGroupMembers).Parameters['OutputPath'].ParameterType.Name | Should -Be 'String'
        }
    }
}