1 #!powershell 2 3 #Requires -Module Ansible.ModuleUtils.Legacy 4 #Requires -Module Ansible.ModuleUtils.FileUtil 5 6 $ErrorActionPreference = "Stop" 7 8 $result = @{ 9 changed = $false 10 } 11 Assert-Equals($actual, $expected)12Function Assert-Equals($actual, $expected) { 13 if ($actual -cne $expected) { 14 $call_stack = (Get-PSCallStack)[1] 15 $error_msg = "AssertionError:`r`nActual: `"$actual`" != Expected: `"$expected`"`r`nLine: $($call_stack.ScriptLineNumber), Method: $($call_stack.Position.Text)" 16 Fail-Json -obj $result -message $error_msg 17 } 18 } 19 Get-PagefilePath()20Function Get-PagefilePath() { 21 $pagefile = $null 22 $cs = Get-CimInstance -ClassName Win32_ComputerSystem 23 if ($cs.AutomaticManagedPagefile) { 24 $pagefile = "$($env:SystemRoot.Substring(0, 1)):\pagefile.sys" 25 } else { 26 $pf = Get-CimInstance -ClassName Win32_PageFileSetting 27 if ($null -ne $pf) { 28 $pagefile = $pf[0].Name 29 } 30 } 31 return $pagefile 32 } 33 34 $pagefile = Get-PagefilePath 35 if ($pagefile) { 36 # Test-AnsiblePath Hidden system file 37 $actual = Test-AnsiblePath -Path $pagefile 38 Assert-Equals -actual $actual -expected $true 39 40 # Get-AnsibleItem file 41 $actual = Get-AnsibleItem -Path $pagefile 42 Assert-Equals -actual $actual.FullName -expected $pagefile 43 Assert-Equals -actual $actual.Attributes.HasFlag([System.IO.FileAttributes]::Directory) -expected $false 44 Assert-Equals -actual $actual.Exists -expected $true 45 } 46 47 # Test-AnsiblePath File that doesn't exist 48 $actual = Test-AnsiblePath -Path C:\fakefile 49 Assert-Equals -actual $actual -expected $false 50 51 # Test-AnsiblePath Directory that doesn't exist 52 $actual = Test-AnsiblePath -Path C:\fakedirectory 53 Assert-Equals -actual $actual -expected $false 54 55 # Test-AnsiblePath file in non-existant directory 56 $actual = Test-AnsiblePath -Path C:\fakedirectory\fakefile.txt 57 Assert-Equals -actual $actual -expected $false 58 59 # Test-AnsiblePath Normal directory 60 $actual = Test-AnsiblePath -Path C:\Windows 61 Assert-Equals -actual $actual -expected $true 62 63 # Test-AnsiblePath Normal file 64 $actual = Test-AnsiblePath -Path C:\Windows\System32\kernel32.dll 65 Assert-Equals -actual $actual -expected $true 66 67 # Test-AnsiblePath fails with wildcard 68 $failed = $false 69 try { 70 Test-AnsiblePath -Path C:\Windows\*.exe 71 } catch { 72 $failed = $true 73 Assert-Equals -actual $_.Exception.Message -expected "Exception calling `"GetAttributes`" with `"1`" argument(s): `"Illegal characters in path.`"" 74 } 75 Assert-Equals -actual $failed -expected $true 76 77 # Test-AnsiblePath on non file PS Provider object 78 $actual = Test-AnsiblePath -Path Cert:\LocalMachine\My 79 Assert-Equals -actual $actual -expected $true 80 81 # Test-AnsiblePath on environment variable 82 $actual = Test-AnsiblePath -Path env:SystemDrive 83 Assert-Equals -actual $actual -expected $true 84 85 # Test-AnsiblePath on environment variable that does not exist 86 $actual = Test-AnsiblePath -Path env:FakeEnvValue 87 Assert-Equals -actual $actual -expected $false 88 89 # Get-AnsibleItem doesn't exist with -ErrorAction SilentlyContinue param 90 $actual = Get-AnsibleItem -Path C:\fakefile -ErrorAction SilentlyContinue 91 Assert-Equals -actual $actual -expected $null 92 93 # Get-AnsibleItem directory 94 $actual = Get-AnsibleItem -Path C:\Windows 95 Assert-Equals -actual $actual.FullName -expected C:\Windows 96 Assert-Equals -actual $actual.Attributes.HasFlag([System.IO.FileAttributes]::Directory) -expected $true 97 Assert-Equals -actual $actual.Exists -expected $true 98 99 # ensure Get-AnsibleItem doesn't fail in a try/catch and -ErrorAction SilentlyContinue - stop's a trap from trapping it 100 try { 101 $actual = Get-AnsibleItem -Path C:\fakepath -ErrorAction SilentlyContinue 102 } catch { 103 Fail-Json -obj $result -message "this should not fire" 104 } 105 Assert-Equals -actual $actual -expected $null 106 107 $result.data = "success" 108 Exit-Json -obj $result 109