From 124400f319e7dab576b0c1417afbabde5fa44331 Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Thu, 23 May 2019 16:16:47 +1000 Subject: [PATCH] win_get_url: ignore defender false positive in tests (#56812) --- .../library/win_defender_exclusion.ps1 | 40 +++++++++++++++++++ .../targets/win_get_url/tasks/main.yml | 12 ++++++ 2 files changed, 52 insertions(+) create mode 100644 test/integration/targets/win_get_url/library/win_defender_exclusion.ps1 diff --git a/test/integration/targets/win_get_url/library/win_defender_exclusion.ps1 b/test/integration/targets/win_get_url/library/win_defender_exclusion.ps1 new file mode 100644 index 0000000000..c6f8744a45 --- /dev/null +++ b/test/integration/targets/win_get_url/library/win_defender_exclusion.ps1 @@ -0,0 +1,40 @@ +#!powershell + +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +#Requires -Module Ansible.ModuleUtils.Legacy + +$params = Parse-Args $args -supports_check_mode $true + +$path = Get-AnsibleParam -obj $params -name "path" -type "path" -failifempty $true +$state = Get-AnsibleParam -obj $params -name "state" -type "str" -default "present" -validateset "absent", "present" + +$result = @{ + changed = $false +} + +# This is a test module, just skip instead of erroring out if we cannot set the rule +if ($null -eq (Get-Command -Name Get-MpPreference -ErrorAction SilentlyContinue)) { + $result.skipped = $true + $result.msg = "Skip as cannot set exclusion rule" + Exit-Json -obj $result +} + +$exclusions = (Get-MpPreference).ExclusionPath +if ($null -eq $exclusions) { + $exclusions = @() +} + +if ($state -eq "absent") { + if ($path -in $exclusions) { + Remove-MpPreference -ExclusionPath $path + $result.changed = $true + } +} else { + if ($path -notin $exclusions) { + Add-MpPreference -ExclusionPath $path + $result.changed = $true + } +} + +Exit-Json -obj $result diff --git a/test/integration/targets/win_get_url/tasks/main.yml b/test/integration/targets/win_get_url/tasks/main.yml index c2345536a3..74bbc8bdff 100644 --- a/test/integration/targets/win_get_url/tasks/main.yml +++ b/test/integration/targets/win_get_url/tasks/main.yml @@ -13,6 +13,13 @@ src: files/ dest: '{{ testing_dir }}' +# False positive in Windows Defender is flagging the file as a virus and removing it. We need to add an exclusion so +# the tests continue to work +- name: add exclusion for the SlimFTPd binary + win_defender_exclusion: + path: '{{ remote_tmp_dir | win_dirname }}' + state: present + - name: download SlimFTPd binary win_get_url: url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe @@ -59,3 +66,8 @@ win_file: path: '{{ slimftpd_link }}' state: absent + + - name: remove exclusion for the SlimFTPd binary + win_defender_exclusion: + path: '{{ remote_tmp_dir | win_dirname }}' + state: absent