Pester et Enable-ADAccount
Bonjour,
Dans mon module PSCHSGActiveDirectory, j'ai une fonction Set-CHSGActiveUserActiveOn qui appelle 2 fonctions du module ActiveDirectory : Get-ADUser et Enable-ADAccount.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Function Set-CHSGActiveUserActiveOn() {
Param(
[Parameter(
Mandatory = $True,
ValueFromPipeline = $True
)]
[String]$samAccountName
)
...
$user = Get-ADUser -Identity $samAccountName
...
Enable-ADAccount -Identity $user
...
} |
Ci-dessous, mon fichier de tests :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| BeforeAll {
Import-Module PSCHSGActiveDirectory -Force
}
Describe 'Set-CHSGActiveUserActiveOn' {
Context 'Without Reset Password' {
BeforeAll {
#Mock Get-ADUser -ModuleName PSCHSGActiveDirectory { }
#Mock Enable-ADAccount -ModuleName PSCHSGActiveDirectory { }
}
It 'Tests Enable User' {
PSCHSGActiveDirectory\Set-CHSGActiveUserActiveOn -User 'johndoe' | Should -BeNullOrEmpty
}
}
} |
Lorsque je ne mock rien, le test bloque sur le Get-ADUser.
Lorsque je ne mock que le Get-ADUser, le test bloque sur le Enable-ADAccount.
Lorsque je mock les 2, le test bloque toujours sur le Enable-ADAccount avec le message :
Code:
1 2 3 4 5
|
[-] Set-CHSGActiveUserActiveOn.Without Reset Password.Tests Enable User 42ms (40ms|2ms)
ValidationMetadataException: L’argument est Null. Spécifiez une valeur valide pour l’argument, puis réessayez.
ParameterBindingValidationException: Impossible de valider l'argument sur le paramètre «*Identity*». L’argument est Null. Spécifiez une valeur valide pour l’argument, puis réessayez.
|
J'ai bien tenté de changer ma fonction Set-CHSGActiveUserActiveOn en mettant comme param un Microsoft.ActiveDirectory.Management.ADUser au lieu d'un string (ce qui au passage me permet de supprimer le Get-ADUser) mais le problème persiste.
J'utilise les versions ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11
| ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0.1.0 ActiveDirectory {Add-ADCentralAccessPolicyMember, Add-ADComputerServiceAccount, Add-ADDomainControllerPasswordReplicationPolicy, Add-ADFineGrainedPasswordPolicySubject...}
Binary 1.0.0.0 CimCmdlets {Export-BinaryMiLog, Get-CimAssociatedInstance, Get-CimClass, Get-CimInstance...}
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Content...}
Manifest 3.0.0.0 Microsoft.PowerShell.Security {ConvertFrom-SecureString, ConvertTo-SecureString, Get-Acl, Get-AuthenticodeSignature...}
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Manifest 3.0.0.0 Microsoft.WSMan.Management {Connect-WSMan, Disable-WSManCredSSP, Disconnect-WSMan, Enable-WSManCredSSP...}
Script 5.3.1 Pester {Add-ShouldOperator, AfterAll, AfterEach, Assert-MockCalled...}
Script 3.4.0 Pester {AfterAll, AfterEach, Assert-MockCalled, Assert-VerifiableMocks...}
Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PSReadLineKeyHandler, Set-PSReadLineKeyHandler...} |
Je me demande quelle est la bonne syntaxe pour Mock cette fonction Enable-ADAccount.
Vous remerciant par avance,