Tests/Set-AdAclFullControlDHCP.Test.ps1
Describe 'Set-AdAclFullControlDHCP' { BeforeAll { # Mock dependencies Mock Get-AdObjectType { [PSCustomObject]@{ ObjectClass = 'group' Name = 'TestGroup' } } Mock Set-AclConstructor5 { } Mock Set-AclConstructor6 { } Mock Get-AttributeSchemaHashTable { } Mock Write-Error { } } Context 'Parameter Validation' { It 'Should require Group parameter' { { Set-AdAclFullControlDHCP } | Should -Throw } It 'Should accept pipeline input' { { 'TestGroup' | Set-AdAclFullControlDHCP } | Should -Not -Throw } It 'Should validate group existence' { Mock Get-AdObjectType { $null } { Set-AdAclFullControlDHCP -Group 'NonExistentGroup' } | Should -Throw } } Context 'Permission Assignment' { It 'Should process valid inputs' { Set-AdAclFullControlDHCP -Group 'TestGroup' -Force Should -Invoke Set-AclConstructor5 -Times 1 Should -Invoke Set-AclConstructor6 -Times 1 } It 'Should handle RemoveRule parameter' { Set-AdAclFullControlDHCP -Group 'TestGroup' -RemoveRule -Force Should -Invoke Set-AclConstructor5 -ParameterFilter { $RemoveRule -eq $true } Should -Invoke Set-AclConstructor6 -ParameterFilter { $RemoveRule -eq $true } } } Context 'Error Handling' { It 'Should handle Set-AclConstructor failures' { Mock Set-AclConstructor5 { throw 'Access Denied' } Set-AdAclFullControlDHCP -Group 'TestGroup' -Force Should -Invoke Write-Error } } } |