Bonjour,
Dans mon module PSCHSGActiveDirectory, j'ai une fonction Set-CHSGActiveUserActiveOn qui appelle 2 fonctions du module ActiveDirectory : Get-ADUser et Enable-ADAccount.
Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'utilise les versions ci-dessous :
Je me demande quelle est la bonne syntaxe pour Mock cette fonction Enable-ADAccount.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...}
Vous remerciant par avance,
Partager