Tests/Integration/ADOrganizationalUnit.tests.ps1
[CmdletBinding()] param ( [Parameter()] [string] $Server, [Parameter(Mandatory)] [PSCredential] $PSCredential ) # HACK this is the only way I can figure out how to get the cred parameters into Pester BeforeAll context. $global:Credential = $PSCredential Import-Module $PSScriptRoot\..\.. -Force -Verbose:$false Describe 'ADOrganizationalUnit' -Tags Integration { BeforeAll { [Diagnostics.CodeAnalysis.SuppressMessage("UseDeclaredVarsMoreThanAssignments","", Scope="member")] $ConnectionParam = @{ Server = $Server Credential = $global:Credential } [Diagnostics.CodeAnalysis.SuppressMessage("UseDeclaredVarsMoreThanAssignments","", Scope="member")] $BuiltInOrganizationalUnitDistinguishedNames = @( 'OU=Domain Controllers,DC=samdom,DC=example,DC=com' ) } It 'Can New-ADOrganizationalUnit in an alternate path' { $testOrganizationalUnitName = 'createOrganizationalUnit2' $parentPath = 'OU=Subdir,OU=Alternate\ OrganizationalUnits,DC=samdom,DC=example,DC=com' $distinguishedName = "OU=$testOrganizationalUnitName,$parentPath" $expectedDistinguishedName = $distinguishedName -replace '\\', '' New-ADOrganizationalUnit @ConnectionParam -Name 'Alternate OrganizationalUnits' New-ADOrganizationalUnit @ConnectionParam -Name 'Subdir' -Path 'OU=Alternate\ OrganizationalUnits,DC=samdom,DC=example,DC=com' New-ADOrganizationalUnit @ConnectionParam -Name $testOrganizationalUnitName -Path $parentPath $result = Get-ADOrganizationalUnit @ConnectionParam -Identity $distinguishedName $result.distinguishedName | Should -Be $expectedDistinguishedName } It 'Returns an error when New-ADOrganizationalUnit with the same name twice' { $testOrganizationalUnitName = 'createOrganizationalUnit3' New-ADOrganizationalUnit @ConnectionParam -Name $testOrganizationalUnitName {New-ADOrganizationalUnit @ConnectionParam -Name $testOrganizationalUnitName} | Should -Throw } It 'Returns null when Get-ADOrganizationalUnit that does not exist' { $testOrganizationalUnitName = 'nonExistentOrganizationalUnit1' $result = Get-ADOrganizationalUnit @ConnectionParam -Identity $testOrganizationalUnitName $result | Should -BeNullOrEmpty } It 'Can Test-ADOrganizationalUnit and Remove-ADOrganizationalUnit by distinguishedName' { $testOrganizationalUnitName = 'testOrganizationalUnit1' $testOrganizationalUnitDistinguishedName = 'OU=testOrganizationalUnit1,DC=samdom,DC=example,DC=com' Test-ADOrganizationalUnit @ConnectionParam -Identity $testOrganizationalUnitDistinguishedName | Should -BeFalse New-ADOrganizationalUnit @ConnectionParam -Name $testOrganizationalUnitName Test-ADOrganizationalUnit @ConnectionParam -Identity $testOrganizationalUnitDistinguishedName | Should -BeTrue Remove-ADOrganizationalUnit @ConnectionParam -Identity $testOrganizationalUnitDistinguishedName Test-ADOrganizationalUnit @ConnectionParam -Identity $testOrganizationalUnitDistinguishedName | Should -BeFalse } AfterEach { Write-Verbose "Cleanup in $($MyInvocation.MyCommand.ScriptBlock.File | Split-Path -Leaf)." & "$PSScriptRoot\Shared\Clear-TestObjects.ps1" } } |