91 lines
3.3 KiB
PowerShell
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
|
|
}
|
|
|
|
}
|
|
}
|