Tests/Set-AdDirectoryReplication.Test.ps1
Describe 'Set-AdDirectoryReplication' { BeforeAll { # Mock dependencies Mock Test-AdPrivileges { $true } Mock Get-AdObjectType { [PSCustomObject]@{ ObjectClass = 'group' Name = 'TestGroup' } } Mock Set-AclConstructor4 { } Mock Get-AttributeSchemaHashTable { } Mock Get-ExtendedRightHashTable { } Mock Get-ADObject { @( [PSCustomObject]@{ name = 'TestPartition' nCName = 'DC=test,DC=com' 'msDS-NC-Replica-Locations' = 'CN=Server1' } ) } Mock Write-Error { } } Context 'Privilege Validation' { It 'Should require elevated privileges' { Mock Test-AdPrivileges { $false } Set-AdDirectoryReplication -Group 'TestGroup' Should -Invoke Write-Error -ParameterFilter { $Message -like '*privileges required*' } } } Context 'Parameter Validation' { It 'Should validate group existence' { Mock Get-AdObjectType { $null } Set-AdDirectoryReplication -Group 'NonExistentGroup' Should -Invoke Write-Error -ParameterFilter { $Message -like '*not found*' } } } Context 'Permission Assignment' { It 'Should process all replication rights' { Set-AdDirectoryReplication -Group 'TestGroup' -Force Should -Invoke Set-AclConstructor4 -Times 6 } It 'Should handle RemoveRule parameter' { Set-AdDirectoryReplication -Group 'TestGroup' -RemoveRule -Force Should -Invoke Set-AclConstructor4 -ParameterFilter { $RemoveRule -eq $true } } } Context 'Error Handling' { It 'Should handle Set-AclConstructor4 failures' { Mock Set-AclConstructor4 { throw 'Access Denied' } Set-AdDirectoryReplication -Group 'TestGroup' -Force Should -Invoke Write-Error } } } |