. $PSScriptRoot\..\..\Load-PesterModules.ps1 $here = Split-Path -Parent $MyInvocation.MyCommand.Path $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.' $functionPath = Join-Path -Path $here -ChildPath $sut Write-Host "Overriding SUT: $functionPath" Import-Module $functionPath -Force $moduleForMock = "" Describe "Get-SecurityGroupsForUser" { Mock -CommandName Get-LogLeadName -ModuleName $moduleForMock -MockWith { return 'Get-SecurityGroupsForUser.tests' } Mock -CommandName Get-ActiveDirectoryAccount -ModuleName $moduleForMock -MockWith {} Mock -CommandName Get-ADGroup -ModuleName $moduleForMock -MockWith {} Mock -CommandName Write-Warning -ModuleName $moduleForMock -MockWith {} Context "Parameter Validation" { It "Strips off Domain Prefixes for User Lookup" { Get-SecurityGroupsForUser "CORP\FakeUser" Assert-MockCalled -ModuleName $moduleForMock -CommandName Get-ActiveDirectoryAccount ` -ParameterFilter { $Identity.ToString() -eq "FakeUser"; } -Times 1 -Exactly -Scope It } It "Strips off SAMAccountName Domain Suffixes for User Lookup" { Get-SecurityGroupsForUser "FakeUser@corp.alkamitech.com" Assert-MockCalled -ModuleName $moduleForMock -CommandName Get-ActiveDirectoryAccount ` -ParameterFilter { $Identity.ToString() -eq "FakeUser"; } -Times 1 -Exactly -Scope It } It "Writes a Warning and Returns Null if the User Is Not Found" { Mock -CommandName Write-Warning -ModuleName $moduleForMock -MockWith {} Get-SecurityGroupsForUser "FakeUser" | Should -BeNullOrEmpty Assert-MockCalled -ModuleName $moduleForMock -CommandName Write-Warning ` -ParameterFilter { $Message -match "Could not query user details for user" } -Times 1 -Exactly -Scope It } } }