MSIX.Tests/MSIX.MFR.Tests.ps1
|
BeforeAll { Import-Module (Resolve-Path (Join-Path $PSScriptRoot '..\MSIX.psd1')) -Force } AfterAll { Remove-Module MSIX -ErrorAction SilentlyContinue } Describe 'MFR builders' -Tag 'MFR' { Context 'Get-MsixMfrKnownFolder' { It 'Mode Traditional contains ProgramFilesX64' { (Get-MsixMfrKnownFolder -Mode Traditional) | Should -Contain 'ProgramFilesX64' } It 'Mode Local contains ThisPCDesktopFolder' { (Get-MsixMfrKnownFolder -Mode Local) | Should -Contain 'ThisPCDesktopFolder' } It 'Mode Both returns combined object with COW options' { $r = Get-MsixMfrKnownFolder $r.COW | Should -Contain 'enablePe' $r.COW | Should -Contain 'disableAll' } } Context 'New-MsixMfrTraditionalRule' { It 'Validates KnownFolder against known list' { { New-MsixMfrTraditionalRule -KnownFolder 'NotAFolder' -RelativePath 'x' -Patterns 'y' } | Should -Throw '*Unknown traditional folder*' } It 'Returns hashtable with knownFolder/relativePath/patterns' { $r = New-MsixMfrTraditionalRule -KnownFolder 'ProgramFilesX64' -RelativePath 'App' -Patterns '.*\.log' $r.knownFolder | Should -Be 'ProgramFilesX64' $r.relativePath | Should -Be 'App' $r.patterns[0] | Should -Be '.*\.log' } It 'Honours -Cow' { $r = New-MsixMfrTraditionalRule -KnownFolder 'ProgramFilesX64' -RelativePath 'A' -Patterns '.*' -Cow enablePe $r.copyOnWrite | Should -Be 'enablePe' } It 'Honours -IlvAware' { $r = New-MsixMfrTraditionalRule -KnownFolder 'ProgramFilesX64' -RelativePath 'A' -Patterns '.*' -IlvAware $true $r.ilvAware | Should -BeTrue } } Context 'New-MsixMfrLocalRule' { It 'Rejects a Traditional folder name' { { New-MsixMfrLocalRule -KnownFolder 'ProgramFilesX64' -RelativePath 'x' -Patterns 'y' } | Should -Throw '*Unknown local folder*' } It 'Accepts ThisPCDesktopFolder' { $r = New-MsixMfrLocalRule -KnownFolder 'ThisPCDesktopFolder' -RelativePath 'A' -Patterns '.*' $r.knownFolder | Should -Be 'ThisPCDesktopFolder' } } Context 'New-MsixPsfMfrConfig' { It 'Returns MFRFixup.dll' { $rule = New-MsixMfrTraditionalRule -KnownFolder 'AppData' -RelativePath 'A' -Patterns '.*' $cfg = New-MsixPsfMfrConfig -TraditionalRules @($rule) $cfg.dll | Should -Be 'MFRFixup.dll' } It 'Splits Traditional and Local into separate paths' { $t = New-MsixMfrTraditionalRule -KnownFolder 'AppData' -RelativePath 'a' -Patterns '.*' $l = New-MsixMfrLocalRule -KnownFolder 'Personal' -RelativePath 'b' -Patterns '.*' $cfg = New-MsixPsfMfrConfig -TraditionalRules @($t) -LocalRules @($l) $cfg.config.redirectedPaths.traditionalRedirectedPaths | Should -Not -BeNullOrEmpty $cfg.config.redirectedPaths.localRedirectedPaths | Should -Not -BeNullOrEmpty } It 'Honours -GlobalIlvAware and -GlobalCow' { $cfg = New-MsixPsfMfrConfig -GlobalIlvAware $true -GlobalCow disableAll $cfg.config.ilvAware | Should -BeTrue $cfg.config.copyOnWrite | Should -Be 'disableAll' } } } |