Tests/Private/Dismount-SmbDrive.Tests.ps1
|
BeforeAll { . "$PSScriptRoot/../../Private/Get-Timestamp.ps1" . "$PSScriptRoot/../../Private/Invoke-NetUse.ps1" . "$PSScriptRoot/../../Private/Dismount-SmbDrive.ps1" } Describe 'Dismount-SmbDrive' { BeforeEach { Mock Write-Host {} } Context 'When drive is mounted' { BeforeEach { Mock Test-Path { $true } -ParameterFilter { $Path -like '*:\' } Mock Invoke-NetUse { 'OK' } } It 'Calls Invoke-NetUse with delete arguments' { Dismount-SmbDrive -DriveLetter 'X' Should -Invoke Invoke-NetUse -Times 1 -ParameterFilter { $Arguments -contains '/delete' } } It 'Writes dismount confirmation' { Dismount-SmbDrive -DriveLetter 'X' Should -Invoke Write-Host -ParameterFilter { $Object -like "*Dismounted*" } } } Context 'When drive is not mounted' { BeforeEach { Mock Test-Path { $false } -ParameterFilter { $Path -like '*:\' } Mock Invoke-NetUse { 'OK' } } It 'Does not attempt to dismount' { Dismount-SmbDrive -DriveLetter 'X' Should -Not -Invoke Invoke-NetUse } } Context 'Parameter validation' { It 'Rejects multi-character drive letters' { { Dismount-SmbDrive -DriveLetter 'XY' } | Should -Throw } It 'Rejects numeric drive letters' { { Dismount-SmbDrive -DriveLetter '9' } | Should -Throw } } } |