ps/Modules/Alkami.PowerShell.Common/Public/Close-SMBApplicationLocks.tests.ps1
2023-05-30 22:51:22 -07:00

91 lines
3.3 KiB
PowerShell

. $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 "Close-SMBApplicationLocks" {
#Mock -ModuleName $moduleForMock -CommandName Write-Host -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Write-Warning -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Write-Verbose -MockWith {}
Context "Parameter Validation" {
Mock -ModuleName $moduleForMock Close-SmbOpenFile {}
Mock -ModuleName $moduleForMock Get-SmbOpenFile {
$orbProc = New-Object -TypeName PSObject -Property @{
Path = "C:\Orb"
SessionId = "1"
FileId = 27
ClientUserName = "Pester"
}
$customProc1 = New-Object -TypeName PSObject -Property @{
Path = "C:\TestPath1"
SessionId = "2"
FileId = 28
ClientUserName = "Pester"
}
$customProc2 = New-Object -TypeName PSObject -Property @{
Path = "C:\TestPath2"
SessionId = "3"
FileId = 29
ClientUserName = "Pester"
}
return @($orbProc, $customProc1, $customProc2)
}
#Mock -ModuleName $moduleForMock Get-SmbOpenFile -ParameterFilter { $FileId } -MockWith { return $true }
It "Uses a Default Path List if Not Provided" {
Close-SMBApplicationLocks -Verbose
Assert-MockCalled -ModuleName $moduleForMock Close-SmbOpenFile -Times 1 -Exactly -Scope It
}
It "Uses Custom Paths if Provided" {
Close-SMBApplicationLocks @("TestPath1","TestPath2") -Verbose
Assert-MockCalled -ModuleName $moduleForMock Close-SmbOpenFile -Times 2 -Exactly -Scope It
}
}
Context "When No Sessions are Found" {
Mock -ModuleName $moduleForMock Close-SmbOpenFile {}
Mock -ModuleName $moduleForMock Get-SmbOpenFile { return $null }
It "Does Not Call Close-SMBSession" {
Close-SMBApplicationLocks -Verbose
Assert-MockCalled -ModuleName $moduleForMock Close-SmbOpenFile -Times 0 -Exactly -Scope It
}
}
Context "WinTest Parameter Validation" {
Mock -ModuleName $moduleForMock Close-SmbOpenFile {}
Mock -ModuleName $moduleForMock Get-SmbOpenFile {
$winTestProc = New-Object -TypeName PSObject -Property @{
Path = "C:\Tools\Wintest\Current"
SessionId = "5"
FileId = 24
ClientUserName = "Pester"
}
$extraProc1 = New-Object -TypeName PSObject -Property @{
Path = "C:\ExtraPath1"
SessionId = "6"
FileId = 27
ClientUserName = "Pester"
}
return @($winTestProc, $extraProc1)
}
It "Default Path List Closes WinTest standard location" {
Close-SMBApplicationLocks -Verbose
Assert-MockCalled -ModuleName $moduleForMock Close-SmbOpenFile -Times 1 -Exactly -Scope It
}
}
}