tests/helpers/PathHelpers.Tests.ps1
|
#Requires -Version 7 #Requires -Modules Pester # Must be loaded at script level so InModuleScope works during Pester discovery Import-Module (Join-Path $PSScriptRoot '../../CpmfUipsPack.psd1') -Force Describe 'Add-ToUserPath' { InModuleScope CpmfUipsPack { BeforeEach { $script:savedPath = [Environment]::GetEnvironmentVariable('PATH', 'User') } AfterEach { [Environment]::SetEnvironmentVariable('PATH', $script:savedPath, 'User') } It 'adds token when not present and returns $true' { [Environment]::SetEnvironmentVariable('PATH', 'C:\foo', 'User') $result = Add-ToUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $true [Environment]::GetEnvironmentVariable('PATH', 'User') | Should -BeLike '*%LOCALAPPDATA%\test\bin*' } It 'returns $false and does not duplicate when token already present' { [Environment]::SetEnvironmentVariable('PATH', '%LOCALAPPDATA%\test\bin;C:\foo', 'User') $result = Add-ToUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $false } It 'returns $false when expanded form already present' { $expanded = [Environment]::ExpandEnvironmentVariables('%LOCALAPPDATA%\test\bin') [Environment]::SetEnvironmentVariable('PATH', "$expanded;C:\foo", 'User') $result = Add-ToUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $false } It 'handles empty PATH' { [Environment]::SetEnvironmentVariable('PATH', '', 'User') $result = Add-ToUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $true } } } Describe 'Remove-FromUserPath' { InModuleScope CpmfUipsPack { BeforeEach { $script:savedPath = [Environment]::GetEnvironmentVariable('PATH', 'User') } AfterEach { [Environment]::SetEnvironmentVariable('PATH', $script:savedPath, 'User') } It 'removes token form and returns $true' { [Environment]::SetEnvironmentVariable('PATH', '%LOCALAPPDATA%\test\bin;C:\foo', 'User') $result = Remove-FromUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $true [Environment]::GetEnvironmentVariable('PATH', 'User') | Should -Not -BeLike '*%LOCALAPPDATA%\test\bin*' } It 'removes expanded form and returns $true' { $expanded = [Environment]::ExpandEnvironmentVariables('%LOCALAPPDATA%\test\bin') [Environment]::SetEnvironmentVariable('PATH', "$expanded;C:\foo", 'User') $result = Remove-FromUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $true [Environment]::GetEnvironmentVariable('PATH', 'User') | Should -Not -BeLike "*$expanded*" } It 'returns $false when token not present' { [Environment]::SetEnvironmentVariable('PATH', 'C:\foo;C:\bar', 'User') $result = Remove-FromUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $false } It 'returns $false on empty PATH' { [Environment]::SetEnvironmentVariable('PATH', '', 'User') $result = Remove-FromUserPath '%LOCALAPPDATA%\test\bin' $result | Should -Be $false } } } |