summaryrefslogtreecommitdiff
path: root/test/integration/targets
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets')
-rw-r--r--test/integration/targets/win_acl/aliases1
-rw-r--r--test/integration/targets/win_acl/defaults/main.yml5
-rw-r--r--test/integration/targets/win_acl/tasks/main.yml33
-rw-r--r--test/integration/targets/win_acl/tasks/tests.yml362
-rw-r--r--test/integration/targets/win_acl_inheritance/aliases1
-rw-r--r--test/integration/targets/win_acl_inheritance/defaults/main.yml1
-rw-r--r--test/integration/targets/win_acl_inheritance/library/test_get_acl.ps136
-rw-r--r--test/integration/targets/win_acl_inheritance/tasks/main.yml174
-rw-r--r--test/integration/targets/win_certificate_store/aliases2
-rw-r--r--test/integration/targets/win_certificate_store/defaults/main.yml4
-rw-r--r--test/integration/targets/win_certificate_store/files/root-cert.pem20
-rw-r--r--test/integration/targets/win_certificate_store/files/root-key.pem28
-rw-r--r--test/integration/targets/win_certificate_store/files/subj-cert.pem19
-rw-r--r--test/integration/targets/win_certificate_store/files/subj-key.pem28
-rw-r--r--test/integration/targets/win_certificate_store/meta/main.yml2
-rw-r--r--test/integration/targets/win_certificate_store/tasks/main.yml121
-rw-r--r--test/integration/targets/win_certificate_store/tasks/test.yml801
-rw-r--r--test/integration/targets/win_command/aliases1
-rw-r--r--test/integration/targets/win_command/files/crt_setmode.c15
-rw-r--r--test/integration/targets/win_command/tasks/main.yml255
-rw-r--r--test/integration/targets/win_copy/aliases1
-rw-r--r--test/integration/targets/win_copy/defaults/main.yml1
-rw-r--r--test/integration/targets/win_copy/files-different/vault/folder/nested-vault-file6
-rw-r--r--test/integration/targets/win_copy/files-different/vault/readme.txt5
-rw-r--r--test/integration/targets/win_copy/files-different/vault/vault-file6
-rw-r--r--test/integration/targets/win_copy/files/empty.txt0
-rw-r--r--test/integration/targets/win_copy/files/foo.txt1
-rw-r--r--test/integration/targets/win_copy/files/subdir/bar.txt1
-rw-r--r--test/integration/targets/win_copy/files/subdir/subdir2/baz.txt1
-rw-r--r--test/integration/targets/win_copy/files/subdir/subdir2/subdir3/subdir4/qux.txt1
-rw-r--r--test/integration/targets/win_copy/tasks/main.yml34
-rw-r--r--test/integration/targets/win_copy/tasks/remote_tests.yml471
-rw-r--r--test/integration/targets/win_copy/tasks/tests.yml535
-rw-r--r--test/integration/targets/win_dns_client/aliases1
-rw-r--r--test/integration/targets/win_dns_client/meta/main.yml2
-rw-r--r--test/integration/targets/win_dns_client/tasks/main.yml217
-rw-r--r--test/integration/targets/win_domain_membership/aliases1
-rw-r--r--test/integration/targets/win_domain_membership/tasks/main.yml20
-rw-r--r--test/integration/targets/win_domain_membership/tasks/tests.yml59
-rw-r--r--test/integration/targets/win_dsc/aliases5
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.psm141
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.schema.mof7
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1214
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof60
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.0/xTestDsc.psd113
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1214
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof63
-rw-r--r--test/integration/targets/win_dsc/files/xTestDsc/1.0.1/xTestDsc.psd113
-rw-r--r--test/integration/targets/win_dsc/meta/main.yml2
-rw-r--r--test/integration/targets/win_dsc/tasks/main.yml39
-rw-r--r--test/integration/targets/win_dsc/tasks/tests.yml544
-rw-r--r--test/integration/targets/win_environment/aliases1
-rw-r--r--test/integration/targets/win_environment/defaults/main.yml5
-rw-r--r--test/integration/targets/win_environment/tasks/main.yml267
-rw-r--r--test/integration/targets/win_feature/aliases1
-rw-r--r--test/integration/targets/win_feature/defaults/main.yml4
-rw-r--r--test/integration/targets/win_feature/tasks/main.yml27
-rw-r--r--test/integration/targets/win_feature/tasks/tests.yml127
-rw-r--r--test/integration/targets/win_file/aliases2
-rw-r--r--test/integration/targets/win_file/files/foo.txt1
-rw-r--r--test/integration/targets/win_file/files/foobar/directory/fileC0
-rw-r--r--test/integration/targets/win_file/files/foobar/directory/fileD0
-rw-r--r--test/integration/targets/win_file/files/foobar/fileA1
-rw-r--r--test/integration/targets/win_file/files/foobar/fileB0
-rw-r--r--test/integration/targets/win_file/meta/main.yml2
-rw-r--r--test/integration/targets/win_file/tasks/main.yml614
-rw-r--r--test/integration/targets/win_find/aliases1
-rw-r--r--test/integration/targets/win_find/defaults/main.yml2
-rw-r--r--test/integration/targets/win_find/meta/main.yml2
-rw-r--r--test/integration/targets/win_find/tasks/main.yml114
-rw-r--r--test/integration/targets/win_find/tasks/tests.yml755
-rw-r--r--test/integration/targets/win_get_url/aliases3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/file.txt1
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/file2.txt1
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/user-pass/file.txt1
-rw-r--r--test/integration/targets/win_get_url/files/ftp/user/file.txt1
-rw-r--r--test/integration/targets/win_get_url/library/win_defender_exclusion.ps140
-rw-r--r--test/integration/targets/win_get_url/meta/main.yml3
-rw-r--r--test/integration/targets/win_get_url/tasks/main.yml75
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_checksum.yml91
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_ftp.yml166
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_url.yml237
-rw-r--r--test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl28
-rw-r--r--test/integration/targets/win_group/aliases2
-rw-r--r--test/integration/targets/win_group/defaults/main.yml4
-rw-r--r--test/integration/targets/win_group/tasks/main.yml101
-rw-r--r--test/integration/targets/win_group_membership/aliases1
-rw-r--r--test/integration/targets/win_group_membership/tasks/main.yml47
-rw-r--r--test/integration/targets/win_group_membership/tasks/tests.yml320
-rw-r--r--test/integration/targets/win_hostname/aliases1
-rw-r--r--test/integration/targets/win_hostname/defaults/main.yml2
-rw-r--r--test/integration/targets/win_hostname/tasks/main.yml18
-rw-r--r--test/integration/targets/win_hostname/tasks/test.yml56
-rw-r--r--test/integration/targets/win_optional_feature/aliases3
-rw-r--r--test/integration/targets/win_optional_feature/tasks/main.yml40
-rw-r--r--test/integration/targets/win_optional_feature/tasks/tests.yml151
-rw-r--r--test/integration/targets/win_owner/aliases2
-rw-r--r--test/integration/targets/win_owner/defaults/main.yml1
-rw-r--r--test/integration/targets/win_owner/tasks/main.yml209
-rw-r--r--test/integration/targets/win_package/aliases1
-rw-r--r--test/integration/targets/win_package/defaults/main.yml35
-rw-r--r--test/integration/targets/win_package/files/bad.wsx7
-rw-r--r--test/integration/targets/win_package/files/good.wsx26
-rw-r--r--test/integration/targets/win_package/files/reboot.wsx30
-rw-r--r--test/integration/targets/win_package/handlers/main.yml15
-rw-r--r--test/integration/targets/win_package/library/win_make_appx.ps1194
-rw-r--r--test/integration/targets/win_package/meta/main.yml2
-rw-r--r--test/integration/targets/win_package/tasks/failure_tests.yml60
-rw-r--r--test/integration/targets/win_package/tasks/main.yml71
-rw-r--r--test/integration/targets/win_package/tasks/msi_tests.yml511
-rw-r--r--test/integration/targets/win_package/tasks/msix_tests.yml448
-rw-r--r--test/integration/targets/win_package/tasks/msp_tests.yml167
-rw-r--r--test/integration/targets/win_package/tasks/registry_tests.yml393
-rw-r--r--test/integration/targets/win_package/templates/registry_package.ps1.j226
-rw-r--r--test/integration/targets/win_path/aliases2
-rw-r--r--test/integration/targets/win_path/tasks/main.yml183
-rw-r--r--test/integration/targets/win_ping/aliases2
-rw-r--r--test/integration/targets/win_ping/library/win_ping_set_attr.ps131
-rw-r--r--test/integration/targets/win_ping/library/win_ping_strict_mode_error.ps130
-rw-r--r--test/integration/targets/win_ping/library/win_ping_syntax_error.ps130
-rw-r--r--test/integration/targets/win_ping/library/win_ping_throw.ps130
-rw-r--r--test/integration/targets/win_ping/library/win_ping_throw_string.ps130
-rw-r--r--test/integration/targets/win_ping/tasks/main.yml67
-rw-r--r--test/integration/targets/win_reboot/aliases2
-rw-r--r--test/integration/targets/win_reboot/tasks/main.yml70
-rw-r--r--test/integration/targets/win_reboot/templates/post_reboot.ps18
-rw-r--r--test/integration/targets/win_reg_stat/aliases1
-rw-r--r--test/integration/targets/win_reg_stat/defaults/main.yml2
-rw-r--r--test/integration/targets/win_reg_stat/meta/main.yml2
-rw-r--r--test/integration/targets/win_reg_stat/tasks/main.yml28
-rw-r--r--test/integration/targets/win_reg_stat/tasks/tests.yml377
-rw-r--r--test/integration/targets/win_reg_stat/templates/test_reg.reg.j237
-rw-r--r--test/integration/targets/win_regedit/aliases1
-rw-r--r--test/integration/targets/win_regedit/defaults/main.yml3
-rw-r--r--test/integration/targets/win_regedit/tasks/cleanup.yml18
-rw-r--r--test/integration/targets/win_regedit/tasks/create_tests.yml228
-rw-r--r--test/integration/targets/win_regedit/tasks/main.yml78
-rw-r--r--test/integration/targets/win_regedit/tasks/tests.yml737
-rw-r--r--test/integration/targets/win_service/aliases2
-rw-r--r--test/integration/targets/win_service/defaults/main.yml7
-rw-r--r--test/integration/targets/win_service/files/Program.cs16
-rw-r--r--test/integration/targets/win_service/files/SleepService.cs85
-rw-r--r--test/integration/targets/win_service/tasks/main.yml57
-rw-r--r--test/integration/targets/win_service/tasks/tests.yml912
-rw-r--r--test/integration/targets/win_service_info/aliases2
-rw-r--r--test/integration/targets/win_service_info/defaults/main.yml11
-rw-r--r--test/integration/targets/win_service_info/handlers/main.yml6
-rw-r--r--test/integration/targets/win_service_info/meta/main.yml2
-rw-r--r--test/integration/targets/win_service_info/tasks/main.yml206
-rw-r--r--test/integration/targets/win_setup/aliases1
-rw-r--r--test/integration/targets/win_setup/tasks/main.yml141
-rw-r--r--test/integration/targets/win_share/aliases1
-rw-r--r--test/integration/targets/win_share/defaults/main.yml2
-rw-r--r--test/integration/targets/win_share/tasks/main.yml43
-rw-r--r--test/integration/targets/win_share/tasks/tests.yml486
-rw-r--r--test/integration/targets/win_shell/aliases2
-rw-r--r--test/integration/targets/win_shell/tasks/main.yml331
-rw-r--r--test/integration/targets/win_slurp/aliases1
-rw-r--r--test/integration/targets/win_slurp/defaults/main.yml1
-rw-r--r--test/integration/targets/win_slurp/handlers/main.yml4
-rw-r--r--test/integration/targets/win_slurp/tasks/main.yml97
-rw-r--r--test/integration/targets/win_stat/aliases1
-rw-r--r--test/integration/targets/win_stat/defaults/main.yml2
-rw-r--r--test/integration/targets/win_stat/library/test_symlink_file.ps130
-rw-r--r--test/integration/targets/win_stat/tasks/main.yml115
-rw-r--r--test/integration/targets/win_stat/tasks/tests.yml646
-rw-r--r--test/integration/targets/win_tempfile/aliases1
-rw-r--r--test/integration/targets/win_tempfile/defaults/main.yml1
-rw-r--r--test/integration/targets/win_tempfile/tasks/main.yml231
-rw-r--r--test/integration/targets/win_template/aliases2
-rw-r--r--test/integration/targets/win_template/files/foo.dos.txt3
-rw-r--r--test/integration/targets/win_template/files/foo.unix.txt3
-rw-r--r--test/integration/targets/win_template/meta/main.yml2
-rw-r--r--test/integration/targets/win_template/tasks/main.yml291
-rw-r--r--test/integration/targets/win_template/templates/another_foo.j23
-rw-r--r--test/integration/targets/win_template/templates/foo.j23
-rw-r--r--test/integration/targets/win_template/templates/foo.utf-8.j21
-rw-r--r--test/integration/targets/win_template/templates/foo2.j23
-rw-r--r--test/integration/targets/win_template/vars/main.yml1
-rw-r--r--test/integration/targets/win_updates/aliases2
-rw-r--r--test/integration/targets/win_updates/defaults/main.yml1
-rw-r--r--test/integration/targets/win_updates/tasks/main.yml26
-rw-r--r--test/integration/targets/win_updates/tasks/tests.yml96
-rw-r--r--test/integration/targets/win_uri/aliases3
-rw-r--r--test/integration/targets/win_uri/meta/main.yml2
-rw-r--r--test/integration/targets/win_uri/tasks/main.yml547
-rw-r--r--test/integration/targets/win_user/aliases1
-rw-r--r--test/integration/targets/win_user/defaults/main.yml5
-rw-r--r--test/integration/targets/win_user/files/lockout_user.ps117
-rw-r--r--test/integration/targets/win_user/tasks/main.yml34
-rw-r--r--test/integration/targets/win_user/tasks/tests.yml455
-rw-r--r--test/integration/targets/win_user_right/aliases1
-rw-r--r--test/integration/targets/win_user_right/defaults/main.yml1
-rw-r--r--test/integration/targets/win_user_right/library/test_get_right.ps144
-rw-r--r--test/integration/targets/win_user_right/tasks/main.yml25
-rw-r--r--test/integration/targets/win_user_right/tasks/tests.yml390
-rw-r--r--test/integration/targets/win_wait_for/aliases2
-rw-r--r--test/integration/targets/win_wait_for/defaults/main.yml2
-rw-r--r--test/integration/targets/win_wait_for/tasks/main.yml322
-rw-r--r--test/integration/targets/win_wait_for/templates/http-server.ps122
-rw-r--r--test/integration/targets/win_whoami/aliases1
-rw-r--r--test/integration/targets/win_whoami/tasks/main.yml225
205 files changed, 0 insertions, 17989 deletions
diff --git a/test/integration/targets/win_acl/aliases b/test/integration/targets/win_acl/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_acl/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_acl/defaults/main.yml b/test/integration/targets/win_acl/defaults/main.yml
deleted file mode 100644
index 9999acd1ba..0000000000
--- a/test/integration/targets/win_acl/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-test_acl_path: '{{ win_output_dir }}\win_acl .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-test_acl_network_path: \\localhost\{{ test_acl_path[0:1] }}$\{{ test_acl_path[3:] }}
-# Use HKU as that path is not automatically loaded in the PSProvider making our test more complex
-test_acl_reg_path: HKU:\.DEFAULT\Ansible Test .ÅÑŚÌβŁÈ [$!@^&test(;)]
diff --git a/test/integration/targets/win_acl/tasks/main.yml b/test/integration/targets/win_acl/tasks/main.yml
deleted file mode 100644
index d322fb893a..0000000000
--- a/test/integration/targets/win_acl/tasks/main.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-- name: ensure we start with a clean dir
- win_file:
- path: '{{ test_acl_path }}'
- state: '{{ item }}'
- with_items:
- - absent
- - directory
-
-- name: ensure we start with a clean reg path
- win_regedit:
- path: '{{ test_acl_reg_path }}'
- delete_key: yes
- state: '{{ item }}'
- with_items:
- - absent
- - present
-
-- block:
- - name: run tests
- include_tasks: tests.yml
-
- always:
- - name: cleanup testing dir
- win_file:
- path: '{{ test_acl_path }}'
- state: absent
-
- - name: cleanup testing reg path
- win_regedit:
- path: '{{ test_acl_reg_path }}'
- delete_key: yes
- state: absent
diff --git a/test/integration/targets/win_acl/tasks/tests.yml b/test/integration/targets/win_acl/tasks/tests.yml
deleted file mode 100644
index 56f5273373..0000000000
--- a/test/integration/targets/win_acl/tasks/tests.yml
+++ /dev/null
@@ -1,362 +0,0 @@
-# these are very basic tests, they should be expanded greatly as this is a core module
----
-- name: get register cmd that will get ace info
- set_fact:
- test_ace_cmd: |
- # Overcome bug in Set-Acl/Get-Acl for registry paths and -LiteralPath
- New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS > $null
- Push-Location -LiteralPath (Split-Path -Path $path -Qualifier)
- $rights_key = if ((Get-Item -LiteralPath $path -Force).PSProvider.Name -eq "Registry") {
- "RegistryRights"
- } else {
- "FileSystemRights"
- }
- $ace_list = (Get-Acl -LiteralPath $path).Access | Where-Object { $_.IsInherited -eq $false } | ForEach-Object {
- @{
- rights = $_."$rights_key".ToString()
- type = $_.AccessControlType.ToString()
- identity = $_.IdentityReference.Value.ToString()
- inheritance_flags = $_.InheritanceFlags.ToString()
- propagation_flags = $_.PropagationFlags.ToString()
- }
- }
- Pop-Location
- ConvertTo-Json -InputObject @($ace_list)
-
-- name: add write rights to Guest
- win_acl:
- path: '{{ test_acl_path }}'
- type: allow
- user: Guests
- rights: Write
- register: allow_right
-
-- name: get result of add write rights to Guest
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: allow_right_actual
-
-- name: assert add write rights to Guest
- assert:
- that:
- - allow_right is changed
- - (allow_right_actual.stdout|from_json)|count == 1
- - (allow_right_actual.stdout|from_json)[0].identity == 'BUILTIN\Guests'
- - (allow_right_actual.stdout|from_json)[0].inheritance_flags == 'ContainerInherit, ObjectInherit'
- - (allow_right_actual.stdout|from_json)[0].propagation_flags == 'None'
- - (allow_right_actual.stdout|from_json)[0].rights == 'Write, Synchronize'
- - (allow_right_actual.stdout|from_json)[0].type == 'Allow'
-
-- name: add write rights to Guest (idempotent)
- win_acl:
- path: '{{ test_acl_path }}'
- type: allow
- user: Guests
- rights: Write
- register: allow_right_again
-
-- name: assert add write rights to Guest (idempotent)
- assert:
- that:
- - not allow_right_again is changed
-
-- name: remove write rights from Guest
- win_acl:
- path: '{{ test_acl_path }}'
- type: allow
- user: Guests
- rights: Write
- state: absent
- register: remove_right
-
-- name: get result of remove write rights from Guest
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: remove_right_actual
-
-- name: assert remove write rights from Guest
- assert:
- that:
- - remove_right is changed
- - remove_right_actual.stdout_lines == ["[", "", "]"]
-
-- name: remove write rights from Guest (idempotent)
- win_acl:
- path: '{{ test_acl_path }}'
- type: allow
- user: Guests
- rights: Write
- state: absent
- register: remove_right_again
-
-- name: assert remote write rights from Guest (idempotent)
- assert:
- that:
- - not remove_right_again is changed
-
-- name: add deny write rights to Guest
- win_acl:
- path: '{{ test_acl_path }}'
- type: deny
- user: Guests
- rights: Write
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: present
- register: add_deny_right
-
-- name: get result of add deny write rights to Guest
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: add_deny_right_actual
-
-- name: assert add deny write rights to Guest
- assert:
- that:
- - add_deny_right is changed
- - (add_deny_right_actual.stdout|from_json)|count == 1
- - (add_deny_right_actual.stdout|from_json)[0].identity == 'BUILTIN\Guests'
- - (add_deny_right_actual.stdout|from_json)[0].inheritance_flags == 'ContainerInherit'
- - (add_deny_right_actual.stdout|from_json)[0].propagation_flags == 'NoPropagateInherit'
- - (add_deny_right_actual.stdout|from_json)[0].rights == 'Write'
- - (add_deny_right_actual.stdout|from_json)[0].type == 'Deny'
-
-- name: add deny write rights to Guest (idempotent)
- win_acl:
- path: '{{ test_acl_path }}'
- type: deny
- user: Guests
- rights: Write
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: present
- register: add_deny_right_again
-
-- name: assert add deny write rights to Guest (idempotent)
- assert:
- that:
- - not add_deny_right_again is changed
-
-- name: remove deny write rights from Guest
- win_acl:
- path: '{{ test_acl_path }}'
- type: deny
- user: Guests
- rights: Write
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: absent
- register: remove_deny_right
-
-- name: get result of remove deny write rights from Guest
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: remove_deny_right_actual
-
-- name: assert remove deny write rights from Guest
- assert:
- that:
- - remove_deny_right is changed
- - remove_deny_right_actual.stdout_lines == ["[", "", "]"]
-
-- name: remove deny write rights from Guest (idempotent)
- win_acl:
- path: '{{ test_acl_path }}'
- type: deny
- user: Guests
- rights: Write
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: absent
- register: remove_deny_right_again
-
-- name: assert remove deny write rights from Guest (idempotent)
- assert:
- that:
- - not remove_deny_right_again is changed
-
-- name: add write rights to Guest - network
- win_acl:
- path: '{{ test_acl_network_path }}'
- type: allow
- user: Guests
- rights: Write
- register: allow_right
-
-- name: get result of add write rights to Guest - network
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: allow_right_actual
-
-- name: assert add write rights to Guest - network
- assert:
- that:
- - allow_right is changed
- - (allow_right_actual.stdout|from_json)|count == 1
- - (allow_right_actual.stdout|from_json)[0].identity == 'BUILTIN\Guests'
- - (allow_right_actual.stdout|from_json)[0].inheritance_flags == 'ContainerInherit, ObjectInherit'
- - (allow_right_actual.stdout|from_json)[0].propagation_flags == 'None'
- - (allow_right_actual.stdout|from_json)[0].rights == 'Write, Synchronize'
- - (allow_right_actual.stdout|from_json)[0].type == 'Allow'
-
-- name: remove write rights from Guest - network
- win_acl:
- path: '{{ test_acl_network_path }}'
- type: allow
- user: Guests
- rights: Write
- state: absent
- register: remove_right
-
-- name: get result of remove write rights from Guest - network
- win_shell: '$path = ''{{ test_acl_path }}''; {{ test_ace_cmd }}'
- register: remove_right_actual
-
-- name: assert remove write rights from Guest
- assert:
- that:
- - remove_right is changed
- - remove_right_actual.stdout_lines == ["[", "", "]"]
-
-- name: add write rights to Guest - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: allow
- user: Guests
- rights: WriteKey
- register: allow_right_reg
-
-- name: get result of add write rights to Guest - registry
- win_shell: '$path = ''{{ test_acl_reg_path }}''; {{ test_ace_cmd }}'
- register: allow_right_reg_actual
-
-- name: assert add write rights to Guest - registry
- assert:
- that:
- - allow_right_reg is changed
- - (allow_right_reg_actual.stdout|from_json)|count == 1
- - (allow_right_reg_actual.stdout|from_json)[0].identity == 'BUILTIN\Guests'
- - (allow_right_reg_actual.stdout|from_json)[0].inheritance_flags == 'ContainerInherit, ObjectInherit'
- - (allow_right_reg_actual.stdout|from_json)[0].propagation_flags == 'None'
- - (allow_right_reg_actual.stdout|from_json)[0].rights == 'WriteKey'
- - (allow_right_reg_actual.stdout|from_json)[0].type == 'Allow'
-
-- name: add write rights to Guest (idempotent) - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: allow
- user: Guests
- rights: WriteKey
- register: allow_right_reg_again
-
-- name: assert add write rights to Guest (idempotent) - registry
- assert:
- that:
- - not allow_right_reg_again is changed
-
-- name: remove write rights from Guest - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: allow
- user: Guests
- rights: WriteKey
- state: absent
- register: remove_right_reg
-
-- name: get result of remove write rights from Guest - registry
- win_shell: '$path = ''{{ test_acl_reg_path }}''; {{ test_ace_cmd }}'
- register: remove_right_reg_actual
-
-- name: assert remove write rights from Guest - registry
- assert:
- that:
- - remove_right_reg is changed
- - remove_right_reg_actual.stdout_lines == ["[", "", "]"]
-
-- name: remove write rights from Guest (idempotent) - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: allow
- user: Guests
- rights: WriteKey
- state: absent
- register: remove_right_reg_again
-
-- name: assert remote write rights from Guest (idempotent) - registry
- assert:
- that:
- - not remove_right_reg_again is changed
-
-- name: add deny write rights to Guest - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: deny
- user: Guests
- rights: WriteKey
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: present
- register: add_deny_right_reg
-
-- name: get result of add deny write rights to Guest - registry
- win_shell: '$path = ''{{ test_acl_reg_path }}''; {{ test_ace_cmd }}'
- register: add_deny_right_reg_actual
-
-- name: assert add deny write rights to Guest - registry
- assert:
- that:
- - add_deny_right_reg is changed
- - (add_deny_right_reg_actual.stdout|from_json)|count == 1
- - (add_deny_right_reg_actual.stdout|from_json)[0].identity == 'BUILTIN\Guests'
- - (add_deny_right_reg_actual.stdout|from_json)[0].inheritance_flags == 'ContainerInherit'
- - (add_deny_right_reg_actual.stdout|from_json)[0].propagation_flags == 'NoPropagateInherit'
- - (add_deny_right_reg_actual.stdout|from_json)[0].rights == 'WriteKey'
- - (add_deny_right_reg_actual.stdout|from_json)[0].type == 'Deny'
-
-- name: add deny write rights to Guest (idempotent) - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: deny
- user: Guests
- rights: WriteKey
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: present
- register: add_deny_right_reg_again
-
-- name: assert add deny write rights to Guest (idempotent) - registry
- assert:
- that:
- - not add_deny_right_reg_again is changed
-
-- name: remove deny write rights from Guest - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: deny
- user: Guests
- rights: WriteKey
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: absent
- register: remove_deny_right_reg
-
-- name: get result of remove deny write rights from Guest - registry
- win_shell: '$path = ''{{ test_acl_reg_path }}''; {{ test_ace_cmd }}'
- register: remove_deny_right_reg_actual
-
-- name: assert remove deny write rights from Guest - registry
- assert:
- that:
- - remove_deny_right_reg is changed
- - remove_deny_right_reg_actual.stdout_lines == ["[", "", "]"]
-
-- name: remove deny write rights from Guest (idempotent) - registry
- win_acl:
- path: '{{ test_acl_reg_path }}'
- type: deny
- user: Guests
- rights: WriteKey
- inherit: ContainerInherit
- propagation: NoPropagateInherit
- state: absent
- register: remove_deny_right_reg_again
-
-- name: assert remove deny write rights from Guest (idempotent) - registry
- assert:
- that:
- - not remove_deny_right_reg_again is changed
diff --git a/test/integration/targets/win_acl_inheritance/aliases b/test/integration/targets/win_acl_inheritance/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_acl_inheritance/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_acl_inheritance/defaults/main.yml b/test/integration/targets/win_acl_inheritance/defaults/main.yml
deleted file mode 100644
index 138063f4fe..0000000000
--- a/test/integration/targets/win_acl_inheritance/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_win_acl_inheritance_path: C:\ansible\win_acl_inheritance .ÅÑŚÌβŁÈ [$!@^&test(;)]
diff --git a/test/integration/targets/win_acl_inheritance/library/test_get_acl.ps1 b/test/integration/targets/win_acl_inheritance/library/test_get_acl.ps1
deleted file mode 100644
index c75d33ead8..0000000000
--- a/test/integration/targets/win_acl_inheritance/library/test_get_acl.ps1
+++ /dev/null
@@ -1,36 +0,0 @@
-#!powershell
-
-# WANT_JSON
-# POWERSHELL_COMMON
-
-$ErrorActionPreference = 'Stop'
-Set-StrictMode -Version 2.0
-
-$params = Parse-Args $args -supports_check_mode $false
-$path = Get-AnsibleParam -obj $params "path" -type "path" -failifempty $true
-
-$result = @{
- changed = $false
-}
-
-$acl = Get-Acl -LiteralPath $path
-
-$result.inherited = $acl.AreAccessRulesProtected -eq $false
-
-$user_details = @{}
-$acl.Access | ForEach-Object {
- $user = $_.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier]).Value
- if ($user_details.ContainsKey($user)) {
- $details = $user_details.$user
- } else {
- $details = @{
- isinherited = $false
- }
- }
- $details.isinherited = $_.IsInherited
- $user_details.$user = $details
-}
-
-$result.user_details = $user_details
-
-Exit-Json $result
diff --git a/test/integration/targets/win_acl_inheritance/tasks/main.yml b/test/integration/targets/win_acl_inheritance/tasks/main.yml
deleted file mode 100644
index 9b613276a3..0000000000
--- a/test/integration/targets/win_acl_inheritance/tasks/main.yml
+++ /dev/null
@@ -1,174 +0,0 @@
----
-# Test setup
-# Use single task to save in CI runtime
-- name: create test folders
- win_shell: |
- $ErrorActionPreference = 'Stop'
-
- $tmp_dir = '{{ test_win_acl_inheritance_path }}'
- if (Test-Path -LiteralPath $tmp_dir) {
- Remove-Item -LiteralPath $tmp_dir -Force -Recurse
- }
- New-Item -Path $tmp_dir -ItemType Directory > $null
-
- Add-Type -AssemblyName System.DirectoryServices.AccountManagement
- $current_sid = ([System.DirectoryServices.AccountManagement.UserPrincipal]::Current).Sid
- $system_sid = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList @([System.Security.Principal.WellKnownSidType]::LocalSystemSid, $null)
- $everyone_sid = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList @([System.Security.Principal.WellKnownSidType]::WorldSid, $null)
-
- $sd = New-Object -TypeName System.Security.AccessControl.DirectorySecurity
- $sd.SetAccessRuleProtection($true, $false)
- $sd.AddAccessRule(
- (New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList @(
- $system_sid,
- [System.Security.AccessControl.FileSystemRights]::FullControl,
- [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit",
- [System.Security.AccessControl.PropagationFlags]::None,
- [System.Security.AccessControl.AccessControlType]::Allow
- ))
- )
- $sd.AddAccessRule(
- (New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList @(
- $current_sid,
- [System.Security.AccessControl.FileSystemRights]::FullControl,
- [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit",
- [System.Security.AccessControl.PropagationFlags]::None,
- [System.Security.AccessControl.AccessControlType]::Allow
- ))
- )
- $sd.AddAccessRule(
- (New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList @(
- $everyone_sid,
- [System.Security.AccessControl.FileSystemRights]::Read,
- [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit",
- [System.Security.AccessControl.PropagationFlags]::None,
- [System.Security.AccessControl.AccessControlType]::Allow
- ))
- )
-
- Set-Acl -LiteralPath $tmp_dir -AclObject $sd
-
- New-Item -Path "$tmp_dir\folder" -ItemType Directory > $null
- Set-Content -LiteralPath "$tmp_dir\folder\file.txt" -Value 'a'
-
- $system_sid.Value
- $current_sid.Value
- $everyone_sid.Value
- register: test_sids # register the output SID values used for comparison tests below
-
-# Run tests
-- name: remove inheritance check
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: absent
- register: remove_check
- check_mode: True
-
-- name: get actual remove inheritance check
- test_get_acl:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- register: actual_remove_check
-
-- name: assert remove inheritance check
- assert:
- that:
- - remove_check is changed
- - actual_remove_check.inherited == True
- - actual_remove_check.user_details[test_sids.stdout_lines[0]].isinherited == True
- - actual_remove_check.user_details[test_sids.stdout_lines[1]].isinherited == True
- - actual_remove_check.user_details[test_sids.stdout_lines[2]].isinherited == True
-
-- name: remove inheritance
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: absent
- register: remove
-
-- name: get actual remove inheritance
- test_get_acl:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- register: actual_remove
-
-- name: assert remove inheritance
- assert:
- that:
- - remove is changed
- - actual_remove.inherited == False
- - actual_remove.user_details[test_sids.stdout_lines[0]].isinherited == False
- - actual_remove.user_details[test_sids.stdout_lines[1]].isinherited == False
- - actual_remove.user_details[test_sids.stdout_lines[2]].isinherited == False
-
-- name: remove inheritance again
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: absent
- register: remove_again
-
-- name: assert remove inheritance again
- assert:
- that:
- - remove_again is not changed
-
-- name: add inheritance check
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: present
- register: add_check
- check_mode: True
-
-- name: get actual add inheritance check
- test_get_acl:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- register: actual_add_check
-
-- name: assert add inheritance check
- assert:
- that:
- - add_check is changed
- - actual_add_check.inherited == False
- - actual_add_check.user_details[test_sids.stdout_lines[0]].isinherited == False
- - actual_add_check.user_details[test_sids.stdout_lines[1]].isinherited == False
- - actual_add_check.user_details[test_sids.stdout_lines[2]].isinherited == False
-
-- name: add inheritance
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: present
- register: add
-
-- name: get actual add inheritance
- test_get_acl:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- register: actual_add
-
-- name: assert add inheritance
- assert:
- that:
- - add is changed
- - actual_add.inherited == True
- - actual_add.user_details[test_sids.stdout_lines[0]].isinherited == True
- - actual_add.user_details[test_sids.stdout_lines[1]].isinherited == True
- - actual_add.user_details[test_sids.stdout_lines[2]].isinherited == True
-
-- name: add inheritance again
- win_acl_inheritance:
- path: '{{ test_win_acl_inheritance_path }}\folder'
- reorganize: True
- state: present
- register: add_again
-
-- name: assert add inheritance again
- assert:
- that:
- - add_again is not changed
-
-# Test cleanup
-- name: remove test folder
- win_file:
- path: '{{ test_win_acl_inheritance_path }}'
- state: absent
diff --git a/test/integration/targets/win_certificate_store/aliases b/test/integration/targets/win_certificate_store/aliases
deleted file mode 100644
index c46e6e61f4..0000000000
--- a/test/integration/targets/win_certificate_store/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group7
-skip/windows/2016 # Host takes a while to run and module isn't OS dependent
diff --git a/test/integration/targets/win_certificate_store/defaults/main.yml b/test/integration/targets/win_certificate_store/defaults/main.yml
deleted file mode 100644
index 19ab156654..0000000000
--- a/test/integration/targets/win_certificate_store/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-win_cert_dir: '{{win_output_dir}}\win_certificate .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-key_password: password
-subj_thumbprint: 'BD7AF104CF1872BDB518D95C9534EA941665FD27'
-root_thumbprint: 'BC05633694E675449136679A658281F17A191087'
diff --git a/test/integration/targets/win_certificate_store/files/root-cert.pem b/test/integration/targets/win_certificate_store/files/root-cert.pem
deleted file mode 100644
index edbe6b8684..0000000000
--- a/test/integration/targets/win_certificate_store/files/root-cert.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDKDCCAhCgAwIBAgIJAP1vIdGgMJv/MA0GCSqGSIb3DQEBCwUAMCgxGTAXBgNV
-BAMMEHJvb3QuYW5zaWJsZS5jb20xCzAJBgNVBAYTAlVTMCAXDTE3MTIxNTA4Mzkz
-MloYDzIwODYwMTAyMDgzOTMyWjAoMRkwFwYDVQQDDBByb290LmFuc2libGUuY29t
-MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMmq
-YT8eZY6rFQKnmScUGnnUH1tLQ+3WQpfKiWygCUSb1CNqO3J1u3pGMEqYM58LK4Kr
-Mpskv7K1tCV/EMZqGTqXAIfSLy9umlb/9C3AhL9thBPn5I9dam/EmrIZktI9/w5Y
-wBXn4toe+OopA3QkMQh9BUjUCPb9fdOI+ir7OGFZMmxXmiM64+BEeywM2oSGsdZ9
-5hU378UBu2IX4+OAV8Fbr2l6VW+Fxg/tKIOo6Bs46Pa4EZgtemOqs3kxYBOltBTb
-vFcLsLa4KYVu5Ge5YfB0Axfaem7PoP8IlMs8gxyojZ/r0o5hzxUcYlL/h8GeeoLW
-PFFdiAS+UgxWINOqNXMCAwEAAaNTMFEwHQYDVR0OBBYEFLp9k4LmOnAR4ROrqhb+
-CFdbk2+oMB8GA1UdIwQYMBaAFLp9k4LmOnAR4ROrqhb+CFdbk2+oMA8GA1UdEwEB
-/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGksycHsjGbXfWfuhQh+CvXk/A2v
-MoNgiHtNMTGliVNgoVp1B1rj4x9xyZ8YrO8GAmv8jaCwCShd0B5Ul4aZVk1wglVv
-lFAwb4IAZN9jv9+fw5BRzQ2tLhkVWIEwx6pZkhGhhjBvMaplLN5JwBtsdZorFbm7
-wuKiUKcFAM28acoOhCmOhgyNNBZpZn5wXaQDY43AthJOhitAV7vph4MPUkwIJnOh
-MA5GJXEqS58TE9z9pkhQnn9598G8tmOXyA2erAoM9JAXM3EYHxVpoHBb9QRj6WAw
-XVBo6qRXkwjNEM5CbnD4hVIBsdkOGsDrgd4Q5izQZ3x+jFNkdL/zPsXjJFw=
------END CERTIFICATE-----
-
diff --git a/test/integration/targets/win_certificate_store/files/root-key.pem b/test/integration/targets/win_certificate_store/files/root-key.pem
deleted file mode 100644
index c2d641d449..0000000000
--- a/test/integration/targets/win_certificate_store/files/root-key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAyaphPx5ljqsVAqeZJxQaedQfW0tD7dZCl8qJbKAJRJvUI2o7
-cnW7ekYwSpgznwsrgqsymyS/srW0JX8QxmoZOpcAh9IvL26aVv/0LcCEv22EE+fk
-j11qb8SashmS0j3/DljAFefi2h746ikDdCQxCH0FSNQI9v1904j6Kvs4YVkybFea
-Izrj4ER7LAzahIax1n3mFTfvxQG7Yhfj44BXwVuvaXpVb4XGD+0og6joGzjo9rgR
-mC16Y6qzeTFgE6W0FNu8VwuwtrgphW7kZ7lh8HQDF9p6bs+g/wiUyzyDHKiNn+vS
-jmHPFRxiUv+HwZ56gtY8UV2IBL5SDFYg06o1cwIDAQABAoIBAFRpZNsutgPJyLmb
-vZeF6q8kAxwLnRtom+c9d9hoBHkbYOiSBuAaN6cuyffvTWw9GLFRR5V5BGSheg5X
-6YWj03uayTYQ3H9WJHRWHrcn5mjaRnaukhUQXQT7nmT+H16xZJl0vLJupZ33aOla
-0X9DxuJusk+RsU7xPEHXDCABl8/m7v3cFttUBughGBG5oDuzKlFbhXPwA8/yeJ1v
-qdXKxENi9HO4X5fH1l0vFNIhEqvUVKjw/AzapYtr+bv1wssoNAzvhT7CFa2GjPQ0
-Ibcq3+RxyAN4iQVITy86Yl4LW1jLx63wbg9q1WG/ca9K/OEAuT7ebJNeMYmM+kf7
-sf6A8wECgYEA+nnLJ4QtANtAs6nmDC106DTx1cOf3Yq9JOAvmGLomF/8SrUzZbXM
-F+JcZcttXuuFIFcZD0K7fFP9sx2ITH//BS5V0B0x7Z2olWexVjR6/5pOVFPu19ow
-tyDCNi5BlTPbvSr/fAxjmO9SgVTb8oG66i4mi0Xn5bp1E441KdvNsHECgYEAzhz/
-+SjFJlJcGNvMmgfAbfv6McUv7TKrPIvVkA++Gi5QdqJjkuzL1uTfgWIY/9iDByMd
-W36rFTkYrw6LTMF2dkMjul72Kkco3UExSzOmF4lFmCt3DZW6a6CExKpwk4kF2RnX
-GRD0FoZZown3RbPHi9rsWxjyVy/yKGwnvXYndiMCgYEA6rnIUDfllK/jansFQtQ2
-goVbPGAfKJYjurL852mJX4JUBA7bI63CnX9b52lEDXfZQf1dVpfK6zAqx/gdCtPI
-QSqy8FzrtSnSGnEaFxcHTRFl5lDhuxaWIIdqeSvP+eqnOhdZZP6XN3LPdrP3isNY
-Tq0BIfNY5khd/v19hMSfdYECgYBQ8h6tMY/LrwiwUpIV4/l0uELYDQL3erC5RImI
-3EXiblH3ZWsJpqmfKZ+FZos+3z8GLIo5BpQV76h8B5A5grkNVOzRIr42eF/aFOJR
-EGWoVKbaTiehVC40WoQJ4I35wxRi4L0TAQ97USQe3akY3LP/fujYFgIGr7PAoEkz
-JRX2VQKBgQDir8/a3FZVo6nYI8zIhBz8xqZJIgvlYQqiQFFwADu5eNPMvNIaVy+6
-7HKibGM2jPkuS2KHdc8WUp8IrRRMui04qE7kRxVu41QXEBfPiDvrvAQf8SfJe631
-XvYeZr7HKY4NI5J0ENcb54d7DLQ8a1/wL/GeLVrfUWG35Ra5MW57Og==
------END RSA PRIVATE KEY-----
-
diff --git a/test/integration/targets/win_certificate_store/files/subj-cert.pem b/test/integration/targets/win_certificate_store/files/subj-cert.pem
deleted file mode 100644
index 6d9ec39c73..0000000000
--- a/test/integration/targets/win_certificate_store/files/subj-cert.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC0TCCAbkCCQC/MtOBa1UDpzANBgkqhkiG9w0BAQsFADAoMRkwFwYDVQQDDBBy
-b290LmFuc2libGUuY29tMQswCQYDVQQGEwJVUzAgFw0xNzEyMTUwODU2MzBaGA8y
-MDg2MDEwMjA4NTYzMFowKzEcMBoGA1UEAwwTc3ViamVjdC5hbnNpYmxlLmNvbTEL
-MAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDszqdF
-So3GlVP1xUnN4bSPrFRFiOl/Mqup0Zn5UJJUR9wLnRD+OLcq7kKin6hYqozSu7cC
-+BnWQoq7vGSSNVqv7BqFMwzGJt9IBUQv0UqIQkA/duUdKdAiMn2PQRsNDnkWEbTj
-4xsitItVNv84cDG0lkZBYyTgfyZlZLZWplkpUQkrZhoFCekZRJ+ODrqNW3W560rr
-OUIh+HiQeBqocat6OdxgICBqpUh8EVo1iha3DXjGN08q5utg6gmbIl2VBaVJjfyd
-wnUSqHylJwh6WCIEh+HXsn4ndfNWSN/fDqvi5I10V1j6Zos7yqQf8qAezUAm6eSq
-hLgZz0odq9DsO4HHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFK5mVIJ2D+kI0kk
-sxnW4ibWFjzlYFYPYrZg+2JFIVTbKBg1YzyhuIKm0uztqRxQq5iLn/C/uponHoqF
-7KDQI37KAJIQdgSva+mEuO9bZAXg/eegail2hN6np7HjOKlPu23s40dAbFrbcOWP
-VbsBEPDP0HLv6OgbQWzNlE9HO1b7pX6ozk3q4ULO7IR85P6OHYsBBThL+qsOTzg/
-gVknuB9+n9hgNqZcAcXBLDetOM9aEmYJCGk0enYP5UGLYpseE+rTXFbRuHTPr1o6
-e8BetiSWS/wcrV4ZF5qr9NiYt5eD6JzTB5Rn5awxxj0FwMtrBu003lLQUWxsuTzz
-35/RLY4=
------END CERTIFICATE-----
-
diff --git a/test/integration/targets/win_certificate_store/files/subj-key.pem b/test/integration/targets/win_certificate_store/files/subj-key.pem
deleted file mode 100644
index 51a150afe6..0000000000
--- a/test/integration/targets/win_certificate_store/files/subj-key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA7M6nRUqNxpVT9cVJzeG0j6xURYjpfzKrqdGZ+VCSVEfcC50Q
-/ji3Ku5Cop+oWKqM0ru3AvgZ1kKKu7xkkjVar+wahTMMxibfSAVEL9FKiEJAP3bl
-HSnQIjJ9j0EbDQ55FhG04+MbIrSLVTb/OHAxtJZGQWMk4H8mZWS2VqZZKVEJK2Ya
-BQnpGUSfjg66jVt1uetK6zlCIfh4kHgaqHGrejncYCAgaqVIfBFaNYoWtw14xjdP
-KubrYOoJmyJdlQWlSY38ncJ1Eqh8pScIelgiBIfh17J+J3XzVkjf3w6r4uSNdFdY
-+maLO8qkH/KgHs1AJunkqoS4Gc9KHavQ7DuBxwIDAQABAoIBAQDfjqBfS+jYZrUi
-uqPYV5IMaNYN5xj4Wi+xXA0OT0A1jLlxxU/7kDNrtg72U9+sBSZ483nstag+nAc5
-ALu5Q+FfX3gR84XFs4DrDv22XtEMHe9leqsFgynYfu4GRaJyCw3JBeJNmWNOuj8n
-rYn4EAL8xzmAFUcFIURwSEnTN6vI0cS09nQukz+9CIBuGr7TPMET8YlATDJcH+Ua
-EGZ9MAFXdKF6adC2nrCVBDNr8mUEpK1XdQcPH2bvcTuZ3Jj5AF2rOrcHq4FZUm97
-8PaMH6Sarxhwl+ycwrKbU5aEzUYTk67k0V6m9lyvH9z3O3Y84Tr3cZZ5WxdnG6Ri
-72MFlfgRAoGBAP8wA+KWJ/ttmEXAoSX4J2fPl7X1RhR+1zPNdLY7iX0uNstL8IFH
-vUN9JHi1Tr7llav+2bUTOu2EMDVmDWZH0s/qKOn+GmqIQLp0441fVAiamTcgwGKE
-Wwsu4dg10IJ9akHIIbrILT0CvRcIRf67EYLBj3ZwfR+wF1ncefbsxWA9AoGBAO2P
-qGMn+yrIi5DZF23x6iD2Y7bIdlUmqIqwb99XhW+3YJmRuh1EuN6XP2bIveRa9xvm
-Q7bbcQM0Yv2c7eTyxpzz2I4bmnccVbs6M1VhtkyQEy5+X5yOl9wnitaaUrbWFy/w
-kDPuISjLl3xDlxd6dbjf70fkG5oogx5c5toEyWZTAoGAK1CHGErMdozfr9dGgx9f
-8Or3oVcEki4FcTGKgfQRHkJd4pv9MrRul6oCKsr7lsN5aDxVz7p34iDx3d54n8fJ
-LKleUHllGngOJJf6l+B6bwtuvkC85vv4SCmpA/3+amfHRWsm7oFTzGtOlT4+Q0KV
-clBQfZYSZvKIxCP8P8ForzECgYEAjDOad1qjOy68X7Ifx71cJjQDyV4pqDt2gNN8
-Ut1+XN5m3ntI0fk6+fNdcbXLjDe7WvXcxNBhtDh4q6CwLcyyNvMavVPBJ8bLOgIx
-RZSzWCA3kdr3ZpgpO78Ci4DsjAdyC9L36A4D9+Wf87CYPT0CuSdAOrd/Ks36BDNj
-8wucKQ0CgYAaRwQ18nkemrpQ/+EQgEWnWfqgB+6T4ygZ4ZTym0FAtG7CdLxvCi8V
-toyn+zi+yFTRFXHDmvg9HLIIMK/hRQjgc8Ns5nDwgQlGwCZTvjVbD4anCr1IWuky
-owvxKWsHseNilKrnAk2maQxrrrpSk8QWrp2CFw04LsWGTxtFvstBmg==
------END RSA PRIVATE KEY-----
-
diff --git a/test/integration/targets/win_certificate_store/meta/main.yml b/test/integration/targets/win_certificate_store/meta/main.yml
deleted file mode 100644
index bdea853d75..0000000000
--- a/test/integration/targets/win_certificate_store/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- prepare_win_tests
diff --git a/test/integration/targets/win_certificate_store/tasks/main.yml b/test/integration/targets/win_certificate_store/tasks/main.yml
deleted file mode 100644
index 86bf3baedd..0000000000
--- a/test/integration/targets/win_certificate_store/tasks/main.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-### keys in files/ have been generated with
-# generate root private key
-# openssl genrsa -aes256 -out enckey.pem 2048
-# openssl rsa -in envkey.pem -out root-key.pem
-#
-# generate root certificate
-# openssl req -x509 -key root-key.pem -days 24855 -out root-vert.pem -subj "/CN=root.ansible.com/C=US"
-#
-# generate subject private key
-# openssl genrsa -aes256 -out enckey.pem 2048
-# openssl rsa -in enckey.pem -out subj-key.pem
-#
-# generate subject certificate
-# openssl req -new -key subj-key.pem -out cert.csr -subj "/CN=subject.ansible.com/C=US"
-# openssl x509 -req -in cert.csr -CA root-cert.pem -CAkey root-key.pem -CAcreateserial -out subj-cert.pem -days 24855
-###
----
-- name: ensure test dir is present
- win_file:
- path: '{{win_cert_dir}}\exported'
- state: directory
-
-- name: ensure certificates are removed from store before test
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
-- name: ensure certificates are removed from custom store before test
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- store_name: TrustedPeople
- store_location: CurrentUser
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
-# these files are created on the fly so we don't store binary in the git repo
-- name: create PKCS12 without password
- command: 'openssl pkcs12 -export -out subj-cert-without-pass.pfx -inkey subj-key.pem -in subj-cert.pem -passout pass:'
- args:
- chdir: '{{role_path}}/files'
- delegate_to: localhost
- run_once: yes
-
-- name: create PKCS12 with password
- command: 'openssl pkcs12 -export -out subj-cert-with-pass.pfx -inkey subj-key.pem -in subj-cert.pem -passout pass:{{key_password}}'
- args:
- chdir: '{{role_path}}/files'
- delegate_to: localhost
- run_once: yes
-
-- name: create DER encoded cert
- command: openssl x509 -outform der -in subj-cert.pem -out subj-cert.cer
- args:
- chdir: '{{role_path}}/files'
- delegate_to: localhost
- run_once: yes
-
-- name: create PEM encoded PKCS7 file
- command: openssl crl2pkcs7 -nocrl -certfile subj-cert.pem -certfile root-cert.pem -out chain.pem
- args:
- chdir: '{{role_path}}/files'
- delegate_to: localhost
- run_once: yes
-
-- name: create DER encoded PKCS7 file
- command: openssl crl2pkcs7 -nocrl -certfile subj-cert.pem -certfile root-cert.pem -out chain.p7b -outform der
- args:
- chdir: '{{role_path}}/files'
- delegate_to: localhost
- run_once: yes
-
-- name: copy across test cert files
- win_copy:
- src: files/
- dest: '{{win_cert_dir}}'
-
-- block:
- - name: run tests
- include_tasks: test.yml
-
- always:
- - name: ensure generated keys are deleted
- file:
- path: '{{role_path}}/files/{{item}}'
- state: absent
- delegate_to: localhost
- run_once: yes
- with_items:
- - subj-cert-with-pass.pfx
- - subj-cert-without-pass.pfx
- - subj-cert.cer
- - chain.pem
- - chain.p7b
-
- - name: ensure certificates are removed from store after test
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
- - name: ensure certificates are removed from custom store after test
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- store_name: TrustedPeople
- store_location: CurrentUser
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
- - name: ensure test dir is deleted
- win_file:
- path: '{{win_cert_dir}}'
- state: absent
diff --git a/test/integration/targets/win_certificate_store/tasks/test.yml b/test/integration/targets/win_certificate_store/tasks/test.yml
deleted file mode 100644
index 05e6717162..0000000000
--- a/test/integration/targets/win_certificate_store/tasks/test.yml
+++ /dev/null
@@ -1,801 +0,0 @@
----
-- name: fail with invalid store location
- win_certificate_store:
- state: present
- path: '{{win_cert_dir}}\subj-cert.pem'
- store_location: FakeLocation
- register: fail_fake_location
- failed_when: "fail_fake_location.msg != 'value of store_location must be one of: CurrentUser, LocalMachine. Got no match for: FakeLocation'"
-
-- name: fail with invalid store name
- win_certificate_store:
- state: present
- path: '{{win_cert_dir}}\subj-cert.pem'
- store_name: FakeName
- register: fail_fake_name
- failed_when: "fail_fake_name.msg != 'value of store_name must be one of: AddressBook, AuthRoot, CertificateAuthority, Disallowed, My, Root, TrustedPeople, TrustedPublisher. Got no match for: FakeName'"
-
-- name: fail when state=present and no path is set
- win_certificate_store:
- state: present
- register: fail_present_no_path
- failed_when: "fail_present_no_path.msg != 'state is present but all of the following are missing: path'"
-
-- name: fail when state=exported and no path is set
- win_certificate_store:
- state: exported
- thumbprint: ABC
- register: fail_export_no_path
- failed_when: "fail_export_no_path.msg != 'state is exported but all of the following are missing: path'"
-
-- name: fail when state=exported and no thumbprint is set
- win_certificate_store:
- state: exported
- path: '{{win_cert_dir}}'
- register: fail_export_no_thumbprint
- failed_when: "fail_export_no_thumbprint.msg != 'state is exported but all of the following are missing: thumbprint'"
-
-- name: fail to export thumbprint when path is a dir
- win_certificate_store:
- state: exported
- thumbprint: '{{subj_thumbprint}}'
- path: '{{win_cert_dir}}'
- register: fail_export_path_is_dir
- failed_when: fail_export_path_is_dir.msg != "Cannot export cert to path '" + win_cert_dir + "' as it is a directory"
-
-- name: fail when state=absent and not path or thumbprint is set
- win_certificate_store:
- state: absent
- register: fail_absent_no_path_or_thumbprint
- failed_when: "fail_absent_no_path_or_thumbprint.msg != 'state is absent but any of the following are missing: path, thumbprint'"
-
-- name: import pem certificate (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.pem'
- state: present
- register: import_pem_check
- check_mode: yes
-
-- name: get result of import pem certificate (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pem_result_check
-
-- name: assert results of import pem certificate (check)
- assert:
- that:
- - import_pem_check is changed
- - import_pem_check.thumbprints == [subj_thumbprint]
- - import_pem_result_check.stdout_lines[0] == "False"
-
-- name: import pem certificate
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.pem'
- state: present
- register: import_pem
-
-- name: get result of import pem certificate
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pem_result
-
-- name: assert results of import pem certificate
- assert:
- that:
- - import_pem is changed
- - import_pem.thumbprints == [subj_thumbprint]
- - import_pem_result.stdout_lines[0] == "True"
-
-- name: import pem certificate (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.pem'
- state: present
- register: import_pem_again
-
-- name: assert results of import pem certificate (idempotent)
- assert:
- that:
- - not import_pem_again is changed
-
-- name: remove certificate based on thumbprint (check)
- win_certificate_store:
- thumbprint: '{{subj_thumbprint}}'
- state: absent
- register: remove_thumbprint_check
- check_mode: yes
-
-- name: get result of remove certificate based on thumbprint (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: remove_thumbprint_result_check
-
-- name: assert results of remove certificate based on thumbprint (check)
- assert:
- that:
- - remove_thumbprint_check is changed
- - remove_thumbprint_check.thumbprints == [subj_thumbprint]
- - remove_thumbprint_result_check.stdout_lines[0] == "True"
-
-- name: remove certificate based on thumbprint
- win_certificate_store:
- thumbprint: '{{subj_thumbprint}}'
- state: absent
- register: remove_thumbprint
-
-- name: get result of remove certificate based on thumbprint
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: remove_thumbprint_result
-
-- name: assert results of remove certificate based on thumbprint
- assert:
- that:
- - remove_thumbprint is changed
- - remove_thumbprint.thumbprints == [subj_thumbprint]
- - remove_thumbprint_result.stdout_lines[0] == "False"
-
-- name: remove certificate based on thumbprint (idempotent)
- win_certificate_store:
- thumbprint: '{{subj_thumbprint}}'
- state: absent
- register: remove_thumbprint_again
-
-- name: assert results of remove certificate based on thumbprint (idempotent)
- assert:
- that:
- - not remove_thumbprint_again is changed
-
-- name: import der certificate (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: present
- register: import_der_check
- check_mode: yes
-
-- name: get result of import der certificate (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_der_result_check
-
-- name: assert results of import der certificate (check)
- assert:
- that:
- - import_der_check is changed
- - import_der_check.thumbprints == [subj_thumbprint]
- - import_der_result_check.stdout_lines[0] == "False"
-
-- name: import der certificate
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: present
- register: import_der
-
-- name: get result of import der certificate
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_der_result
-
-- name: assert results of import der certificate
- assert:
- that:
- - import_der is changed
- - import_der.thumbprints == [subj_thumbprint]
- - import_der_result.stdout_lines[0] == "True"
-
-- name: import der certificate (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: present
- register: import_der_again
-
-- name: assert results of import der certificate (idempotent)
- assert:
- that:
- - not import_der_again is changed
-
-- name: remove certificate based on path (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: absent
- register: remove_path_check
- check_mode: yes
-
-- name: get result of remove certificate based on path (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: remove_path_result_check
-
-- name: assert results of remove certificate based on path (check)
- assert:
- that:
- - remove_path_check is changed
- - remove_path_check.thumbprints == [subj_thumbprint]
- - remove_path_result_check.stdout_lines[0] == "True"
-
-- name: remove certificate based on path
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: absent
- register: remove_path
-
-- name: get result of remove certificate based on path
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: remove_path_result
-
-- name: assert results of remove certificate based on path
- assert:
- that:
- - remove_path is changed
- - remove_path.thumbprints == [subj_thumbprint]
- - remove_path_result.stdout_lines[0] == "False"
-
-- name: remove certificate based on path (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert.cer'
- state: absent
- register: remove_path_again
-
-- name: assert results of remove certificate based on path (idempotent)
- assert:
- that:
- - not remove_path_again is changed
-
-- name: import PEM encoded p7b chain (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.pem'
- state: present
- register: import_pem_p7b_check
- check_mode: yes
-
-- name: get result of subj in p7b chain (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pem_p7b_subj_result_check
-
-- name: get result of root in p7b chain (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{root_thumbprint}}" }) { $true } else { $false }
- register: import_pem_p7b_root_result_check
-
-- name: assert results of import PEM encoded p7b chain (check)
- assert:
- that:
- - import_pem_p7b_check is changed
- - import_pem_p7b_check.thumbprints|count == 2
- - subj_thumbprint in import_pem_p7b_check.thumbprints
- - root_thumbprint in import_pem_p7b_check.thumbprints
- - import_pem_p7b_subj_result_check.stdout_lines[0] == "False"
- - import_pem_p7b_root_result_check.stdout_lines[0] == "False"
-
-- name: import PEM encoded p7b chain
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.pem'
- state: present
- register: import_pem_p7b
-
-- name: get result of subj in p7b chain
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pem_p7b_subj_result
-
-- name: get result of root in p7b chain
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{root_thumbprint}}" }) { $true } else { $false }
- register: import_pem_p7b_root_result
-
-- name: assert results of import PEM encoded p7b chain
- assert:
- that:
- - import_pem_p7b is changed
- - import_pem_p7b.thumbprints|count == 2
- - subj_thumbprint in import_pem_p7b.thumbprints
- - root_thumbprint in import_pem_p7b.thumbprints
- - import_pem_p7b_subj_result.stdout_lines[0] == "True"
- - import_pem_p7b_root_result.stdout_lines[0] == "True"
-
-- name: import PEM encoded p7b chain (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.pem'
- state: present
- register: import_pem_p7b_again
-
-- name: assert results of import PEM encoded p7b chain (idempotent)
- assert:
- that:
- - not import_pem_p7b_again is changed
-
-- name: remove p7b chain certs
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
-- name: import DER encoded p7b chain into custom store (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.p7b'
- state: present
- store_name: TrustedPeople
- store_location: CurrentUser
- register: import_der_p7b_check
- check_mode: yes
-
-- name: get result of subj in p7b chain in custom store (check)
- win_shell: if (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_der_p7b_subj_result_check
-
-- name: get result of root in p7b chain in custom store (check)
- win_shell: if (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{root_thumbprint}}" }) { $true } else { $false }
- register: import_der_p7b_root_result_check
-
-- name: assert results of import DER encoded p7b chain into custom store (check)
- assert:
- that:
- - import_der_p7b_check is changed
- - import_der_p7b_check.thumbprints|count == 2
- - subj_thumbprint in import_der_p7b_check.thumbprints
- - root_thumbprint in import_der_p7b_check.thumbprints
- - import_der_p7b_subj_result_check.stdout_lines[0] == "False"
- - import_der_p7b_root_result_check.stdout_lines[0] == "False"
-
-- name: import DER encoded p7b chain into custom store
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.p7b'
- state: present
- store_name: TrustedPeople
- store_location: CurrentUser
- register: import_der_p7b
-
-- name: get result of subj in p7b chain in custom store
- win_shell: if (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_der_p7b_subj_result
-
-- name: get result of root in p7b chain in custom store
- win_shell: if (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{root_thumbprint}}" }) { $true } else { $false }
- register: import_der_p7b_root_result
-
-- name: assert results of import DER encoded p7b chain into custom store
- assert:
- that:
- - import_der_p7b is changed
- - import_der_p7b.thumbprints|count == 2
- - subj_thumbprint in import_der_p7b.thumbprints
- - root_thumbprint in import_der_p7b.thumbprints
- - import_der_p7b_root_result.stdout_lines[0] == "True"
- - import_der_p7b_root_result.stdout_lines[0] == "True"
-
-- name: import DER encoded p7b chain into custom store (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\chain.p7b'
- state: present
- store_name: TrustedPeople
- store_location: CurrentUser
- register: import_der_p7b_again
-
-- name: assert results of import DER encoded p7b chain into custom store (idempotent)
- assert:
- that:
- - not import_der_p7b_again is changed
-
-- name: remove p7b chain certs from custom store
- win_certificate_store:
- thumbprint: '{{item}}'
- state: absent
- store_name: TrustedPeople
- store_location: CurrentUser
- with_items:
- - '{{subj_thumbprint}}'
- - '{{root_thumbprint}}'
-
-- name: import pfx without password and non exportable (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-without-pass.pfx'
- state: present
- key_exportable: no
- vars: &become_vars
- ansible_become: yes
- ansible_become_method: runas
- ansible_become_user: '{{ansible_user}}'
- ansible_become_pass: '{{ansible_password}}'
- register: import_pfx_without_pass_check
- check_mode: yes
-
-- name: get results of import pfx without password and non exportable (check)
- win_shell: if (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pfx_without_pass_result_check
-
-- name: assert results of import pfx without password and non exportable (check)
- assert:
- that:
- - import_pfx_without_pass_check is changed
- - import_pfx_without_pass_check.thumbprints == [subj_thumbprint]
- - import_pfx_without_pass_result_check.stdout_lines[0] == "False"
-
-- name: import pfx without password and non exportable
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-without-pass.pfx'
- state: present
- key_exportable: no
- vars: *become_vars
- register: import_pfx_without_pass
-
-- name: get results of import pfx without password and non exportable
- win_shell: (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }).PrivateKey.CspKeyContainerInfo.Exportable
- vars: *become_vars
- register: import_pfx_without_pass_result
-
-- name: assert results of import pfx without password and non exportable
- assert:
- that:
- - import_pfx_without_pass is changed
- - import_pfx_without_pass.thumbprints == [subj_thumbprint]
- - import_pfx_without_pass_result.stdout_lines[0] == "False"
-
-- name: import pfx without password and non exportable (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-without-pass.pfx'
- state: present
- key_exportable: no
- vars: *become_vars
- register: import_pfx_without_pass_again
-
-- name: assert results of import pfx without password and non exportable (idempotent)
- assert:
- that:
- - not import_pfx_without_pass_again is changed
-
-- name: fail import pfx with password and none set
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-with-pass.pfx'
- state: present
- store_location: CurrentUser
- store_name: TrustedPeople
- register: fail_import_pfx_with_password
- failed_when: "'Failed to load cert from file' not in fail_import_pfx_with_password.msg and 'The specified network password is not correct' not in fail_import_pfx_with_password.msg"
-
-- name: import pfx with password (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-with-pass.pfx'
- state: present
- password: '{{key_password}}'
- store_location: CurrentUser
- store_name: TrustedPeople
- register: import_pfx_with_pass_check
- vars: *become_vars
- check_mode: yes
-
-- name: get results of import pfx with password (check)
- win_shell: if (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }) { $true } else { $false }
- register: import_pfx_with_pass_result_check
-
-- name: assert results of import pfx with password (check)
- assert:
- that:
- - import_pfx_with_pass_check is changed
- - import_pfx_with_pass_check.thumbprints == [subj_thumbprint]
- - import_pfx_with_pass_result_check.stdout_lines[0] == "False"
-
-- name: import pfx with password
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-with-pass.pfx'
- state: present
- password: '{{key_password}}'
- store_location: CurrentUser
- store_name: TrustedPeople
- vars: *become_vars
- register: import_pfx_with_pass
-
-- name: get results of import pfx with password
- win_shell: (Get-ChildItem -Path Cert:\CurrentUser\TrustedPeople | Where-Object { $_.Thumbprint -eq "{{subj_thumbprint}}" }).PrivateKey.CspKeyContainerInfo.Exportable
- vars: *become_vars
- register: import_pfx_with_pass_result
-
-- name: assert results of import pfx with password
- assert:
- that:
- - import_pfx_with_pass is changed
- - import_pfx_with_pass.thumbprints == [subj_thumbprint]
- - import_pfx_with_pass_result.stdout_lines[0] == "True"
-
-- name: import pfx with password (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\subj-cert-with-pass.pfx'
- state: present
- password: '{{key_password}}'
- store_location: CurrentUser
- store_name: TrustedPeople
- vars: *become_vars
- register: import_pfx_with_pass_again
-
-- name: assert results of import pfx with password (idempotent)
- assert:
- that:
- - not import_pfx_with_pass_again is changed
-
-- name: import root cert for export tests
- win_certificate_store:
- path: '{{win_cert_dir}}\root-cert.pem'
- state: present
-
-- name: export cert as pem (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.pem'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pem
- register: export_pem_check
- check_mode: yes
-
-- name: get result of export cert as pem (check)
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.pem'
- register: export_pem_result_check
-
-- name: assert results of export cert as pem (check)
- assert:
- that:
- - export_pem_check is changed
- - export_pem_check.thumbprints == [subj_thumbprint]
- - export_pem_result_check.stat.exists == False
-
-- name: export cert as pem
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.pem'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pem
- register: export_pem
-
-- name: get result of export cert as pem
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.pem'
- register: export_pem_result
-
-- name: assert results of export cert as pem
- assert:
- that:
- - export_pem is changed
- - export_pem.thumbprints == [subj_thumbprint]
- - export_pem_result.stat.checksum == '1ebf5467d18230e9f611940a74d12f1d0bc819b7'
-
-- name: export cert as pem (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.pem'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pem
- register: export_pem_again
-
-- name: assert results of export cert as pem
- assert:
- that:
- - not export_pem_again is changed
-
-- name: export cert as der (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.cer'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: der
- register: export_der_check
- check_mode: yes
-
-- name: get result of export cert as der (check)
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.cer'
- register: export_der_result_check
-
-- name: assert results of export cert as der (check)
- assert:
- that:
- - export_der_check is changed
- - export_der_check.thumbprints == [subj_thumbprint]
- - export_der_result_check.stat.exists == False
-
-- name: export cert as der
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.cer'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: der
- register: export_der
-
-- name: get result of export cert as der
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.cer'
- register: export_der_result
-
-- name: assert results of export cert as der
- assert:
- that:
- - export_der is changed
- - export_der.thumbprints == [subj_thumbprint]
- - export_der_result.stat.checksum == 'bd7af104cf1872bdb518d95c9534ea941665fd27'
-
-- name: export cert as der (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.cer'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: der
- register: export_der_again
-
-- name: assert results of export cert as der
- assert:
- that:
- - not export_der_again is changed
-
-- name: export cert as der replacing pem
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.pem'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: der
- register: export_der_over_pem
-
-- name: get result of export cert as der replacing pem
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.pem'
- register: export_der_over_pem_result
-
-- name: assert results of export cert as der replacing pem
- assert:
- that:
- - export_der_over_pem is changed
- - export_der_over_pem.thumbprints == [subj_thumbprint]
- - export_der_over_pem_result.stat.checksum == 'bd7af104cf1872bdb518d95c9534ea941665fd27'
-
-- name: export cert as pem replacing der
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert.cer'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pem
- register: export_pem_over_der
-
-- name: get result of export cert as pem replacing der
- win_stat:
- path: '{{win_cert_dir}}\exported\cert.cer'
- register: export_pem_over_der_result
-
-- name: assert results of export cert as pem replacing der
- assert:
- that:
- - export_pem_over_der is changed
- - export_pem_over_der.thumbprints == [subj_thumbprint]
- - export_pem_over_der_result.stat.checksum == '1ebf5467d18230e9f611940a74d12f1d0bc819b7'
-
-- name: export cert with key and password as pfx (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- password: '{{key_password}}'
- register: export_pfx_with_pass_check
- vars: *become_vars
- check_mode: yes
-
-- name: get result of export cert with key and password as pfx (check)
- win_stat:
- path: '{{win_cert_dir}}\exported\cert-pass.pfx'
- register: export_pfx_with_pass_result_check
-
-- name: assert results of export cert with key and password as pfx (check)
- assert:
- that:
- - export_pfx_with_pass_check is changed
- - export_pfx_with_pass_check.thumbprints == [subj_thumbprint]
- - export_pfx_with_pass_result_check.stat.exists == False
-
-- name: export cert with key and password as pfx
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- password: '{{key_password}}'
- vars: *become_vars
- register: export_pfx_with_pass
-
-- name: get result of export cert with key and password as pfx
- win_shell: |
- $cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2
- $cert.Import("{{win_cert_dir}}\exported\cert-pass.pfx", "{{key_password}}", 0)
- $cert.HasPrivateKey
- vars: *become_vars
- register: export_pfx_with_pass_result
-
-- name: assert results of export cert with key and password as pfx
- assert:
- that:
- - export_pfx_with_pass is changed
- - export_pfx_with_pass.thumbprints == [subj_thumbprint]
- - export_pfx_with_pass_result.stdout_lines[0] == "True"
-
-- name: export cert with key and password as pfx (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- password: '{{key_password}}'
- vars: *become_vars
- register: export_pfx_with_pass_again
-
-- name: assert results of export cert with key and password as pfx (idempotent)
- assert:
- that:
- - not export_pfx_with_pass_again is changed
-
-- name: export cert with key without password as pfx (check)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-without-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- vars: *become_vars
- register: export_pfx_without_pass_check
- check_mode: yes
-
-- name: get result of export cert with key without password as pfx (check)
- win_stat:
- path: '{{win_cert_dir}}\exported\cert-without-pass.pfx'
- register: export_pfx_without_pass_result_check
-
-- name: assert results of export cert with key without password as pfx (check)
- assert:
- that:
- - export_pfx_without_pass_check is changed
- - export_pfx_without_pass_check.thumbprints == [subj_thumbprint]
- - export_pfx_without_pass_result_check.stat.exists == False
-
-- name: export cert with key without password as pfx
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-without-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- vars: *become_vars
- register: export_pfx_without_pass
-
-- name: get result of export cert with key without password as pfx
- win_shell: |
- $cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2
- $cert.Import("{{win_cert_dir}}\exported\cert-without-pass.pfx", $null, 0)
- $cert.HasPrivateKey
- vars: *become_vars
- register: export_pfx_without_pass_result
-
-- name: assert results of export cert with key without password as pfx
- assert:
- that:
- - export_pfx_without_pass is changed
- - export_pfx_without_pass.thumbprints == [subj_thumbprint]
- - export_pfx_without_pass_result.stdout_lines[0] == "True"
-
-- name: export cert with key without password as pfx (idempotent)
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-without-pass.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- store_location: CurrentUser
- store_name: TrustedPeople
- vars: *become_vars
- register: export_pfx_without_pass_again
-
-- name: assert results of export cert with key without password as pfx (idempotent)
- assert:
- that:
- - not export_pfx_without_pass_again is changed
-
-- name: fail to export cert with key as pfx when not marked as exportable
- win_certificate_store:
- path: '{{win_cert_dir}}\exported\cert-fail.pfx'
- thumbprint: '{{subj_thumbprint}}'
- state: exported
- file_type: pkcs12
- vars: *become_vars
- register: fail_export_non_exportable
- failed_when: fail_export_non_exportable.msg != 'Cannot export cert with key as PKCS12 when the key is not marked as exportable or not accessible by the current user'
diff --git a/test/integration/targets/win_command/aliases b/test/integration/targets/win_command/aliases
deleted file mode 100644
index 4cd27b3cb2..0000000000
--- a/test/integration/targets/win_command/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group1
diff --git a/test/integration/targets/win_command/files/crt_setmode.c b/test/integration/targets/win_command/files/crt_setmode.c
deleted file mode 100644
index 4067e71778..0000000000
--- a/test/integration/targets/win_command/files/crt_setmode.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// crt_setmode.c
-// This program uses _setmode to change
-// stdout from text mode to binary mode.
-// Used to test output_encoding_override for win_command.
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <io.h>
-
-int main(void)
-{
- _setmode(_fileno(stdout), _O_BINARY);
- // Translates to 日本 in shift_jis
- printf("\x93\xFa\x96\x7B - Japan");
-}
diff --git a/test/integration/targets/win_command/tasks/main.yml b/test/integration/targets/win_command/tasks/main.yml
deleted file mode 100644
index bf72ffe21f..0000000000
--- a/test/integration/targets/win_command/tasks/main.yml
+++ /dev/null
@@ -1,255 +0,0 @@
-- name: execute a command
- win_command: whoami /groups
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is successful
- - cmdout is changed
- - cmdout.cmd == 'whoami /groups'
- - cmdout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.rc == 0
- - cmdout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.stderr == ""
- - cmdout.stdout is search('GROUP INFORMATION')
- - '"GROUP INFORMATION" in cmdout.stdout_lines'
-
-- name: execute something nonexistent
- win_command: bogus_command1234
- register: cmdout
- ignore_errors: true
-
-- name: validate result
- assert:
- that:
- - cmdout is failed
- - cmdout is not changed
- - cmdout.cmd == 'bogus_command1234'
- - cmdout.rc == 2
- - "\"Could not find file 'bogus_command1234.exe'.\" in cmdout.msg"
-
-- name: execute something with error output
- win_command: cmd /c "echo some output & echo some error 1>&2"
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is successful
- - cmdout is changed
- - cmdout.cmd == 'cmd /c "echo some output & echo some error 1>&2"'
- - cmdout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.rc == 0
- - cmdout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - cmdout.stderr is search('some error')
- - cmdout.stdout == "some output \r\n"
- - cmdout.stdout_lines == ["some output "]
-
-- name: ensure test file is absent
- win_file:
- path: c:\testfile.txt
- state: absent
-
-- name: run with creates, should create
- win_command: cmd /c "echo $null >> c:\testfile.txt"
- args:
- creates: c:\testfile.txt
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is successful
- - cmdout is changed
-
-- name: run again with creates, should skip
- win_command: cmd /c "echo $null >> c:\testfile.txt"
- args:
- creates: c:\testfile.txt
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is skipped
- - cmdout.msg is search('exists')
-
-- name: get path of pagefile
- win_shell: |
- $pagefile = $null
- $cs = Get-CimInstance -ClassName Win32_ComputerSystem
- if ($cs.AutomaticManagedPagefile) {
- $pagefile = "$($env:SystemRoot.Substring(0, 1)):\pagefile.sys"
- } else {
- $pf = Get-CimInstance -ClassName Win32_PageFileSetting
- if ($pf -ne $null) {
- $pagefile = $pf[0].Name
- }
- }
- $pagefile
- register: pagefile_path
-
-- name: test creates with hidden system file, should skip
- win_command: echo no
- args:
- creates: '{{pagefile_path.stdout_lines[0]}}'
- register: cmdout
- when: pagefile_path.stdout_lines|count != 0
-
-- name: validate result
- assert:
- that:
- - cmdout is skipped
- - cmdout.msg is search('exists')
- when: pagefile_path.stdout_lines|count != 0
-
-- name: ensure testfile is still present
- win_stat:
- path: c:\testfile.txt
- register: statout
-
-- name: validate result
- assert:
- that:
- - statout.stat.exists == true
-
-- name: run with removes, should remove
- win_command: cmd /c "del c:\testfile.txt"
- args:
- removes: c:\testfile.txt
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is successful
- - cmdout is changed
-
-- name: run again with removes, should skip
- win_command: cmd /c "del c:\testfile.txt"
- args:
- removes: c:\testfile.txt
- register: cmdout
-
-- name: validate result
- assert:
- that:
- - cmdout is skipped
- - cmdout.msg is search('does not exist')
-
-- name: run something with known nonzero exit code
- win_command: cmd /c "exit 254"
- register: cmdout
- ignore_errors: true
-
-- name: validate result
- assert:
- that:
- - cmdout is failed
- - cmdout.failed == True # check the failure key explicitly, since failed does magic with RC
- - cmdout.rc == 254
-
-- name: interleave large writes between stdout/stderr (check for buffer consumption deadlock)
- win_command: powershell /c "$ba = New-Object byte[] 4096; (New-Object System.Random 32).NextBytes($ba); $text = [Convert]::ToBase64String($ba); Write-Output startout; Write-Error starterror; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Output doneout Write-Error doneerror"
- register: cmdout
-
-- name: ensure that the entirety of both streams were read
- assert:
- that:
- - cmdout.stdout is search("startout")
- - cmdout.stdout is search("doneout")
- - cmdout.stderr is search("starterror")
- - cmdout.stderr is search("doneerror")
-
-- name: create testing folder for argv binary
- win_file:
- path: C:\ansible testing
- state: directory
-
-- name: download binary the outputs argv to stdout
- win_get_url:
- url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_module_utils/PrintArgv.exe
- dest: C:\ansible testing\PrintArgv.exe
-
-- name: call argv binary with absolute path
- win_command: '"C:\ansible testing\PrintArgv.exe" arg1 "arg 2" C:\path\arg "\"quoted arg\""'
- register: cmdout
-
-- name: assert call to argv binary with absolute path
- assert:
- that:
- - cmdout is changed
- - cmdout.rc == 0
- - cmdout.stdout_lines[0] == 'arg1'
- - cmdout.stdout_lines[1] == 'arg 2'
- - cmdout.stdout_lines[2] == 'C:\\path\\arg'
- - cmdout.stdout_lines[3] == '"quoted arg"'
-
-- name: call argv binary with relative path
- win_command: 'PrintArgv.exe C:\path\end\slash\ ADDLOCAL="msi,example" two\\slashes'
- args:
- chdir: C:\ansible testing
- register: cmdout
-
-- name: assert call to argv binary with relative path
- assert:
- that:
- - cmdout is changed
- - cmdout.rc == 0
- - cmdout.stdout_lines[0] == 'C:\\path\\end\\slash\\'
- - cmdout.stdout_lines[1] == 'ADDLOCAL=msi,example'
- - cmdout.stdout_lines[2] == 'two\\\\slashes'
-
-- name: download binary that output shift_jis chars to console
- win_get_url:
- url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_command/OutputEncodingOverride.exe
- dest: C:\ansible testing\OutputEncodingOverride.exe
-
-- name: call binary with shift_jis output encoding override
- win_command: '"C:\ansible testing\OutputEncodingOverride.exe"'
- args:
- output_encoding_override: shift_jis
- register: cmdout
-
-- name: assert call to binary with shift_jis output
- assert:
- that:
- - cmdout is changed
- - cmdout.rc == 0
- - cmdout.stdout_lines[0] == '日本 - Japan'
-
-- name: remove testing folder
- win_file:
- path: C:\ansible testing
- state: absent
-
-- name: run stdin test
- win_command: powershell.exe -
- args:
- stdin: Write-Host "some input"
- register: cmdout
-
-- name: assert run stdin test
- assert:
- that:
- - cmdout is changed
- - cmdout.rc == 0
- - cmdout.stdout_lines|count == 1
- - cmdout.stdout_lines[0] == "some input"
- - cmdout.stderr == ""
-
-- name: echo some non ascii characters
- win_command: cmd.exe /c echo über den Fußgängerübergang gehen
- register: nonascii_output
-
-- name: assert echo some non ascii characters
- assert:
- that:
- - nonascii_output is changed
- - nonascii_output.rc == 0
- - nonascii_output.stdout_lines|count == 1
- - nonascii_output.stdout_lines[0] == 'über den Fußgängerübergang gehen'
- - nonascii_output.stderr == ''
diff --git a/test/integration/targets/win_copy/aliases b/test/integration/targets/win_copy/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_copy/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_copy/defaults/main.yml b/test/integration/targets/win_copy/defaults/main.yml
deleted file mode 100644
index 5d8a1d2351..0000000000
--- a/test/integration/targets/win_copy/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_win_copy_path: C:\ansible\win_copy .ÅÑŚÌβŁÈ [$!@^&test(;)]
diff --git a/test/integration/targets/win_copy/files-different/vault/folder/nested-vault-file b/test/integration/targets/win_copy/files-different/vault/folder/nested-vault-file
deleted file mode 100644
index d8d1549874..0000000000
--- a/test/integration/targets/win_copy/files-different/vault/folder/nested-vault-file
+++ /dev/null
@@ -1,6 +0,0 @@
-$ANSIBLE_VAULT;1.1;AES256
-65653164323866373138353632323531393664393563633665373635623763353561386431373366
-3232353263363034313136663062623336663463373966320a333763323032646463386432626161
-36386330356637666362396661653935653064623038333031653335626164376465353235303636
-3335616231663838620a303632343938326538656233393562303162343261383465623261646664
-33613932343461626339333832363930303962633364303736376634396364643861
diff --git a/test/integration/targets/win_copy/files-different/vault/readme.txt b/test/integration/targets/win_copy/files-different/vault/readme.txt
deleted file mode 100644
index dae883b5ee..0000000000
--- a/test/integration/targets/win_copy/files-different/vault/readme.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains some files that have been encrypted with ansible-vault.
-
-This is to test out the decrypt parameter in win_copy.
-
-The password is: password
diff --git a/test/integration/targets/win_copy/files-different/vault/vault-file b/test/integration/targets/win_copy/files-different/vault/vault-file
deleted file mode 100644
index 2fff7619a7..0000000000
--- a/test/integration/targets/win_copy/files-different/vault/vault-file
+++ /dev/null
@@ -1,6 +0,0 @@
-$ANSIBLE_VAULT;1.1;AES256
-30353665333635633433356261616636356130386330363962386533303566313463383734373532
-3933643234323638623939613462346361313431363939370a303532656338353035346661353965
-34656231633238396361393131623834316262306533663838336362366137306562646561383766
-6363373965633337640a373666336461613337346131353564383134326139616561393664663563
-3431
diff --git a/test/integration/targets/win_copy/files/empty.txt b/test/integration/targets/win_copy/files/empty.txt
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/win_copy/files/empty.txt
+++ /dev/null
diff --git a/test/integration/targets/win_copy/files/foo.txt b/test/integration/targets/win_copy/files/foo.txt
deleted file mode 100644
index 7c6ded14ec..0000000000
--- a/test/integration/targets/win_copy/files/foo.txt
+++ /dev/null
@@ -1 +0,0 @@
-foo.txt
diff --git a/test/integration/targets/win_copy/files/subdir/bar.txt b/test/integration/targets/win_copy/files/subdir/bar.txt
deleted file mode 100644
index 76018072e0..0000000000
--- a/test/integration/targets/win_copy/files/subdir/bar.txt
+++ /dev/null
@@ -1 +0,0 @@
-baz
diff --git a/test/integration/targets/win_copy/files/subdir/subdir2/baz.txt b/test/integration/targets/win_copy/files/subdir/subdir2/baz.txt
deleted file mode 100644
index 76018072e0..0000000000
--- a/test/integration/targets/win_copy/files/subdir/subdir2/baz.txt
+++ /dev/null
@@ -1 +0,0 @@
-baz
diff --git a/test/integration/targets/win_copy/files/subdir/subdir2/subdir3/subdir4/qux.txt b/test/integration/targets/win_copy/files/subdir/subdir2/subdir3/subdir4/qux.txt
deleted file mode 100644
index 78df5b06bd..0000000000
--- a/test/integration/targets/win_copy/files/subdir/subdir2/subdir3/subdir4/qux.txt
+++ /dev/null
@@ -1 +0,0 @@
-qux \ No newline at end of file
diff --git a/test/integration/targets/win_copy/tasks/main.yml b/test/integration/targets/win_copy/tasks/main.yml
deleted file mode 100644
index b2ee103fd0..0000000000
--- a/test/integration/targets/win_copy/tasks/main.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-- name: create empty folder
- file:
- path: '{{role_path}}/files/subdir/empty'
- state: directory
- delegate_to: localhost
-
-# removes the cached zip module from the previous task so we can replicate
-# the below issue where win_copy would delete DEFAULT_LOCAL_TMP if it
-# had permission to
-# https://github.com/ansible/ansible/issues/35613
-- name: clear the local ansiballz cache
- file:
- path: "{{lookup('config', 'DEFAULT_LOCAL_TMP')}}/ansiballz_cache"
- state: absent
- delegate_to: localhost
-
-- name: create test folder
- win_file:
- path: '{{test_win_copy_path}}'
- state: directory
-
-- block:
- - name: run tests for local to remote
- include_tasks: tests.yml
-
- - name: run tests for remote to remote
- include_tasks: remote_tests.yml
-
- always:
- - name: remove test folder
- win_file:
- path: '{{test_win_copy_path}}'
- state: absent
diff --git a/test/integration/targets/win_copy/tasks/remote_tests.yml b/test/integration/targets/win_copy/tasks/remote_tests.yml
deleted file mode 100644
index 5abb50200b..0000000000
--- a/test/integration/targets/win_copy/tasks/remote_tests.yml
+++ /dev/null
@@ -1,471 +0,0 @@
----
-- name: fail when source does not exist remote
- win_copy:
- src: fakesource
- dest: fakedest
- remote_src: yes
- register: fail_remote_invalid_source
- failed_when: "'it does not exist' not in fail_remote_invalid_source.msg"
-
-- name: setup source folder for remote tests
- win_copy:
- src: files/
- dest: '{{test_win_copy_path}}\source\'
-
-- name: setup remote failure tests
- win_file:
- path: '{{item.path}}'
- state: '{{item.state}}'
- with_items:
- - { 'path': '{{test_win_copy_path}}\target\folder', 'state': 'directory' }
- - { 'path': '{{test_win_copy_path}}\target\file', 'state': 'touch' }
- - { 'path': '{{test_win_copy_path}}\target\subdir', 'state': 'touch' }
-
-- name: fail source is a file but dest is a folder
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\folder'
- remote_src: yes
- register: fail_remote_file_to_folder
- failed_when: "'dest is already a folder' not in fail_remote_file_to_folder.msg"
-
-- name: fail source is a file but dest is a folder
- win_copy:
- src: '{{test_win_copy_path}}\source\'
- dest: '{{test_win_copy_path}}\target\'
- remote_src: yes
- register: fail_remote_folder_to_file
- failed_when: "'dest is already a file' not in fail_remote_folder_to_file.msg"
-
-- name: fail source is a file dest parent dir is also a file
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\file\foo.txt'
- remote_src: yes
- register: fail_remote_file_parent_dir_file
- failed_when: "'is currently a file' not in fail_remote_file_parent_dir_file.msg"
-
-- name: fail source is a folder dest parent dir is also a file
- win_copy:
- src: '{{test_win_copy_path}}\source\subdir'
- dest: '{{test_win_copy_path}}\target\file'
- remote_src: yes
- register: fail_remote_folder_parent_dir_file
- failed_when: "'object at dest parent dir is not a folder' not in fail_remote_folder_parent_dir_file.msg"
-
-- name: fail to copy a remote file with parent dir that doesn't exist and filename is set
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\missing-dir\foo.txt'
- remote_src: yes
- register: fail_remote_missing_parent_dir
- failed_when: "'does not exist' not in fail_remote_missing_parent_dir.msg"
-
-- name: remove target after remote failure tests
- win_file:
- path: '{{test_win_copy_path}}\target'
- state: absent
-
-- name: create remote target after cleaning
- win_file:
- path: '{{test_win_copy_path}}\target'
- state: directory
-
-- name: copy single file remote (check mode)
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\foo-target.txt'
- remote_src: yes
- register: remote_copy_file_check
- check_mode: yes
-
-- name: get result of copy single file remote (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\target\foo-target.txt'
- register: remote_copy_file_actual_check
-
-- name: assert copy single file remote (check mode)
- assert:
- that:
- - remote_copy_file_check is changed
- - remote_copy_file_actual_check.stat.exists == False
-
-- name: copy single file remote
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\foo-target.txt'
- remote_src: yes
- register: remote_copy_file
-
-- name: get result of copy single file remote
- win_stat:
- path: '{{test_win_copy_path}}\target\foo-target.txt'
- register: remote_copy_file_actual
-
-- name: assert copy single file remote
- assert:
- that:
- - remote_copy_file is changed
- - remote_copy_file.operation == 'file_copy'
- - remote_copy_file.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - remote_copy_file.size == 8
- - remote_copy_file.original_basename == 'foo.txt'
- - remote_copy_file_actual.stat.exists == True
- - remote_copy_file_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: copy single file remote (idempotent)
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\foo-target.txt'
- remote_src: yes
- register: remote_copy_file_again
-
-- name: assert copy single file remote (idempotent)
- assert:
- that:
- - remote_copy_file_again is not changed
-
-- name: copy single file into folder remote (check mode)
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\'
- remote_src: yes
- register: remote_copy_file_to_folder_check
- check_mode: yes
-
-- name: get result of copy single file into folder remote (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\target\foo.txt'
- register: remote_copy_file_to_folder_actual_check
-
-- name: assert copy single file into folder remote (check mode)
- assert:
- that:
- - remote_copy_file_to_folder_check is changed
- - remote_copy_file_to_folder_actual_check.stat.exists == False
-
-- name: copy single file into folder remote
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\'
- remote_src: yes
- register: remote_copy_file_to_folder
-
-- name: get result of copy single file into folder remote
- win_stat:
- path: '{{test_win_copy_path}}\target\foo.txt'
- register: remote_copy_file_to_folder_actual
-
-- name: assert copy single file into folder remote
- assert:
- that:
- - remote_copy_file_to_folder is changed
- - remote_copy_file_to_folder.operation == 'file_copy'
- - remote_copy_file_to_folder.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - remote_copy_file_to_folder.size == 8
- - remote_copy_file_to_folder.original_basename == 'foo.txt'
- - remote_copy_file_to_folder_actual.stat.exists == True
- - remote_copy_file_to_folder_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: copy single file into folder remote (idempotent)
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\'
- remote_src: yes
- register: remote_copy_file_to_folder_again
-
-- name: assert copy single file into folder remote
- assert:
- that:
- - remote_copy_file_to_folder_again is not changed
-
-- name: copy single file to missing folder (check mode)
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\missing\'
- remote_src: yes
- register: remote_copy_file_to_missing_folder_check
- check_mode: yes
-
-- name: get result of copy single file to missing folder remote (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\target\missing\foo.txt'
- register: remote_copy_file_to_missing_folder_actual_check
-
-- name: assert copy single file to missing folder remote (check mode)
- assert:
- that:
- - remote_copy_file_to_missing_folder_check is changed
- - remote_copy_file_to_missing_folder_check.operation == 'file_copy'
- - remote_copy_file_to_missing_folder_actual_check.stat.exists == False
-
-- name: copy single file to missing folder remote
- win_copy:
- src: '{{test_win_copy_path}}\source\foo.txt'
- dest: '{{test_win_copy_path}}\target\missing\'
- remote_src: yes
- register: remote_copy_file_to_missing_folder
-
-- name: get result of copy single file to missing folder remote
- win_stat:
- path: '{{test_win_copy_path}}\target\missing\foo.txt'
- register: remote_copy_file_to_missing_folder_actual
-
-- name: assert copy single file to missing folder remote
- assert:
- that:
- - remote_copy_file_to_missing_folder is changed
- - remote_copy_file_to_missing_folder.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - remote_copy_file_to_missing_folder.operation == 'file_copy'
- - remote_copy_file_to_missing_folder.size == 8
- - remote_copy_file_to_missing_folder_actual.stat.exists == True
- - remote_copy_file_to_missing_folder_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: clear target for folder to folder test
- win_file:
- path: '{{test_win_copy_path}}\target'
- state: absent
-
-- name: copy folder to folder remote (check mode)
- win_copy:
- src: '{{test_win_copy_path}}\source'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_to_folder_check
- check_mode: yes
-
-- name: get result of copy folder to folder remote (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\target'
- register: remote_copy_folder_to_folder_actual_check
-
-- name: assert copy folder to folder remote (check mode)
- assert:
- that:
- - remote_copy_folder_to_folder_check is changed
- - remote_copy_folder_to_folder_check.operation == 'folder_copy'
- - remote_copy_folder_to_folder_actual_check.stat.exists == False
-
-- name: copy folder to folder remote
- win_copy:
- src: '{{test_win_copy_path}}\source'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_to_folder
-
-- name: get result of copy folder to folder remote
- win_find:
- paths: '{{test_win_copy_path}}\target'
- recurse: yes
- file_type: directory
- register: remote_copy_folder_to_folder_actual
-
-- name: assert copy folder to folder remote
- assert:
- that:
- - remote_copy_folder_to_folder is changed
- - remote_copy_folder_to_folder.operation == 'folder_copy'
- - remote_copy_folder_to_folder_actual.examined == 11
- - remote_copy_folder_to_folder_actual.matched == 6
- - remote_copy_folder_to_folder_actual.files[0].filename == 'source'
- - remote_copy_folder_to_folder_actual.files[1].filename == 'subdir'
- - remote_copy_folder_to_folder_actual.files[2].filename == 'empty'
- - remote_copy_folder_to_folder_actual.files[3].filename == 'subdir2'
- - remote_copy_folder_to_folder_actual.files[4].filename == 'subdir3'
- - remote_copy_folder_to_folder_actual.files[5].filename == 'subdir4'
-
-- name: copy folder to folder remote (idempotent)
- win_copy:
- src: '{{test_win_copy_path}}\source'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_to_folder_again
-
-- name: assert copy folder to folder remote (idempotent)
- assert:
- that:
- - remote_copy_folder_to_folder_again is not changed
-
-- name: change remote file after folder to folder test
- win_copy:
- content: bar.txt
- dest: '{{test_win_copy_path}}\target\source\foo.txt'
-
-- name: remote remote folder after folder to folder test
- win_file:
- path: '{{test_win_copy_path}}\target\source\subdir\subdir2\subdir3\subdir4'
- state: absent
-
-- name: copy folder to folder remote after change
- win_copy:
- src: '{{test_win_copy_path}}\source'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_to_folder_after_change
-
-- name: get result of copy folder to folder remote after change
- win_find:
- paths: '{{test_win_copy_path}}\target\source'
- recurse: yes
- patterns: ['foo.txt', 'qux.txt']
- register: remote_copy_folder_to_folder_after_change_actual
-
-- name: assert copy folder after changes
- assert:
- that:
- - remote_copy_folder_to_folder_after_change is changed
- - remote_copy_folder_to_folder_after_change_actual.matched == 2
- - remote_copy_folder_to_folder_after_change_actual.files[0].checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - remote_copy_folder_to_folder_after_change_actual.files[1].checksum == 'b54ba7f5621240d403f06815f7246006ef8c7d43'
-
-- name: clear target folder before folder contents to remote test
- win_file:
- path: '{{test_win_copy_path}}\target'
- state: absent
-
-- name: copy folder contents to folder remote with backslash (check mode)
- win_copy:
- src: '{{test_win_copy_path}}\source\'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_content_backslash_check
- check_mode: yes
-
-- name: get result of copy folder contents to folder remote with backslash (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\target'
- register: remote_copy_folder_content_backslash_actual_check
-
-- name: assert copy folder content to folder remote with backslash (check mode)
- assert:
- that:
- - remote_copy_folder_content_backslash_check is changed
- - remote_copy_folder_content_backslash_actual_check.stat.exists == False
-
-- name: copy folder contents to folder remote with backslash
- win_copy:
- src: '{{test_win_copy_path}}\source\'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_content_backslash
-
-- name: get result of copy folder contents to folder remote with backslash
- win_find:
- paths: '{{test_win_copy_path}}\target'
- recurse: yes
- file_type: directory
- register: remote_copy_folder_content_backslash_actual
-
-- name: assert copy folder content to folder remote with backslash
- assert:
- that:
- - remote_copy_folder_content_backslash is changed
- - remote_copy_folder_content_backslash.operation == 'folder_copy'
- - remote_copy_folder_content_backslash_actual.examined == 10
- - remote_copy_folder_content_backslash_actual.matched == 5
- - remote_copy_folder_content_backslash_actual.files[0].filename == 'subdir'
- - remote_copy_folder_content_backslash_actual.files[1].filename == 'empty'
- - remote_copy_folder_content_backslash_actual.files[2].filename == 'subdir2'
- - remote_copy_folder_content_backslash_actual.files[3].filename == 'subdir3'
- - remote_copy_folder_content_backslash_actual.files[4].filename == 'subdir4'
-
-- name: copy folder contents to folder remote with backslash (idempotent)
- win_copy:
- src: '{{test_win_copy_path}}\source\'
- dest: '{{test_win_copy_path}}\target'
- remote_src: yes
- register: remote_copy_folder_content_backslash_again
-
-- name: assert copy folder content to folder remote with backslash (idempotent)
- assert:
- that:
- - remote_copy_folder_content_backslash_again is not changed
-
-- name: change remote file after folder content to folder test
- win_copy:
- content: bar.txt
- dest: '{{test_win_copy_path}}\target\foo.txt'
-
-- name: remote remote folder after folder content to folder test
- win_file:
- path: '{{test_win_copy_path}}\target\subdir\subdir2\subdir3\subdir4'
- state: absent
-
-- name: copy folder content to folder remote after change
- win_copy:
- src: '{{test_win_copy_path}}/source/'
- dest: '{{test_win_copy_path}}/target/'
- remote_src: yes
- register: remote_copy_folder_content_to_folder_after_change
-
-- name: get result of copy folder content to folder remote after change
- win_find:
- paths: '{{test_win_copy_path}}\target'
- recurse: yes
- patterns: ['foo.txt', 'qux.txt']
- register: remote_copy_folder_content_to_folder_after_change_actual
-
-- name: assert copy folder content to folder after changes
- assert:
- that:
- - remote_copy_folder_content_to_folder_after_change is changed
- - remote_copy_folder_content_to_folder_after_change_actual.matched == 2
- - remote_copy_folder_content_to_folder_after_change_actual.files[0].checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - remote_copy_folder_content_to_folder_after_change_actual.files[1].checksum == 'b54ba7f5621240d403f06815f7246006ef8c7d43'
-
-# https://github.com/ansible/ansible/issues/50077
-- name: create empty nested directory
- win_file:
- path: '{{ test_win_copy_path }}\source\empty-nested\nested-dir'
- state: directory
-
-- name: copy empty nested directory (check mode)
- win_copy:
- src: '{{ test_win_copy_path }}\source\empty-nested'
- dest: '{{ test_win_copy_path }}\target'
- remote_src: True
- check_mode: True
- register: copy_empty_dir_check
-
-- name: get result of copy empty nested directory (check mode)
- win_stat:
- path: '{{ test_win_copy_path }}\target\empty-nested'
- register: copy_empty_dir_actual_check
-
-- name: assert copy empty nested directory (check mode)
- assert:
- that:
- - copy_empty_dir_check is changed
- - copy_empty_dir_check.operation == "folder_copy"
- - not copy_empty_dir_actual_check.stat.exists
-
-- name: copy empty nested directory
- win_copy:
- src: '{{ test_win_copy_path }}\source\empty-nested'
- dest: '{{ test_win_copy_path }}\target'
- remote_src: True
- register: copy_empty_dir
-
-- name: get result of copy empty nested directory
- win_stat:
- path: '{{ test_win_copy_path }}\target\empty-nested\nested-dir'
- register: copy_empty_dir_actual
-
-- name: assert copy empty nested directory
- assert:
- that:
- - copy_empty_dir is changed
- - copy_empty_dir.operation == "folder_copy"
- - copy_empty_dir_actual.stat.exists
-
-- name: copy empty nested directory (idempotent)
- win_copy:
- src: '{{ test_win_copy_path }}\source\empty-nested'
- dest: '{{ test_win_copy_path }}\target'
- remote_src: True
- register: copy_empty_dir_again
-
-- name: assert copy empty nested directory (idempotent)
- assert:
- that:
- - not copy_empty_dir_again is changed
diff --git a/test/integration/targets/win_copy/tasks/tests.yml b/test/integration/targets/win_copy/tasks/tests.yml
deleted file mode 100644
index d15e71f65c..0000000000
--- a/test/integration/targets/win_copy/tasks/tests.yml
+++ /dev/null
@@ -1,535 +0,0 @@
----
-- name: fail no source or content
- win_copy:
- dest: dest
- register: fail_no_source_content
- failed_when: fail_no_source_content.msg != 'src (or content) and dest are required'
-
-- name: fail content but dest isn't a file, unix ending
- win_copy:
- content: a
- dest: a/
- register: fail_dest_not_file_unix
- failed_when: fail_dest_not_file_unix.msg != 'dest must be a file if content is defined'
-
-- name: fail content but dest isn't a file, windows ending
- win_copy:
- content: a
- dest: a\
- register: fail_dest_not_file_windows
- failed_when: fail_dest_not_file_windows.msg != 'dest must be a file if content is defined'
-
-- name: fail to copy a file with parent dir that doesn't exist and filename is set
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\missing-dir\foo.txt'
- register: fail_missing_parent_dir
- failed_when: "'does not exist' not in fail_missing_parent_dir.msg"
-
-- name: fail to copy an encrypted file without the password set
- win_copy:
- src: '{{role_path}}/files-different/vault/vault-file'
- dest: '{{test_win_copy_path}}\file'
- register: fail_copy_encrypted_file
- ignore_errors: yes # weird failed_when doesn't work in this case
-
-- name: assert failure message when copying an encrypted file without the password set
- assert:
- that:
- - fail_copy_encrypted_file is failed
- - fail_copy_encrypted_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-different/vault/vault-file'
-
-- name: fail to copy a directory with an encrypted file without the password
- win_copy:
- src: '{{role_path}}/files-different/vault'
- dest: '{{test_win_copy_path}}'
- register: fail_copy_directory_with_enc_file
- ignore_errors: yes
-
-- name: assert failure message when copying a directory that contains an encrypted file without the password set
- assert:
- that:
- - fail_copy_directory_with_enc_file is failed
- - fail_copy_directory_with_enc_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-different/vault/vault-file'
-
-- name: copy with content (check mode)
- win_copy:
- content: a
- dest: '{{test_win_copy_path}}\file'
- register: copy_content_check
- check_mode: yes
-
-- name: get result of copy with content (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\file'
- register: copy_content_actual_check
-
-- name: assert copy with content (check mode)
- assert:
- that:
- - copy_content_check is changed
- - copy_content_check.checksum == '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
- - copy_content_check.operation == 'file_copy'
- - copy_content_check.size == 1
- - copy_content_actual_check.stat.exists == False
-
-- name: copy with content
- win_copy:
- content: a
- dest: '{{test_win_copy_path}}\file'
- register: copy_content
-
-- name: get result of copy with content
- win_stat:
- path: '{{test_win_copy_path}}\file'
- register: copy_content_actual
-
-- name: assert copy with content
- assert:
- that:
- - copy_content is changed
- - copy_content.checksum == '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
- - copy_content.operation == 'file_copy'
- - copy_content.size == 1
- - copy_content_actual.stat.exists == True
- - copy_content_actual.stat.checksum == '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
-
-- name: copy with content (idempotent)
- win_copy:
- content: a
- dest: '{{test_win_copy_path}}\file'
- register: copy_content_again
-
-- name: assert copy with content (idempotent)
- assert:
- that:
- - copy_content_again is not changed
-
-- name: copy with content change when missing
- win_copy:
- content: b
- dest: '{{test_win_copy_path}}\file'
- force: no
- register: copy_content_when_missing
-
-- name: assert copy with content change when missing
- assert:
- that:
- - copy_content_when_missing is not changed
-
-- name: copy single file (check mode)
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\foo-target.txt'
- register: copy_file_check
- check_mode: yes
-
-- name: get result of copy single file (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\foo-target.txt'
- register: copy_file_actual_check
-
-- name: assert copy single file (check mode)
- assert:
- that:
- - copy_file_check is changed
- - copy_file_check.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file_check.dest == test_win_copy_path + '\\foo-target.txt'
- - copy_file_check.operation == 'file_copy'
- - copy_file_check.size == 8
- - copy_file_actual_check.stat.exists == False
-
-- name: copy single file
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\foo-target.txt'
- register: copy_file
-
-- name: get result of copy single file
- win_stat:
- path: '{{test_win_copy_path}}\foo-target.txt'
- register: copy_file_actual
-
-- name: assert copy single file
- assert:
- that:
- - copy_file is changed
- - copy_file.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file.dest == test_win_copy_path + '\\foo-target.txt'
- - copy_file.operation == 'file_copy'
- - copy_file.size == 8
- - copy_file_actual.stat.exists == True
- - copy_file_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: copy single file (idempotent)
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\foo-target.txt'
- register: copy_file_again
-
-- name: assert copy single file (idempotent)
- assert:
- that:
- - copy_file_again is not changed
-
-- name: copy single file (backup)
- win_copy:
- content: "{{ lookup('file', 'foo.txt') }}\nfoo bar"
- dest: '{{test_win_copy_path}}\foo-target.txt'
- backup: yes
- register: copy_file_backup
-
-- name: check backup_file
- win_stat:
- path: '{{ copy_file_backup.backup_file }}'
- register: backup_file
-
-- name: assert copy single file (backup)
- assert:
- that:
- - copy_file_backup is changed
- - backup_file.stat.exists == true
-
-- name: copy single file to folder (check mode)
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\'
- register: copy_file_to_folder_check
- check_mode: yes
-
-- name: get result of copy single file to folder (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\foo.txt'
- register: copy_file_to_folder_actual_check
-
-- name: assert copy single file to folder (check mode)
- assert:
- that:
- - copy_file_to_folder_check is changed
- - copy_file_to_folder_check.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file_to_folder_check.dest == test_win_copy_path + '\\foo.txt'
- - copy_file_to_folder_check.operation == 'file_copy'
- - copy_file_to_folder_check.size == 8
- - copy_file_to_folder_actual_check.stat.exists == False
-
-- name: copy single file to folder
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\'
- register: copy_file_to_folder
-
-- name: get result of copy single file to folder
- win_stat:
- path: '{{test_win_copy_path}}\foo.txt'
- register: copy_file_to_folder_actual
-
-- name: assert copy single file to folder
- assert:
- that:
- - copy_file_to_folder is changed
- - copy_file_to_folder.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file_to_folder.dest == test_win_copy_path + '\\foo.txt'
- - copy_file_to_folder.operation == 'file_copy'
- - copy_file_to_folder.size == 8
- - copy_file_to_folder_actual.stat.exists == True
- - copy_file_to_folder_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: copy single file to folder (idempotent)
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\'
- register: copy_file_to_folder_again
-
-- name: assert copy single file to folder (idempotent)
- assert:
- that:
- - copy_file_to_folder_again is not changed
-
-- name: copy single file to missing folder (check mode)
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\missing\'
- register: copy_file_to_missing_folder_check
- check_mode: yes
-
-- name: get result of copy single file to missing folder (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\missing\foo.txt'
- register: copy_file_to_missing_folder_actual_check
-
-- name: assert copy single file to missing folder (check mode)
- assert:
- that:
- - copy_file_to_missing_folder_check is changed
- - copy_file_to_missing_folder_check.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file_to_missing_folder_check.operation == 'file_copy'
- - copy_file_to_missing_folder_check.size == 8
- - copy_file_to_missing_folder_actual_check.stat.exists == False
-
-- name: copy single file to missing folder
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\missing\'
- register: copy_file_to_missing_folder
-
-- name: get result of copy single file to missing folder
- win_stat:
- path: '{{test_win_copy_path}}\missing\foo.txt'
- register: copy_file_to_missing_folder_actual
-
-- name: assert copy single file to missing folder
- assert:
- that:
- - copy_file_to_missing_folder is changed
- - copy_file_to_missing_folder.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_file_to_missing_folder.operation == 'file_copy'
- - copy_file_to_missing_folder.size == 8
- - copy_file_to_missing_folder_actual.stat.exists == True
- - copy_file_to_missing_folder_actual.stat.checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
-
-- name: copy folder (check mode)
- win_copy:
- src: files
- dest: '{{test_win_copy_path}}\recursive\folder'
- register: copy_folder_check
- check_mode: yes
-
-- name: get result of copy folder (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\recursive\folder'
- register: copy_folder_actual_check
-
-- name: assert copy folder (check mode)
- assert:
- that:
- - copy_folder_check is changed
- - copy_folder_check.operation == 'folder_copy'
- - copy_folder_actual_check.stat.exists == False
-
-- name: copy folder
- win_copy:
- src: files
- dest: '{{test_win_copy_path}}\recursive\folder'
- register: copy_folder
-
-- name: get result of copy folder
- win_find:
- paths: '{{test_win_copy_path}}\recursive\folder'
- recurse: yes
- file_type: directory
- register: copy_folder_actual
-
-- name: assert copy folder
- assert:
- that:
- - copy_folder is changed
- - copy_folder.operation == 'folder_copy'
- - copy_folder_actual.examined == 11 # includes files and folders, the below is the nested order
- - copy_folder_actual.matched == 6
- - copy_folder_actual.files[0].filename == 'files'
- - copy_folder_actual.files[1].filename == 'subdir'
- - copy_folder_actual.files[2].filename == 'empty'
- - copy_folder_actual.files[3].filename == 'subdir2'
- - copy_folder_actual.files[4].filename == 'subdir3'
- - copy_folder_actual.files[5].filename == 'subdir4'
-
-- name: copy folder (idempotent)
- win_copy:
- src: files
- dest: '{{test_win_copy_path}}\recursive\folder'
- register: copy_folder_again
-
-- name: assert copy folder (idempotent)
- assert:
- that:
- - copy_folder_again is not changed
-
-- name: change the text of a file in the remote source
- win_copy:
- content: bar.txt
- dest: '{{test_win_copy_path}}\recursive\folder\files\foo.txt'
-
-- name: remove folder for test of recursive copy
- win_file:
- path: '{{test_win_copy_path}}\recursive\folder\files\subdir\subdir2\subdir3\subdir4'
- state: absent
-
-- name: copy folder after changes
- win_copy:
- src: files
- dest: '{{test_win_copy_path}}\recursive\folder'
- register: copy_folder_after_change
-
-- name: get result of copy folder after changes
- win_find:
- paths: '{{test_win_copy_path}}\recursive\folder\files'
- recurse: yes
- patterns: ['foo.txt', 'qux.txt']
- register: copy_folder_after_changes_actual
-
-- name: assert copy folder after changes
- assert:
- that:
- - copy_folder_after_change is changed
- - copy_folder_after_changes_actual.matched == 2
- - copy_folder_after_changes_actual.files[0].checksum == 'c79a6506c1c948be0d456ab5104d5e753ab2f3e6'
- - copy_folder_after_changes_actual.files[1].checksum == 'b54ba7f5621240d403f06815f7246006ef8c7d43'
-
-- name: copy folder's contents (check mode)
- win_copy:
- src: files/
- dest: '{{test_win_copy_path}}\recursive-contents\'
- register: copy_folder_contents_check
- check_mode: yes
-
-- name: get result of copy folder'scontents (check mode)
- win_stat:
- path: '{{test_win_copy_path}}\recursive-contents'
- register: copy_folder_contents_actual_check
-
-- name: assert copy folder's contents (check mode)
- assert:
- that:
- - copy_folder_contents_check is changed
- - copy_folder_contents_check.operation == 'folder_copy'
- - copy_folder_contents_actual_check.stat.exists == False
-
-- name: copy folder's contents
- win_copy:
- src: files/
- dest: '{{test_win_copy_path}}\recursive-contents\'
- register: copy_folder_contents
-
-- name: get result of copy folder
- win_find:
- paths: '{{test_win_copy_path}}\recursive-contents'
- recurse: yes
- file_type: directory
- register: copy_folder_contents_actual
-
-- name: assert copy folder
- assert:
- that:
- - copy_folder_contents is changed
- - copy_folder_contents.operation == 'folder_copy'
- - copy_folder_contents_actual.examined == 10 # includes files and folders, the below is the nested order
- - copy_folder_contents_actual.matched == 5
- - copy_folder_contents_actual.files[0].filename == 'subdir'
- - copy_folder_contents_actual.files[1].filename == 'empty'
- - copy_folder_contents_actual.files[2].filename == 'subdir2'
- - copy_folder_contents_actual.files[3].filename == 'subdir3'
- - copy_folder_contents_actual.files[4].filename == 'subdir4'
-
-- name: fail to copy file to a folder
- win_copy:
- src: foo.txt
- dest: '{{test_win_copy_path}}\recursive-contents'
- register: fail_file_to_folder
- failed_when: "'object at path is already a directory' not in fail_file_to_folder.msg"
-
-- name: fail to copy folder to a file
- win_copy:
- src: subdir/
- dest: '{{test_win_copy_path}}\recursive-contents\foo.txt'
- register: fail_folder_to_file
- failed_when: "'object at parent directory path is already a file' not in fail_folder_to_file.msg"
-
-# https://github.com/ansible/ansible/issues/31336
-- name: create file with colon in the name
- copy:
- dest: '{{role_path}}/files-different/colon:file'
- content: test
- delegate_to: localhost
-
-- name: copy a file with colon as a source
- win_copy:
- src: '{{role_path}}/files-different/colon:file'
- dest: '{{test_win_copy_path}}\colon.file'
- register: copy_file_with_colon
-
-- name: get result of file with colon as a source
- win_stat:
- path: '{{test_win_copy_path}}\colon.file'
- register: copy_file_with_colon_result
-
-- name: assert results of copy a file with colon as a source
- assert:
- that:
- - copy_file_with_colon is changed
- - copy_file_with_colon_result.stat.exists == True
- - copy_file_with_colon_result.stat.checksum == "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
-
-- name: remove file with colon in the name
- file:
- path: '{{role_path}}/files-different/colon:file'
- state: absent
- delegate_to: localhost
-
-- name: copy an encrypted file without decrypting
- win_copy:
- src: '{{role_path}}/files-different/vault/vault-file'
- dest: '{{test_win_copy_path}}\vault-file'
- decrypt: no
- register: copy_encrypted_file
-
-- name: get stat of copied encrypted file without decrypting
- win_stat:
- path: '{{test_win_copy_path}}\vault-file'
- register: copy_encrypted_file_result
-
-- name: assert result of copy an encrypted file without decrypting
- assert:
- that:
- - copy_encrypted_file is changed
- - copy_encrypted_file_result.stat.checksum == "74a89620002d253f38834ee5b06cddd28956a43d"
-
-- name: copy an encrypted file without decrypting (idempotent)
- win_copy:
- src: '{{role_path}}/files-different/vault/vault-file'
- dest: '{{test_win_copy_path}}\vault-file'
- decrypt: no
- register: copy_encrypted_file_again
-
-- name: assert result of copy an encrypted file without decrypting (idempotent)
- assert:
- that:
- - copy_encrypted_file_again is not changed
-
-- name: copy folder with encrypted files without decrypting
- win_copy:
- src: '{{role_path}}/files-different/vault/'
- dest: '{{test_win_copy_path}}\encrypted-test'
- decrypt: no
- register: copy_encrypted_file
-
-- name: get result of copy folder with encrypted files without decrypting
- win_find:
- paths: '{{test_win_copy_path}}\encrypted-test'
- recurse: yes
- patterns: '*vault*'
- register: copy_encrypted_file_result
-
-- name: assert result of copy folder with encrypted files without decrypting
- assert:
- that:
- - copy_encrypted_file is changed
- - copy_encrypted_file_result.files|count == 2
- - copy_encrypted_file_result.files[0].checksum == "834563c94127730ecfa42dfc1e1821bbda2e51da"
- - copy_encrypted_file_result.files[1].checksum == "74a89620002d253f38834ee5b06cddd28956a43d"
-
-- name: copy folder with encrypted files without decrypting (idempotent)
- win_copy:
- src: '{{role_path}}/files-different/vault/'
- dest: '{{test_win_copy_path}}\encrypted-test'
- decrypt: no
- register: copy_encrypted_file_again
-
-- name: assert result of copy folder with encrypted files without decrypting (idempotent)
- assert:
- that:
- - copy_encrypted_file_again is not changed
-
-- name: remove test folder after local to remote tests
- win_file:
- path: '{{test_win_copy_path}}'
- state: absent
diff --git a/test/integration/targets/win_dns_client/aliases b/test/integration/targets/win_dns_client/aliases
deleted file mode 100644
index 423ce39108..0000000000
--- a/test/integration/targets/win_dns_client/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group2
diff --git a/test/integration/targets/win_dns_client/meta/main.yml b/test/integration/targets/win_dns_client/meta/main.yml
deleted file mode 100644
index 012551418a..0000000000
--- a/test/integration/targets/win_dns_client/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- setup_win_device
diff --git a/test/integration/targets/win_dns_client/tasks/main.yml b/test/integration/targets/win_dns_client/tasks/main.yml
deleted file mode 100644
index 0e8b011b17..0000000000
--- a/test/integration/targets/win_dns_client/tasks/main.yml
+++ /dev/null
@@ -1,217 +0,0 @@
----
-- set_fact:
- get_ip_script: |
- $adapter = Get-CimInstance -ClassName Win32_NetworkAdapter -Filter "NetConnectionID='{{ network_adapter_name }}'"
- $config = Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter "Index=$($adapter.DeviceID)"
- $ips = $config.DNSServerSearchOrder
- if ($ips) {
- $config.DNSServerSearchOrder[0]
- $config.DNSServerSearchOrder[1]
- }
-
-- name: set a single IPv4 address (check mode)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: 192.168.34.5
- register: set_single_check
- check_mode: yes
-
-- name: get result of set a single IPv4 address (check mode)
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_single_actual_check
-
-- name: assert set a single IPv4 address (check mode)
- assert:
- that:
- - set_single_check is changed
- - set_single_actual_check.stdout_lines == []
-
-- name: set a single IPv4 address
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: 192.168.34.5
- register: set_single
-
-- name: get result of set a single IPv4 address
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_single_actual
-
-- name: assert set a single IPv4 address
- assert:
- that:
- - set_single is changed
- - set_single_actual.stdout_lines == ["192.168.34.5"]
-
-- name: set a single IPv4 address (idempotent)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: 192.168.34.5
- register: set_single_again
-
-- name: assert set a single IPv4 address (idempotent)
- assert:
- that:
- - not set_single_again is changed
-
-- name: change IPv4 address to another value (check mode)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: 192.168.34.6
- register: change_single_check
- check_mode: yes
-
-- name: get result of change IPv4 address to another value (check mode)
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: check_single_actual_check
-
-- name: assert change IPv4 address to another value (check mode)
- assert:
- that:
- - change_single_check is changed
- - check_single_actual_check.stdout_lines == ["192.168.34.5"]
-
-- name: change IPv4 address to another value
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: 192.168.34.6
- register: change_single
-
-- name: get result of change IPv4 address to another value
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: check_single_actual
-
-- name: assert change IPv4 address to another value
- assert:
- that:
- - change_single is changed
- - check_single_actual.stdout_lines == ["192.168.34.6"]
-
-- name: set multiple IPv4 addresses (check mode)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses:
- - 192.168.34.7
- - 192.168.34.8
- register: set_multiple_check
- check_mode: yes
-
-- name: get result of set multiple IPv4 addresses (check mode)
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_multiple_actual_check
-
-- name: assert set multiple IPv4 addresses (check mode)
- assert:
- that:
- - set_multiple_check is changed
- - set_multiple_actual_check.stdout_lines == ["192.168.34.6"]
-
-- name: set multiple IPv4 addresses
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses:
- - 192.168.34.7
- - 192.168.34.8
- register: set_multiple
-
-- name: get result of set multiple IPv4 addresses
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_multiple_actual
-
-- name: assert set multiple IPv4 addresses
- assert:
- that:
- - set_multiple is changed
- - set_multiple_actual.stdout_lines == ["192.168.34.7", "192.168.34.8"]
-
-- name: set multiple IPv4 addresses (idempotent)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses:
- - 192.168.34.7
- - 192.168.34.8
- register: set_multiple_again
-
-- name: assert set multiple IPv4 addresses (idempotent)
- assert:
- that:
- - not set_multiple_again is changed
-
-- name: reset IPv4 DNS back to DHCP (check mode)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: []
- register: set_dhcp_check
- check_mode: yes
-
-- name: get result of reset IPv4 DNS back to DHCP (check mode)
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_dhcp_actual_check
-
-- name: assert reset IPv4 DNS back to DHCP (check mode)
- assert:
- that:
- - set_dhcp_check is changed
- - set_dhcp_actual_check.stdout_lines == ["192.168.34.7", "192.168.34.8"]
-
-- name: reset IPv4 DNS back to DHCP
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: []
- register: set_dhcp
-
-- name: get result of reset IPv4 DNS back to DHCP
- win_shell: '{{ get_ip_script }}'
- changed_when: no
- register: set_dhcp_actual
-
-- name: assert reset IPv4 DNS back to DHCP
- assert:
- that:
- - set_dhcp is changed
- - set_dhcp_actual.stdout_lines == []
-
-- name: reset IPv4 DNS back to DHCP (idempotent)
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- ipv4_addresses: []
- register: set_dhcp_again
-
-- name: assert reset IPv4 DNS back to DHCP (idempotent)
- assert:
- that:
- - set_dhcp_again is not changed
-
-# Legacy WMI does not support setting IPv6 addresses so we can only test this on newer hosts that have the new cmdlets
-- name: check if server supports IPv6
- win_shell: if (Get-Command -Name Get-NetAdapter -ErrorAction SilentlyContinue) { $true } else { $false }
- changed_when: no
- register: new_os
-
-- name: run IPv6 tests
- when: new_os.stdout | trim | bool
- block:
- - name: set IPv6 DNS address
- win_dns_client:
- adapter_names: '{{ network_adapter_name }}'
- dns_servers:
- - 2001:db8::1
- - 2001:db8::2
- register: set_ipv6
-
- - name: get result of set IPv6 DNS address
- win_shell: (Get-DnsClientServerAddress -InterfaceAlias '{{ network_adapter_name }}' -AddressFAmily IPv6).ServerAddresses
- changed_when: no
- register: set_ipv6_actual
-
- - name: assert set IPv6 DNS address
- assert:
- that:
- - set_ipv6 is changed
- - set_ipv6_actual.stdout_lines == ['2001:db8::1', '2001:db8::2']
diff --git a/test/integration/targets/win_domain_membership/aliases b/test/integration/targets/win_domain_membership/aliases
deleted file mode 100644
index 4c08975b17..0000000000
--- a/test/integration/targets/win_domain_membership/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group6
diff --git a/test/integration/targets/win_domain_membership/tasks/main.yml b/test/integration/targets/win_domain_membership/tasks/main.yml
deleted file mode 100644
index c6294bd32a..0000000000
--- a/test/integration/targets/win_domain_membership/tasks/main.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- name: get current workgroup
- win_shell: (Get-WmiObject Win32_ComputerSystem).Workgroup
- register: workgroup
-
-- name: fail if workgroup result is empty (means test host is in a domain)
- fail:
- msg: Cannot run tests for win_domain_membership when host is a member of a domain
- when: workgroup.stdout == ""
-
-- block:
- - include_tasks: tests.yml
-
- always:
- - name: revert workgroup back to original before tests
- win_domain_membership:
- workgroup_name: '{{workgroup.stdout_lines[0]}}'
- state: workgroup
- domain_admin_user: fake user
- domain_admin_password: fake password
diff --git a/test/integration/targets/win_domain_membership/tasks/tests.yml b/test/integration/targets/win_domain_membership/tasks/tests.yml
deleted file mode 100644
index 85f688e1d6..0000000000
--- a/test/integration/targets/win_domain_membership/tasks/tests.yml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-- name: change workgroup (check mode)
- win_domain_membership:
- workgroup_name: ANSIBLETEST
- state: workgroup
- domain_admin_user: fake user
- domain_admin_password: fake password
- register: change_workgroup_check
- check_mode: yes
-
-- name: get result of change workgroup (check mode)
- win_shell: (Get-WmiObject Win32_ComputerSystem).Workgroup
- register: change_workgroup_result_check
-
-- name: assert result of change workgroup (check mode)
- assert:
- that:
- - change_workgroup_check is changed
- - change_workgroup_result_check.stdout == workgroup.stdout
-
-- name: change workgroup
- win_domain_membership:
- workgroup_name: ANSIBLETEST
- state: workgroup
- domain_admin_user: fake user
- domain_admin_password: fake password
- register: change_workgroup
-
-- name: get result of change workgroup
- win_shell: (Get-WmiObject Win32_ComputerSystem).Workgroup
- register: change_workgroup_result
-
-- name: assert result of change workgroup
- assert:
- that:
- - change_workgroup is changed
- - change_workgroup_result.stdout_lines[0] == "ANSIBLETEST"
-
-- name: change workgroup (idempotent)
- win_domain_membership:
- workgroup_name: ANSIBLETEST
- state: workgroup
- domain_admin_user: fake user
- domain_admin_password: fake password
- register: change_workgroup_again
-
-- name: assert result of change workgroup (idempotent)
- assert:
- that:
- - change_workgroup_again is not changed
-
-- name: change workgroup fail invalid name
- win_domain_membership:
- workgroup_name: ANSIBLELONGNAMEFAILURE
- state: workgroup
- domain_admin_user: fake user
- domain_admin_password: fake password
- register: fail_change_workgroup
- failed_when: "fail_change_workgroup.msg != 'failed to set workgroup through WMI, return value: 2695'"
diff --git a/test/integration/targets/win_dsc/aliases b/test/integration/targets/win_dsc/aliases
deleted file mode 100644
index 79af200d66..0000000000
--- a/test/integration/targets/win_dsc/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/windows/group4
-skip/windows/2008
-skip/windows/2008-R2
-skip/windows/2012
-skip/windows/2012-R2
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.psm1 b/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.psm1
deleted file mode 100644
index dbf1ecf3ee..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.psm1
+++ /dev/null
@@ -1,41 +0,0 @@
-#Requires -Version 5.0 -Modules CimCmdlets
-
-Function Get-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Hashtable])]
- param(
- [Parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- [String]$KeyParam
- )
- return @{Value = [bool]$global:DSCMachineStatus}
-}
-
-Function Set-TargetResource
-{
- [CmdletBinding()]
- param (
- [Parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- [String]$KeyParam,
- [Bool]$Value = $true
- )
- $global:DSCMachineStatus = [int]$Value
-}
-
-Function Test-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Boolean])]
- param (
- [Parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- [String]$KeyParam,
- [Bool]$Value = $true
- )
- $false
-}
-
-Export-ModuleMember -Function *-TargetResource
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.schema.mof b/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.schema.mof
deleted file mode 100644
index 288b887722..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xSetReboot/ANSIBLE_xSetReboot.schema.mof
+++ /dev/null
@@ -1,7 +0,0 @@
-[ClassVersion("1.0.0"), FriendlyName("xSetReboot")]
-class ANSIBLE_xSetReboot : OMI_BaseResource
-{
- [Key] String KeyParam;
- [Write] Boolean Value;
-};
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1 b/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1
deleted file mode 100644
index 79f6496962..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1
+++ /dev/null
@@ -1,214 +0,0 @@
-#Requires -Version 5.0 -Modules CimCmdlets
-
-Function ConvertFrom-CimInstance {
- param(
- [Parameter(Mandatory=$true)][CimInstance]$Instance
- )
- $hashtable = @{
- _cim_instance = $Instance.CimSystemProperties.ClassName
- }
- foreach ($prop in $Instance.CimInstanceProperties) {
- $hashtable."$($prop.Name)" = ConvertTo-OutputValue -Value $prop.Value
- }
- return $hashtable
-}
-
-Function ConvertTo-OutputValue {
- param($Value)
-
- if ($Value -is [DateTime[]]) {
- $Value = $Value | ForEach-Object { $_.ToString("o") }
- } elseif ($Value -is [DateTime]) {
- $Value = $Value.ToString("o")
- } elseif ($Value -is [Double]) {
- $Value = $Value.ToString() # To avoid Python 2 double parsing issues on test validation
- } elseif ($Value -is [Double[]]) {
- $Value = $Value | ForEach-Object { $_.ToString() }
- } elseif ($Value -is [PSCredential]) {
- $password = $null
- $password_ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($Value.Password)
- try {
- $password = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($password_ptr)
- } finally {
- [System.Runtime.InteropServices.Marshal]::ZeroFreeGlobalAllocUnicode($password_ptr)
- }
- $Value = @{
- username = $Value.Username
- password = $password
- }
- } elseif ($Value -is [CimInstance[]]) {
- $value_list = [System.Collections.Generic.List`1[Hashtable]]@()
- foreach ($cim_instance in $Value) {
- $value_list.Add((ConvertFrom-CimInstance -Instance $cim_instance))
- }
- $Value = $value_list.ToArray()
- } elseif ($Value -is [CimInstance]) {
- $Value = ConvertFrom-CimInstance -Instance $Value
- }
-
- return ,$Value
-}
-
-Function Get-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Hashtable])]
- param(
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path
- )
- return @{
- Ensure = $Ensure
- Path = $Path
- }
-}
-
-Function Set-TargetResource
-{
- [CmdletBinding()]
- param
- (
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path,
-
- [String] $DefaultParam = "Default",
- [String] $StringParam,
- [String[]] $StringArrayParam,
- [SByte] $Int8Param,
- [SByte[]] $Int8ArrayParam,
- [Byte] $UInt8Param,
- [Byte[]] $UInt8ArrayParam,
- [Int16] $Int16Param,
- [Int16[]] $Int16ArrayParam,
- [UInt16] $UInt16Param,
- [UInt16[]] $UInt16ArrayParam,
- [Int32] $Int32Param,
- [Int32[]] $Int32ArrayParam,
- [UInt32] $UInt32Param,
- [UInt32[]] $UInt32ArrayParam,
- [Int64] $Int64Param,
- [Int64[]] $Int64ArrayParam,
- [UInt64] $UInt64Param,
- [UInt64[]] $UInt64ArrayParam,
- [Bool] $BooleanParam,
- [Bool[]] $BooleanArrayParam,
- [Char] $CharParam,
- [Char[]] $CharArrayParam,
- [Single] $SingleParam,
- [Single[]] $SingleArrayParam,
- [Double] $DoubleParam,
- [Double[]] $DoubleArrayParam,
- [DateTime] $DateTimeParam,
- [DateTime[]] $DateTimeArrayParam,
- [PSCredential] $PSCredentialParam,
- [CimInstance[]] $HashtableParam,
- [CimInstance] $CimInstanceParam,
- [CimInstance[]] $CimInstanceArrayParam,
- [CimInstance] $NestedCimInstanceParam,
- [CimInstance[]] $NestedCimInstanceArrayParam
- )
-
- $info = @{
- Version = "1.0.0"
- Ensure = @{
- Type = $Ensure.GetType().FullName
- Value = $Ensure
- }
- Path = @{
- Type = $Path.GetType().FullName
- Value = $Path
- }
- DefaultParam = @{
- Type = $DefaultParam.GetType().FullName
- Value = $DefaultParam
- }
- }
-
- foreach ($kvp in $PSCmdlet.MyInvocation.BoundParameters.GetEnumerator()) {
- $info."$($kvp.Key)" = @{
- Type = $kvp.Value.GetType().FullName
- Value = (ConvertTo-OutputValue -Value $kvp.Value)
- }
- }
-
- if (Test-Path -Path $Path) {
- Remove-Item -Path $Path -Force > $null
- }
- New-Item -Path $Path -ItemType File > $null
- Set-Content -Path $Path -Value (ConvertTo-Json -InputObject $info -Depth 10) > $null
- Write-Verbose -Message "set verbose"
- Write-Warning -Message "set warning"
-}
-
-Function Test-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Boolean])]
- param
- (
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path,
-
- [String] $DefaultParam = "Default",
- [String] $StringParam,
- [String[]] $StringArrayParam,
- [SByte] $Int8Param,
- [SByte[]] $Int8ArrayParam,
- [Byte] $UInt8Param,
- [Byte[]] $UInt8ArrayParam,
- [Int16] $Int16Param,
- [Int16[]] $Int16ArrayParam,
- [UInt16] $UInt16Param,
- [UInt16[]] $UInt16ArrayParam,
- [Int32] $Int32Param,
- [Int32[]] $Int32ArrayParam,
- [UInt32] $UInt32Param,
- [UInt32[]] $UInt32ArrayParam,
- [Int64] $Int64Param,
- [Int64[]] $Int64ArrayParam,
- [UInt64] $UInt64Param,
- [UInt64[]] $UInt64ArrayParam,
- [Bool] $BooleanParam,
- [Bool[]] $BooleanArrayParam,
- [Char] $CharParam,
- [Char[]] $CharArrayParam,
- [Single] $SingleParam,
- [Single[]] $SingleArrayParam,
- [Double] $DoubleParam,
- [Double[]] $DoubleArrayParam,
- [DateTime] $DateTimeParam,
- [DateTime[]] $DateTimeArrayParam,
- [PSCredential] $PSCredentialParam,
- [CimInstance[]] $HashtableParam,
- [CimInstance] $CimInstanceParam,
- [CimInstance[]] $CimInstanceArrayParam,
- [CimInstance] $NestedCimInstanceParam,
- [CimInstance[]] $NestedCimInstanceArrayParam
- )
- Write-Verbose -Message "test verbose"
- Write-Warning -Message "test warning"
- $exists = Test-Path -LiteralPath $Path -PathType Leaf
- if ($Ensure -eq "Present") {
- $exists
- } else {
- -not $exists
- }
-}
-
-Export-ModuleMember -Function *-TargetResource
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof b/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof
deleted file mode 100644
index c61b2b1e6a..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof
+++ /dev/null
@@ -1,60 +0,0 @@
-[ClassVersion("1.0.0")]
-class ANSIBLE_xTestClass
-{
- [Key] String Key;
- [Write] String StringValue;
- [Write] SInt32 IntValue;
- [Write] String StringArrayValue[];
-};
-
-[ClassVersion("1.0.0")]
-class ANSIBLE_xNestedClass
-{
- [Key] String KeyValue;
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimValue;
- [Write, EmbeddedInstance("MSFT_KeyValuePair")] String HashValue[];
- [Write] SInt16 IntValue;
-};
-
-[ClassVersion("1.0.0"), FriendlyName("xTestResource")]
-class ANSIBLE_xTestResource : OMI_BaseResource
-{
- [Key] String Path;
- [Required, ValueMap{"Present", "Absent"}, Values{"Present", "Absent"}] String Ensure;
- [Read] String ReadParam;
- [Write] String DefaultParam;
- [Write] String StringParam;
- [Write] String StringArrayParam[];
- [Write] SInt8 Int8Param;
- [Write] SInt8 Int8ArrayParam[];
- [Write] UInt8 UInt8Param;
- [Write] UInt8 UInt8ArrayParam[];
- [Write] SInt16 Int16Param;
- [Write] SInt16 Int16ArrayParam[];
- [Write] UInt16 UInt16Param;
- [Write] UInt16 UInt16ArrayParam[];
- [Write] SInt32 Int32Param;
- [Write] SInt32 Int32ArrayParam[];
- [Write] UInt32 UInt32Param;
- [Write] UInt32 UInt32ArrayParam[];
- [Write] SInt64 Int64Param;
- [Write] SInt64 Int64ArrayParam[];
- [Write] UInt64 UInt64Param;
- [Write] UInt64 UInt64ArrayParam[];
- [Write] Boolean BooleanParam;
- [Write] Boolean BooleanArrayParam[];
- [Write] Char16 CharParam;
- [Write] Char16 CharArrayParam[];
- [Write] Real32 SingleParam;
- [Write] Real32 SingleArrayParam[];
- [Write] Real64 DoubleParam;
- [Write] Real64 DoubleArrayParam[];
- [Write] DateTime DateTimeParam;
- [Write] DateTime DateTimeArrayParam[];
- [Write, EmbeddedInstance("MSFT_Credential")] String PSCredentialParam;
- [Write, EmbeddedInstance("MSFT_KeyValuePair")] String HashtableParam[];
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimInstanceArrayParam[];
- [Write, EmbeddedInstance("ANSIBLE_xNestedClass")] String NestedCimInstanceParam;
- [Write, EmbeddedInstance("ANSIBLE_xNestedClass")] String NestedCimInstanceArrayParam[];
-};
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/xTestDsc.psd1 b/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/xTestDsc.psd1
deleted file mode 100644
index 3d61611d70..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.0/xTestDsc.psd1
+++ /dev/null
@@ -1,13 +0,0 @@
-@{
- ModuleVersion = '1.0.0'
- GUID = '80c895c4-de3f-4d6d-8fa4-c504c96b6f22'
- Author = 'Ansible'
- CompanyName = 'Ansible'
- Copyright = '(c) 2019'
- Description = 'Test DSC Resource for Ansible integration tests'
- PowerShellVersion = '5.0'
- CLRVersion = '4.0'
- FunctionsToExport = '*'
- CmdletsToExport = '*'
-}
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1 b/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1
deleted file mode 100644
index d75256e1d9..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.psm1
+++ /dev/null
@@ -1,214 +0,0 @@
-#Requires -Version 5.0 -Modules CimCmdlets
-
-Function ConvertFrom-CimInstance {
- param(
- [Parameter(Mandatory=$true)][CimInstance]$Instance
- )
- $hashtable = @{
- _cim_instance = $Instance.CimSystemProperties.ClassName
- }
- foreach ($prop in $Instance.CimInstanceProperties) {
- $hashtable."$($prop.Name)" = ConvertTo-OutputValue -Value $prop.Value
- }
- return $hashtable
-}
-
-Function ConvertTo-OutputValue {
- param($Value)
-
- if ($Value -is [DateTime[]]) {
- $Value = $Value | ForEach-Object { $_.ToString("o") }
- } elseif ($Value -is [DateTime]) {
- $Value = $Value.ToString("o")
- } elseif ($Value -is [Double]) {
- $Value = $Value.ToString() # To avoid Python 2 double parsing issues on test validation
- } elseif ($Value -is [Double[]]) {
- $Value = $Value | ForEach-Object { $_.ToString() }
- } elseif ($Value -is [PSCredential]) {
- $password = $null
- $password_ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($Value.Password)
- try {
- $password = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($password_ptr)
- } finally {
- [System.Runtime.InteropServices.Marshal]::ZeroFreeGlobalAllocUnicode($password_ptr)
- }
- $Value = @{
- username = $Value.Username
- password = $password
- }
- } elseif ($Value -is [CimInstance[]]) {
- $value_list = [System.Collections.Generic.List`1[Hashtable]]@()
- foreach ($cim_instance in $Value) {
- $value_list.Add((ConvertFrom-CimInstance -Instance $cim_instance))
- }
- $Value = $value_list.ToArray()
- } elseif ($Value -is [CimInstance]) {
- $Value = ConvertFrom-CimInstance -Instance $Value
- }
-
- return ,$Value
-}
-
-Function Get-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Hashtable])]
- param(
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path
- )
- return @{
- Ensure = $Ensure
- Path = $Path
- }
-}
-
-Function Set-TargetResource
-{
- [CmdletBinding()]
- param
- (
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path,
-
- [String] $DefaultParam = "Default",
- [String] $StringParam,
- [String[]] $StringArrayParam,
- [SByte] $Int8Param,
- [SByte[]] $Int8ArrayParam,
- [Byte] $UInt8Param,
- [Byte[]] $UInt8ArrayParam,
- [Int16] $Int16Param,
- [Int16[]] $Int16ArrayParam,
- [UInt16] $UInt16Param,
- [UInt16[]] $UInt16ArrayParam,
- [Int32] $Int32Param,
- [Int32[]] $Int32ArrayParam,
- [UInt32] $UInt32Param,
- [UInt32[]] $UInt32ArrayParam,
- [Int64] $Int64Param,
- [Int64[]] $Int64ArrayParam,
- [UInt64] $UInt64Param,
- [UInt64[]] $UInt64ArrayParam,
- [Bool] $BooleanParam,
- [Bool[]] $BooleanArrayParam,
- [Char] $CharParam,
- [Char[]] $CharArrayParam,
- [Single] $SingleParam,
- [Single[]] $SingleArrayParam,
- [Double] $DoubleParam,
- [Double[]] $DoubleArrayParam,
- [DateTime] $DateTimeParam,
- [DateTime[]] $DateTimeArrayParam,
- [PSCredential] $PSCredentialParam,
- [CimInstance[]] $HashtableParam,
- [CimInstance] $CimInstanceParam,
- [CimInstance[]] $CimInstanceArrayParam,
- [CimInstance] $NestedCimInstanceParam,
- [CimInstance[]] $NestedCimInstanceArrayParam
- )
-
- $info = @{
- Version = "1.0.1"
- Ensure = @{
- Type = $Ensure.GetType().FullName
- Value = $Ensure
- }
- Path = @{
- Type = $Path.GetType().FullName
- Value = $Path
- }
- DefaultParam = @{
- Type = $DefaultParam.GetType().FullName
- Value = $DefaultParam
- }
- }
-
- foreach ($kvp in $PSCmdlet.MyInvocation.BoundParameters.GetEnumerator()) {
- $info."$($kvp.Key)" = @{
- Type = $kvp.Value.GetType().FullName
- Value = (ConvertTo-OutputValue -Value $kvp.Value)
- }
- }
-
- if (Test-Path -Path $Path) {
- Remove-Item -Path $Path -Force > $null
- }
- New-Item -Path $Path -ItemType File > $null
- Set-Content -Path $Path -Value (ConvertTo-Json -InputObject $info -Depth 10) > $null
- Write-Verbose -Message "set verbose"
- Write-Warning -Message "set warning"
-}
-
-Function Test-TargetResource
-{
- [CmdletBinding()]
- [OutputType([Boolean])]
- param
- (
- [Parameter(Mandatory = $true)]
- [ValidateSet("Present", "Absent")]
- [String] $Ensure = "Present",
-
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [String] $Path,
-
- [String] $DefaultParam = "Default",
- [String] $StringParam,
- [String[]] $StringArrayParam,
- [SByte] $Int8Param,
- [SByte[]] $Int8ArrayParam,
- [Byte] $UInt8Param,
- [Byte[]] $UInt8ArrayParam,
- [Int16] $Int16Param,
- [Int16[]] $Int16ArrayParam,
- [UInt16] $UInt16Param,
- [UInt16[]] $UInt16ArrayParam,
- [Int32] $Int32Param,
- [Int32[]] $Int32ArrayParam,
- [UInt32] $UInt32Param,
- [UInt32[]] $UInt32ArrayParam,
- [Int64] $Int64Param,
- [Int64[]] $Int64ArrayParam,
- [UInt64] $UInt64Param,
- [UInt64[]] $UInt64ArrayParam,
- [Bool] $BooleanParam,
- [Bool[]] $BooleanArrayParam,
- [Char] $CharParam,
- [Char[]] $CharArrayParam,
- [Single] $SingleParam,
- [Single[]] $SingleArrayParam,
- [Double] $DoubleParam,
- [Double[]] $DoubleArrayParam,
- [DateTime] $DateTimeParam,
- [DateTime[]] $DateTimeArrayParam,
- [PSCredential] $PSCredentialParam,
- [CimInstance[]] $HashtableParam,
- [CimInstance] $CimInstanceParam,
- [CimInstance[]] $CimInstanceArrayParam,
- [CimInstance] $NestedCimInstanceParam,
- [CimInstance[]] $NestedCimInstanceArrayParam
- )
- Write-Verbose -Message "test verbose"
- Write-Warning -Message "test warning"
- $exists = Test-Path -LiteralPath $Path -PathType Leaf
- if ($Ensure -eq "Present") {
- $exists
- } else {
- -not $exists
- }
-}
-
-Export-ModuleMember -Function *-TargetResource
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof b/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof
deleted file mode 100644
index 9301664b3c..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/DSCResources/ANSIBLE_xTestResource/ANSIBLE_xTestResource.schema.mof
+++ /dev/null
@@ -1,63 +0,0 @@
-[ClassVersion("1.0.1")]
-class ANSIBLE_xTestClass
-{
- [Key] String KeyValue;
- [Write, ValueMap{"Choice1", "Choice2"}, Values{"Choice1", "Choice2"}] String Choice;
- [Write] String StringValue;
- [Write] SInt32 IntValue;
- [Write] String StringArrayValue[];
-};
-
-[ClassVersion("1.0.1")]
-class ANSIBLE_xNestedClass
-{
- [Key] String KeyValue;
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimValue;
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimArrayValue[];
- [Write, EmbeddedInstance("MSFT_KeyValuePair")] String HashValue[];
- [Write] SInt16 IntValue;
-};
-
-[ClassVersion("1.0.1"), FriendlyName("xTestResource")]
-class ANSIBLE_xTestResource : OMI_BaseResource
-{
- [Key] String Path;
- [Required, ValueMap{"Present", "Absent"}, Values{"Present", "Absent"}] String Ensure;
- [Read] String ReadParam;
- [Write] String DefaultParam;
- [Write] String StringParam;
- [Write] String StringArrayParam[];
- [Write] SInt8 Int8Param;
- [Write] SInt8 Int8ArrayParam[];
- [Write] UInt8 UInt8Param;
- [Write] UInt8 UInt8ArrayParam[];
- [Write] SInt16 Int16Param;
- [Write] SInt16 Int16ArrayParam[];
- [Write] UInt16 UInt16Param;
- [Write] UInt16 UInt16ArrayParam[];
- [Write] SInt32 Int32Param;
- [Write] SInt32 Int32ArrayParam[];
- [Write] UInt32 UInt32Param;
- [Write] UInt32 UInt32ArrayParam[];
- [Write] SInt64 Int64Param;
- [Write] SInt64 Int64ArrayParam[];
- [Write] UInt64 UInt64Param;
- [Write] UInt64 UInt64ArrayParam[];
- [Write] Boolean BooleanParam;
- [Write] Boolean BooleanArrayParam[];
- [Write] Char16 CharParam;
- [Write] Char16 CharArrayParam[];
- [Write] Real32 SingleParam;
- [Write] Real32 SingleArrayParam[];
- [Write] Real64 DoubleParam;
- [Write] Real64 DoubleArrayParam[];
- [Write] DateTime DateTimeParam;
- [Write] DateTime DateTimeArrayParam[];
- [Write, EmbeddedInstance("MSFT_Credential")] String PSCredentialParam;
- [Write, EmbeddedInstance("MSFT_KeyValuePair")] String HashtableParam[];
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimInstanceParam;
- [Write, EmbeddedInstance("ANSIBLE_xTestClass")] String CimInstanceArrayParam[];
- [Write, EmbeddedInstance("ANSIBLE_xNestedClass")] String NestedCimInstanceParam;
- [Write, EmbeddedInstance("ANSIBLE_xNestedClass")] String NestedCimInstanceArrayParam[];
-};
-
diff --git a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/xTestDsc.psd1 b/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/xTestDsc.psd1
deleted file mode 100644
index 0c43b85238..0000000000
--- a/test/integration/targets/win_dsc/files/xTestDsc/1.0.1/xTestDsc.psd1
+++ /dev/null
@@ -1,13 +0,0 @@
-@{
- ModuleVersion = '1.0.1'
- GUID = '80c895c4-de3f-4d6d-8fa4-c504c96b6f22'
- Author = 'Ansible'
- CompanyName = 'Ansible'
- Copyright = '(c) 2019'
- Description = 'Test DSC Resource for Ansible integration tests'
- PowerShellVersion = '5.0'
- CLRVersion = '4.0'
- FunctionsToExport = '*'
- CmdletsToExport = '*'
-}
-
diff --git a/test/integration/targets/win_dsc/meta/main.yml b/test/integration/targets/win_dsc/meta/main.yml
deleted file mode 100644
index 9f37e96cd9..0000000000
--- a/test/integration/targets/win_dsc/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- setup_remote_tmp_dir
diff --git a/test/integration/targets/win_dsc/tasks/main.yml b/test/integration/targets/win_dsc/tasks/main.yml
deleted file mode 100644
index f37295ab71..0000000000
--- a/test/integration/targets/win_dsc/tasks/main.yml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-- name: get powershell version
- win_shell: $PSVersionTable.PSVersion.Major
- register: powershell_version
-
-- name: expect failure when running on old PS hosts
- win_dsc:
- resource_name: File
- register: fail_dsc_old
- failed_when: '"This module cannot run as it requires a minimum PowerShell version of 5.0" not in fail_dsc_old.msg'
- when: powershell_version.stdout_lines[0]|int < 5
-
-- name: run tests when PSv5+
- when: powershell_version.stdout_lines[0]|int >= 5
- block:
- - name: add remote temp dir to PSModulePath
- win_path:
- name: PSModulePath
- state: present
- scope: machine
- elements:
- - '{{ remote_tmp_dir }}'
-
- - name: copy custom DSC resources to remote temp dir
- win_copy:
- src: xTestDsc
- dest: '{{ remote_tmp_dir }}'
-
- - name: run tests
- include_tasks: tests.yml
-
- always:
- - name: remove remote tmp dir from PSModulePath
- win_path:
- name: PSModulePath
- state: absent
- scope: machine
- elements:
- - '{{ remote_tmp_dir }}'
diff --git a/test/integration/targets/win_dsc/tasks/tests.yml b/test/integration/targets/win_dsc/tasks/tests.yml
deleted file mode 100644
index d2a6802fdf..0000000000
--- a/test/integration/targets/win_dsc/tasks/tests.yml
+++ /dev/null
@@ -1,544 +0,0 @@
----
-- name: fail with incorrect DSC resource name
- win_dsc:
- resource_name: FakeResource
- register: fail_invalid_resource
- failed_when: fail_invalid_resource.msg != "Resource 'FakeResource' not found."
-
-- name: fail with invalid DSC version
- win_dsc:
- resource_name: xTestResource
- module_version: 0.0.1
- register: fail_invalid_version
- failed_when: 'fail_invalid_version.msg != "Resource ''xTestResource'' with version ''0.0.1'' not found. Versions installed: ''1.0.0'', ''1.0.1''."'
-
-- name: fail with mandatory option not set
- win_dsc:
- resource_name: xSetReboot
- Value: yes
- register: fail_man_key
- failed_when: 'fail_man_key.msg != "missing required arguments: KeyParam"'
-
-- name: fail with mandatory option not set in sub dict
- win_dsc:
- resource_name: xTestResource
- Path: C:\path
- Ensure: Present
- CimInstanceParam: # Missing KeyValue in dict
- Choice: Choice1
- register: fail_man_key_sub_dict
- failed_when: 'fail_man_key_sub_dict.msg != "missing required arguments: KeyValue found in CimInstanceParam"'
-
-- name: fail invalid option
- win_dsc:
- resource_name: xSetReboot
- KeyParam: key
- OtherParam: invalid
- register: fail_invalid_option
- failed_when: 'fail_invalid_option.msg != "Unsupported parameters for (win_dsc) module: OtherParam. Supported parameters include: KeyParam, PsDscRunAsCredential_username, module_version, Value, PsDscRunAsCredential_password, resource_name, DependsOn"'
-
-- name: fail invalid option in sub dict
- win_dsc:
- resource_name: xTestResource
- Path: C:\path
- Ensure: Present
- NestedCimInstanceParam:
- KeyValue: key
- CimValue:
- KeyValue: other key
- InvalidKey: invalid
- register: fail_invalid_option_sub_dict
- failed_when: 'fail_invalid_option_sub_dict.msg != "Unsupported parameters for (win_dsc) module: InvalidKey found in NestedCimInstanceParam -> CimValue. Supported parameters include: IntValue, KeyValue, StringArrayValue, Choice, StringValue"'
-
-- name: fail invalid read only option
- win_dsc:
- resource_name: xTestResource
- Path: C:\path
- Ensure: Present
- ReadParam: abc
- register: fail_invalid_option_read_only
- failed_when: '"Unsupported parameters for (win_dsc) module: ReadParam" not in fail_invalid_option_read_only.msg'
-
-- name: fail invalid choice
- win_dsc:
- resource_name: xTestResource
- Path: C:\path
- Ensure: invalid
- register: fail_invalid_choice
- failed_when: 'fail_invalid_choice.msg != "value of Ensure must be one of: Present, Absent. Got no match for: invalid"'
-
-- name: fail invalid choice in sub dict
- win_dsc:
- resource_name: xTestResource
- Path: C:\path
- Ensure: Present
- CimInstanceArrayParam:
- - KeyValue: key
- - KeyValue: key2
- Choice: Choice3
- register: fail_invalid_choice_sub_dict
- failed_when: 'fail_invalid_choice_sub_dict.msg != "value of Choice must be one of: Choice1, Choice2. Got no match for: Choice3 found in CimInstanceArrayParam"'
-
-- name: fail old version missing new option
- win_dsc:
- resource_name: xTestResource
- module_version: 1.0.0
- Path: C:\path
- Ensure: Present
- CimInstanceParam: # CimInstanceParam does not exist in the 1.0.0 version
- Key: key
- register: fail_invalid_option_old
- failed_when: '"Unsupported parameters for (win_dsc) module: CimInstanceParam" not in fail_invalid_option_old.msg'
-
-- name: fail old version missing new option sub dict
- win_dsc:
- resource_name: xTestResource
- module_version: 1.0.0
- Path: C:\path
- Ensure: Present
- CimInstanceArrayParam:
- - Key: key
- Choice: Choice1
- register: fail_invalid_option_old_sub_dict
- failed_when: 'fail_invalid_option_old_sub_dict.msg != "Unsupported parameters for (win_dsc) module: Choice found in CimInstanceArrayParam. Supported parameters include: Key, IntValue, StringArrayValue, StringValue"'
-
-- name: create test file (check mode)
- win_dsc:
- resource_name: File
- DestinationPath: '{{ remote_tmp_dir }}\dsc-file'
- Contents: file contents
- Attributes:
- - Hidden
- - ReadOnly
- Ensure: Present
- Type: File
- register: create_file_check
- check_mode: yes
-
-- name: get result of create test file (check mode)
- win_stat:
- path: '{{ remote_tmp_dir }}\dsc-file'
- register: create_file_actual_check
-
-- name: assert create test file (check mode)
- assert:
- that:
- - create_file_check is changed
- - create_file_check.module_version == None # Some built in modules don't have a version set
- - not create_file_check.reboot_required
- - not create_file_actual_check.stat.exists
-
-- name: assert create test file verbosity (check mode)
- assert:
- that:
- - create_file_check.verbose_test is defined
- - not create_file_check.verbose_set is defined
- when: ansible_verbosity >= 3
-
-- name: create test file
- win_dsc:
- resource_name: File
- DestinationPath: '{{ remote_tmp_dir }}\dsc-file'
- Contents: file contents
- Attributes:
- - Hidden
- - ReadOnly
- Ensure: Present
- Type: File
- register: create_file
-
-- name: get result of create test file
- win_stat:
- path: '{{ remote_tmp_dir }}\dsc-file'
- register: create_file_actual
-
-- name: assert create test file verbosity
- assert:
- that:
- - create_file.verbose_test is defined
- - create_file.verbose_set is defined
- when: ansible_verbosity >= 3
-
-- name: assert create test file
- assert:
- that:
- - create_file is changed
- - create_file.module_version == None
- - not create_file.reboot_required
- - create_file_actual.stat.exists
- - create_file_actual.stat.attributes == "ReadOnly, Hidden, Archive"
- - create_file_actual.stat.checksum == 'd48daab51112b49ecabd917adc345b8ba257055e'
-
-- name: create test file (idempotent)
- win_dsc:
- resource_name: File
- DestinationPath: '{{ remote_tmp_dir }}\dsc-file'
- Contents: file contents
- Attributes:
- - Hidden
- - ReadOnly
- Ensure: Present
- Type: File
- register: create_file_again
-
-- name: assert create test file (idempotent)
- assert:
- that:
- - not create_file_again is changed
- - create_file.module_version == None
- - not create_file.reboot_required
-
-- name: get SID of the current Ansible user
- win_shell: |
- Add-Type -AssemblyName System.DirectoryServices.AccountManagement
- [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.Sid.Value
- register: actual_sid
-
-- name: run DSC process as another user
- win_dsc:
- resource_name: Script
- GetScript: '@{ Result= "" }'
- SetScript: |
- Add-Type -AssemblyName System.DirectoryServices.AccountManagement
- $sid = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.Sid.Value
- Set-Content -Path "{{ remote_tmp_dir }}\runas.txt" -Value $sid
- TestScript: $false
- PsDscRunAsCredential_username: '{{ ansible_user }}'
- PsDscRunAsCredential_password: '{{ ansible_password }}'
- register: runas_user
-
-- name: get result of run DSC process as another user
- slurp:
- path: '{{ remote_tmp_dir }}\runas.txt'
- register: runas_user_result
-
-- name: assert run DSC process as another user
- assert:
- that:
- - runas_user is changed
- - runas_user.module_version != None # Can't reliably set the version but we can test it is set
- - not runas_user.reboot_required
- - runas_user_result.content|b64decode == actual_sid.stdout
-
-- name: run DSC that sets reboot_required with defaults
- win_dsc:
- resource_name: xSetReboot
- KeyParam: value # Just to satisfy the Resource with key validation
- register: set_reboot_defaults
-
-- name: assert run DSC that sets reboot_required with defaults
- assert:
- that:
- - set_reboot_defaults.reboot_required
-
-- name: run DSC that sets reboot_required with False
- win_dsc:
- resource_name: xSetReboot
- KeyParam: value
- Value: no
- register: set_reboot_false
-
-- name: assert run DSC that sets reboot_required with False
- assert:
- that:
- - not set_reboot_false.reboot_required
-
-- name: run DSC that sets reboot_required with True
- win_dsc:
- resource_name: xSetReboot
- KeyParam: value
- Value: yes
- register: set_reboot_true
-
-- name: assert run DSC that sets reboot_required with True
- assert:
- that:
- - set_reboot_true.reboot_required
-
-- name: test DSC with all types
- win_dsc:
- resource_name: xTestResource
- Path: '{{ remote_tmp_dir }}\test-types.json'
- Ensure: Present
- StringParam: string param
- StringArrayParam:
- - string 1
- - string 2
- Int8Param: 127 # [SByte]::MaxValue
- Int8ArrayParam:
- - 127
- - '127'
- UInt8Param: 255 # [Byte]::MaxValue
- UInt8ArrayParam:
- - 255
- - '255'
- Int16Param: 32767 # [Int16]::MaxValue
- Int16ArrayParam: 32767, 32767
- UInt16Param: '65535' # [UInt16]::MaxValue
- UInt16ArrayParam: 65535
- Int32Param: 2147483647 # [Int32]::MaxValue
- Int32ArrayParam: '2147483647'
- UInt32Param: '4294967295' # [UInt32]::MaxValue
- UInt32ArrayParam:
- - '4294967295'
- - 4294967295
- Int64Param: 9223372036854775807 # [Int64]::MaxValue
- Int64ArrayParam:
- - -9223372036854775808 # [Int64]::MinValue
- - 9223372036854775807
- UInt64Param: 18446744073709551615 # [UInt64]::MaxValue
- UInt64ArrayParam:
- - 0 # [UInt64]::MinValue
- - 18446744073709551615
- BooleanParam: True
- BooleanArrayParam:
- - True
- - 'True'
- - 'true'
- - 'y'
- - 'yes'
- - 1
- - False
- - 'False'
- - 'false'
- - 'n'
- - 'no'
- - 0
- CharParam: c
- CharArrayParam:
- - c
- - h
- - a
- - r
- SingleParam: 3.402823E+38
- SingleArrayParam:
- - '3.402823E+38'
- - 1.2393494
- DoubleParam: 1.79769313486232E+300
- DoubleArrayParam:
- - '1.79769313486232E+300'
- - 3.56821831681516
- DateTimeParam: '2019-02-22T13:57:31.2311892-04:00'
- DateTimeArrayParam:
- - '2019-02-22T13:57:31.2311892+00:00'
- - '2019-02-22T13:57:31.2311892+04:00'
- PSCredentialParam_username: username1
- PSCredentialParam_password: password1
- HashtableParam:
- key1: string 1
- key2: ''
- key3: 1
- CimInstanceParam:
- KeyValue: a
- CimInstanceArrayParam:
- - KeyValue: b
- Choice: Choice1
- StringValue: string 1
- IntValue: 1
- StringArrayValue:
- - abc
- - def
- - KeyValue: c
- Choice: Choice2
- StringValue: string 2
- IntValue: '2'
- StringArrayValue:
- - ghi
- - jkl
- NestedCimInstanceParam:
- KeyValue: key value
- CimValue:
- KeyValue: d
- CimArrayValue:
- - KeyValue: e
- Choice: Choice2
- HashValue:
- a: a
- IntValue: '300'
- register: dsc_types
-
-- name: get result of test DSC with all types
- slurp:
- path: '{{ remote_tmp_dir }}\test-types.json'
- register: dsc_types_raw
-
-- name: convert result of test DSC with all types to dict
- set_fact:
- dsc_types_actual: '{{ dsc_types_raw.content | b64decode | from_json }}'
-
-- name: assert test DSC with all types
- assert:
- that:
- - dsc_types is changed
- - dsc_types.module_version == '1.0.1'
- - not dsc_types.reboot_required
- - dsc_types_actual.Version == '1.0.1'
- - dsc_types_actual.Verbose.Value.IsPresent
- - dsc_types_actual.DefaultParam.Value == 'Default' # ensures that the default is set in the engine if we don't set it outselves
- - dsc_types_actual.Ensure.Value == 'Present'
- - dsc_types_actual.Path.Value == remote_tmp_dir + "\\test-types.json"
- - dsc_types_actual.StringParam.Type == 'System.String'
- - dsc_types_actual.StringParam.Value == 'string param'
- - dsc_types_actual.StringArrayParam.Type == 'System.String[]'
- - dsc_types_actual.StringArrayParam.Value == ['string 1', 'string 2']
- - dsc_types_actual.Int8Param.Type == 'System.SByte'
- - dsc_types_actual.Int8Param.Value == 127
- - dsc_types_actual.Int8ArrayParam.Type == 'System.SByte[]'
- - dsc_types_actual.Int8ArrayParam.Value == [127, 127]
- - dsc_types_actual.UInt8Param.Type == 'System.Byte'
- - dsc_types_actual.UInt8Param.Value == 255
- - dsc_types_actual.UInt8ArrayParam.Type == 'System.Byte[]'
- - dsc_types_actual.UInt8ArrayParam.Value == [255, 255]
- - dsc_types_actual.Int16Param.Type == 'System.Int16'
- - dsc_types_actual.Int16Param.Value == 32767
- - dsc_types_actual.Int16ArrayParam.Type == 'System.Int16[]'
- - dsc_types_actual.Int16ArrayParam.Value == [32767, 32767]
- - dsc_types_actual.UInt16Param.Type == 'System.UInt16'
- - dsc_types_actual.UInt16Param.Value == 65535
- - dsc_types_actual.UInt16ArrayParam.Type == 'System.UInt16[]'
- - dsc_types_actual.UInt16ArrayParam.Value == [65535]
- - dsc_types_actual.Int32Param.Type == 'System.Int32'
- - dsc_types_actual.Int32Param.Value == 2147483647
- - dsc_types_actual.Int32ArrayParam.Type == 'System.Int32[]'
- - dsc_types_actual.Int32ArrayParam.Value == [2147483647]
- - dsc_types_actual.UInt32Param.Type == 'System.UInt32'
- - dsc_types_actual.UInt32Param.Value == 4294967295
- - dsc_types_actual.UInt32ArrayParam.Type == 'System.UInt32[]'
- - dsc_types_actual.UInt32ArrayParam.Value == [4294967295, 4294967295]
- - dsc_types_actual.Int64Param.Type == 'System.Int64'
- - dsc_types_actual.Int64Param.Value == 9223372036854775807
- - dsc_types_actual.Int64ArrayParam.Type == 'System.Int64[]'
- - dsc_types_actual.Int64ArrayParam.Value == [-9223372036854775808, 9223372036854775807]
- - dsc_types_actual.UInt64Param.Type == 'System.UInt64'
- - dsc_types_actual.UInt64Param.Value == 18446744073709551615
- - dsc_types_actual.UInt64ArrayParam.Type == 'System.UInt64[]'
- - dsc_types_actual.UInt64ArrayParam.Value == [0, 18446744073709551615]
- - dsc_types_actual.BooleanParam.Type == 'System.Boolean'
- - dsc_types_actual.BooleanParam.Value == True
- - dsc_types_actual.BooleanArrayParam.Type == 'System.Boolean[]'
- - dsc_types_actual.BooleanArrayParam.Value == [True, True, True, True, True, True, False, False, False, False, False, False]
- - dsc_types_actual.CharParam.Type == 'System.Char'
- - dsc_types_actual.CharParam.Value == 'c'
- - dsc_types_actual.CharArrayParam.Type == 'System.Char[]'
- - dsc_types_actual.CharArrayParam.Value == ['c', 'h', 'a', 'r']
- - dsc_types_actual.SingleParam.Type == 'System.Single'
- - dsc_types_actual.SingleParam.Value|string == '3.402823e+38'
- - dsc_types_actual.SingleArrayParam.Type == 'System.Single[]'
- - dsc_types_actual.SingleArrayParam.Value|length == 2
- - dsc_types_actual.SingleArrayParam.Value[0]|string == '3.402823e+38'
- - dsc_types_actual.SingleArrayParam.Value[1]|string == '1.23934937'
- - dsc_types_actual.DoubleParam.Type == 'System.Double'
- - dsc_types_actual.DoubleParam.Value == '1.79769313486232E+300'
- - dsc_types_actual.DoubleArrayParam.Type == 'System.Double[]'
- - dsc_types_actual.DoubleArrayParam.Value|length == 2
- - dsc_types_actual.DoubleArrayParam.Value[0] == '1.79769313486232E+300'
- - dsc_types_actual.DoubleArrayParam.Value[1] == '3.56821831681516'
- - dsc_types_actual.DateTimeParam.Type == 'System.DateTime'
- - dsc_types_actual.DateTimeParam.Value == '2019-02-22T17:57:31.2311890+00:00'
- - dsc_types_actual.DateTimeArrayParam.Type == 'System.DateTime[]'
- - dsc_types_actual.DateTimeArrayParam.Value == ['2019-02-22T13:57:31.2311890+00:00', '2019-02-22T09:57:31.2311890+00:00']
- - dsc_types_actual.PSCredentialParam.Type == 'System.Management.Automation.PSCredential'
- - dsc_types_actual.PSCredentialParam.Value.username == 'username1'
- - dsc_types_actual.PSCredentialParam.Value.password == 'password1'
- # Hashtable is actually a CimInstance[] of MSFT_KeyValuePairs
- - dsc_types_actual.HashtableParam.Type == 'Microsoft.Management.Infrastructure.CimInstance[]'
- - dsc_types_actual.HashtableParam.Value|length == 3
- # Can't guarantee the order of the keys so just check they are the values they could be
- - dsc_types_actual.HashtableParam.Value[0].Key in ["key1", "key2", "key3"]
- - dsc_types_actual.HashtableParam.Value[0].Value in ["string 1", "1", ""]
- - dsc_types_actual.HashtableParam.Value[0]._cim_instance == 'MSFT_KeyValuePair'
- - dsc_types_actual.HashtableParam.Value[1].Key in ["key1", "key2", "key3"]
- - dsc_types_actual.HashtableParam.Value[1].Value in ["string 1", "1", ""]
- - dsc_types_actual.HashtableParam.Value[1]._cim_instance == 'MSFT_KeyValuePair'
- - dsc_types_actual.HashtableParam.Value[2].Key in ["key1", "key2", "key3"]
- - dsc_types_actual.HashtableParam.Value[2].Value in ["string 1", "1", ""]
- - dsc_types_actual.HashtableParam.Value[2]._cim_instance == 'MSFT_KeyValuePair'
- - dsc_types_actual.CimInstanceParam.Type == 'Microsoft.Management.Infrastructure.CimInstance'
- - dsc_types_actual.CimInstanceParam.Value.Choice == None
- - dsc_types_actual.CimInstanceParam.Value.IntValue == None
- - dsc_types_actual.CimInstanceParam.Value.KeyValue == 'a'
- - dsc_types_actual.CimInstanceParam.Value.StringArrayValue == None
- - dsc_types_actual.CimInstanceParam.Value.StringValue == None
- - dsc_types_actual.CimInstanceParam.Value._cim_instance == "ANSIBLE_xTestClass"
- - dsc_types_actual.CimInstanceArrayParam.Type == 'Microsoft.Management.Infrastructure.CimInstance[]'
- - dsc_types_actual.CimInstanceArrayParam.Value|length == 2
- - dsc_types_actual.CimInstanceArrayParam.Value[0].Choice == 'Choice1'
- - dsc_types_actual.CimInstanceArrayParam.Value[0].IntValue == 1
- - dsc_types_actual.CimInstanceArrayParam.Value[0].KeyValue == 'b'
- - dsc_types_actual.CimInstanceArrayParam.Value[0].StringArrayValue == ['abc', 'def']
- - dsc_types_actual.CimInstanceArrayParam.Value[0].StringValue == 'string 1'
- - dsc_types_actual.CimInstanceArrayParam.Value[0]._cim_instance == 'ANSIBLE_xTestClass'
- - dsc_types_actual.CimInstanceArrayParam.Value[1].Choice == 'Choice2'
- - dsc_types_actual.CimInstanceArrayParam.Value[1].IntValue == 2
- - dsc_types_actual.CimInstanceArrayParam.Value[1].KeyValue == 'c'
- - dsc_types_actual.CimInstanceArrayParam.Value[1].StringArrayValue == ['ghi', 'jkl']
- - dsc_types_actual.CimInstanceArrayParam.Value[1].StringValue == 'string 2'
- - dsc_types_actual.CimInstanceArrayParam.Value[1]._cim_instance == 'ANSIBLE_xTestClass'
- - dsc_types_actual.NestedCimInstanceParam.Type == 'Microsoft.Management.Infrastructure.CimInstance'
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue|length == 1
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0].Choice == 'Choice2'
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0].IntValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0].KeyValue == 'e'
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0].StringArrayValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0].StringValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimArrayValue[0]._cim_instance == 'ANSIBLE_xTestClass'
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue.Choice == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue.IntValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue.KeyValue == 'd'
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue.StringArrayValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue.StringValue == None
- - dsc_types_actual.NestedCimInstanceParam.Value.CimValue._cim_instance == 'ANSIBLE_xTestClass'
- - dsc_types_actual.NestedCimInstanceParam.Value.HashValue|length == 1
- - dsc_types_actual.NestedCimInstanceParam.Value.HashValue[0].Key == 'a'
- - dsc_types_actual.NestedCimInstanceParam.Value.HashValue[0].Value == 'a'
- - dsc_types_actual.NestedCimInstanceParam.Value.HashValue[0]._cim_instance == 'MSFT_KeyValuePair'
- - dsc_types_actual.NestedCimInstanceParam.Value.IntValue == 300
- - dsc_types_actual.NestedCimInstanceParam.Value.KeyValue == 'key value'
- - dsc_types_actual.NestedCimInstanceParam.Value._cim_instance == 'ANSIBLE_xNestedClass'
-
-- name: test DSC with all types older version
- win_dsc:
- resource_name: xTestResource
- module_version: 1.0.0
- Path: '{{ remote_tmp_dir }}\test-types.json'
- Ensure: Absent
- StringParam: string param old
- CimInstanceArrayParam:
- - Key: old key
- StringValue: string old 1
- IntValue: 0
- StringArrayValue:
- - zyx
- - wvu
- register: dsc_types_old
-
-- name: get result of test DSC with all types older version
- slurp:
- path: '{{ remote_tmp_dir }}\test-types.json'
- register: dsc_types_old_raw
-
-- name: convert result of test DSC with all types to dict
- set_fact:
- dsc_types_old_actual: '{{ dsc_types_old_raw.content | b64decode | from_json }}'
-
-- name: assert test DSC with all types older version
- assert:
- that:
- - dsc_types_old is changed
- - dsc_types_old.module_version == '1.0.0'
- - not dsc_types_old.reboot_required
- - dsc_types_old_actual.Version == '1.0.0'
- - dsc_types_old_actual.Verbose.Value.IsPresent
- - dsc_types_old_actual.DefaultParam.Value == 'Default'
- - dsc_types_old_actual.Ensure.Value == 'Absent'
- - dsc_types_old_actual.Path.Value == remote_tmp_dir + "\\test-types.json"
- - dsc_types_old_actual.StringParam.Type == 'System.String'
- - dsc_types_old_actual.StringParam.Value == 'string param old'
- - dsc_types_old_actual.CimInstanceArrayParam.Type == 'Microsoft.Management.Infrastructure.CimInstance[]'
- - dsc_types_old_actual.CimInstanceArrayParam.Value|length == 1
- - not dsc_types_old_actual.CimInstanceArrayParam.Value[0].Choice is defined # 1.0.0 does not have a Choice option
- - dsc_types_old_actual.CimInstanceArrayParam.Value[0].IntValue == 0
- - dsc_types_old_actual.CimInstanceArrayParam.Value[0].Key == 'old key'
- - dsc_types_old_actual.CimInstanceArrayParam.Value[0].StringArrayValue == ['zyx', 'wvu']
- - dsc_types_old_actual.CimInstanceArrayParam.Value[0].StringValue == 'string old 1'
- - dsc_types_old_actual.CimInstanceArrayParam.Value[0]._cim_instance == 'ANSIBLE_xTestClass'
diff --git a/test/integration/targets/win_environment/aliases b/test/integration/targets/win_environment/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_environment/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_environment/defaults/main.yml b/test/integration/targets/win_environment/defaults/main.yml
deleted file mode 100644
index 0eb44ae991..0000000000
--- a/test/integration/targets/win_environment/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-test_environment_name: TEST_VALUE
-test_machine_environment_value: "%SystemRoot%\\System32"
-test_new_machine_environment_value: C:\Windows\System32
-test_user_environment_value: C:\Program Files
-test_new_user_environment_value: C:\Program Files (x86)
diff --git a/test/integration/targets/win_environment/tasks/main.yml b/test/integration/targets/win_environment/tasks/main.yml
deleted file mode 100644
index 34f46f3bb3..0000000000
--- a/test/integration/targets/win_environment/tasks/main.yml
+++ /dev/null
@@ -1,267 +0,0 @@
----
-- name: ensure test environment value is not set in all scope
- win_environment:
- name: "{{test_environment_name}}"
- state: absent
- level: "{{item}}"
- with_items:
- - machine
- - process
- - user
-
-- name: fail to create environment value with null value
- win_environment:
- name: "{{test_environment_name}}"
- state: present
- level: machine
- register: create_fail_null
- failed_when: 'create_fail_null.msg != "state is present but all of the following are missing: value"'
-
-- name: fail to create environment value with empty value
- win_environment:
- name: "{{test_environment_name}}"
- value: ''
- state: present
- level: machine
- register: create_fail_empty_string
- failed_when: create_fail_empty_string.msg != "When state=present, value must be defined and not an empty string, if you wish to remove the envvar, set state=absent"
-
-- name: create test environment value for machine check
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_machine_environment_value}}"
- state: present
- level: machine
- register: create_machine_check
- check_mode: True
-
-- name: get value of environment key for machine after changing check
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_machine_check_actual
-
-- name: assert change test environment value for machine check
- assert:
- that:
- - create_machine_check is changed
- - create_machine_check_actual.stdout == ""
-
-- name: create test environment value for machine
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_machine_environment_value}}"
- state: present
- level: machine
- register: create_machine
-
-- name: get value of environment key for machine after changing
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_machine_actual
-
-- name: assert test environment value for machine
- assert:
- that:
- - create_machine is changed
- - create_machine.before_value == None
- - create_machine_actual.stdout == "{{test_machine_environment_value}}\r\n"
-
-- name: create test environment value for machine again
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_machine_environment_value}}"
- state: present
- level: machine
- register: create_machine_again
-
-- name: get value of environment key for machine after changing again
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_machine_actual_again
-
-- name: assert create test environment value for machine again
- assert:
- that:
- - create_machine_again is not changed
- - create_machine_again.before_value == test_machine_environment_value
- - create_machine_actual_again.stdout == "{{test_machine_environment_value}}\r\n"
-
-- name: change test environment value for machine check
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_machine_environment_value}}"
- state: present
- level: machine
- register: change_machine_check
- check_mode: True
-
-- name: get value of environment key for machine after changing check
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_machine_actual_check
-
-- name: assert change test environment value for machine check
- assert:
- that:
- - change_machine_check is changed
- - change_machine_check.before_value == test_machine_environment_value
- - change_machine_actual_check.stdout == "{{test_machine_environment_value}}\r\n"
-
-- name: change test environment value for machine
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_machine_environment_value}}"
- state: present
- level: machine
- register: change_machine
-
-- name: get value of environment key for machine after changing
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_machine_actual
-
-- name: assert change test environment value for machine
- assert:
- that:
- - change_machine is changed
- - change_machine.before_value == test_machine_environment_value
- - change_machine_actual.stdout == "{{test_new_machine_environment_value}}\r\n"
-
-- name: change test environment value for machine again
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_machine_environment_value}}"
- state: present
- level: machine
- register: change_machine_again
-
-- name: get value of environment key for machine after changing again
- win_command: powershell.exe "[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_machine_actual_again
-
-- name: assert change test environment value for machine again
- assert:
- that:
- - change_machine_again is not changed
- - change_machine_again.before_value == test_new_machine_environment_value
- - change_machine_actual_again.stdout == "{{test_new_machine_environment_value}}\r\n"
-
-- name: create test environment value for user check
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_user_environment_value}}"
- state: present
- level: user
- register: create_user_check
- check_mode: True
-
-- name: get value of environment key for user after changing check
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_user_check_actual
-
-- name: assert change test environment value for user check
- assert:
- that:
- - create_user_check is changed
- - create_user_check_actual.stdout == ""
-
-- name: create test environment value for user
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_user_environment_value}}"
- state: present
- level: user
- register: create_user
-
-- name: get value of environment key for user after changing
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_user_actual
-
-- name: assert test environment value for user
- assert:
- that:
- - create_user is changed
- - create_user.before_value == None
- - create_user_actual.stdout == "{{test_user_environment_value}}\r\n"
-
-- name: create test environment value for user again
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_user_environment_value}}"
- state: present
- level: user
- register: create_user_again
-
-- name: get value of environment key for user after changing again
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: create_user_actual_again
-
-- name: assert create test environment value for user again
- assert:
- that:
- - create_user_again is not changed
- - create_user_again.before_value == test_user_environment_value
- - create_user_actual_again.stdout == "{{test_user_environment_value}}\r\n"
-
-- name: change test environment value for user check
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_user_environment_value}}"
- state: present
- level: user
- register: change_user_check
- check_mode: True
-
-- name: get value of environment key for user after changing check
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_user_actual_check
-
-- name: assert change test environment value for user check
- assert:
- that:
- - change_user_check is changed
- - change_user_check.before_value == test_user_environment_value
- - change_user_actual_check.stdout == "{{test_user_environment_value}}\r\n"
-
-- name: change test environment value for user
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_user_environment_value}}"
- state: present
- level: user
- register: change_user
-
-- name: get value of environment key for user after changing
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_user_actual
-
-- name: assert change test environment value for user
- assert:
- that:
- - change_user is changed
- - change_user.before_value == test_user_environment_value
- - change_user_actual.stdout == "{{test_new_user_environment_value}}\r\n"
-
-- name: change test environment value for user again
- win_environment:
- name: "{{test_environment_name}}"
- value: "{{test_new_user_environment_value}}"
- state: present
- level: user
- register: change_user_again
-
-- name: get value of environment key for user after changing again
- win_command: powershell.exe "[Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true).GetValue('{{test_environment_name}}', $null, 'DoNotExpandEnvironmentNames')"
- register: change_user_actual_again
-
-- name: assert change test environment value for user again
- assert:
- that:
- - change_user_again is not changed
- - change_user_again.before_value == test_new_user_environment_value
- - change_user_actual_again.stdout == "{{test_new_user_environment_value}}\r\n"
-
-- name: cleanup test changes
- win_environment:
- name: "{{test_environment_name}}"
- state: absent
- level: "{{item}}"
- with_items:
- - machine
- - process
- - user
diff --git a/test/integration/targets/win_feature/aliases b/test/integration/targets/win_feature/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_feature/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_feature/defaults/main.yml b/test/integration/targets/win_feature/defaults/main.yml
deleted file mode 100644
index e1833cd8a8..0000000000
--- a/test/integration/targets/win_feature/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-# Feature not normally installed by default.
-test_win_feature_name: Telnet-Client
diff --git a/test/integration/targets/win_feature/tasks/main.yml b/test/integration/targets/win_feature/tasks/main.yml
deleted file mode 100644
index a52b3c0160..0000000000
--- a/test/integration/targets/win_feature/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# test code for the win_feature module
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-
-- name: check whether servermanager module is available (windows 2008 r2 or later)
- win_shell: if (Get-Command -Name Add-WindowsFeature -ErrorAction SilentlyContinue) { $true } else { $false }
- changed_when: False
- register: win_feature_has_servermanager
-
-- name: run tests
- include_tasks: tests.yml
- when: win_feature_has_servermanager.stdout | trim | bool
diff --git a/test/integration/targets/win_feature/tasks/tests.yml b/test/integration/targets/win_feature/tasks/tests.yml
deleted file mode 100644
index 7a48117b70..0000000000
--- a/test/integration/targets/win_feature/tasks/tests.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-# test code for the win_feature module
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: start with feature absent
- win_feature:
- name: "{{ test_win_feature_name }}"
- state: absent
-
-- name: install feature
- win_feature:
- name: "{{ test_win_feature_name }}"
- state: present
- include_sub_features: yes
- include_management_tools: yes
- register: win_feature_install_result
-
-- name: check result of installing feature
- assert:
- that:
- - "win_feature_install_result is changed"
- - "win_feature_install_result.success"
- - "win_feature_install_result.exitcode == 'Success'"
- - "not win_feature_install_result.reboot_required"
- - "win_feature_install_result.feature_result|length == 1"
- - "win_feature_install_result.feature_result[0].id"
- - "win_feature_install_result.feature_result[0].display_name"
- - "win_feature_install_result.feature_result[0].message is defined"
- - "win_feature_install_result.feature_result[0].reboot_required is defined"
- - "win_feature_install_result.feature_result[0].skip_reason"
- - "win_feature_install_result.feature_result[0].success is defined"
-
-- name: install feature again
- win_feature:
- name: "{{ test_win_feature_name }}"
- state: present
- include_sub_features: yes
- include_management_tools: yes
- register: win_feature_install_again_result
-
-- name: check result of installing feature again
- assert:
- that:
- - "win_feature_install_again_result is not changed"
- - "win_feature_install_again_result.success"
- - "win_feature_install_again_result.exitcode == 'NoChangeNeeded'"
- - "not win_feature_install_again_result.reboot_required"
- - "win_feature_install_again_result.feature_result == []"
-
-- name: remove feature
- win_feature:
- name: "{{ test_win_feature_name }}"
- state: absent
- register: win_feature_remove_result
-
-- name: check result of removing feature
- assert:
- that:
- - "win_feature_remove_result is changed"
- - "win_feature_remove_result.success"
- - "win_feature_remove_result.exitcode == 'Success'"
- - "not win_feature_remove_result.reboot_required"
- - "win_feature_remove_result.feature_result|length == 1"
- - "win_feature_remove_result.feature_result[0].id"
- - "win_feature_remove_result.feature_result[0].display_name"
- - "win_feature_remove_result.feature_result[0].message is defined"
- - "win_feature_remove_result.feature_result[0].reboot_required is defined"
- - "win_feature_remove_result.feature_result[0].skip_reason"
- - "win_feature_remove_result.feature_result[0].success is defined"
- when: win_feature_has_servermanager is successful
-
-- name: remove feature again
- win_feature:
- name: "{{ test_win_feature_name }}"
- state: absent
- register: win_feature_remove_again_result
-
-- name: check result of removing feature again
- assert:
- that:
- - "win_feature_remove_again_result is not changed"
- - "win_feature_remove_again_result.success"
- - "win_feature_remove_again_result.exitcode == 'NoChangeNeeded'"
- - "not win_feature_remove_again_result.reboot_required"
- - "win_feature_remove_again_result.feature_result == []"
-
-- name: try to install an invalid feature name
- win_feature:
- name: "Microsoft-Bob"
- state: present
- register: win_feature_install_invalid_result
- ignore_errors: true
-
-- name: check result of installing invalid feature name
- assert:
- that:
- - "win_feature_install_invalid_result is failed"
- - "win_feature_install_invalid_result is not changed"
- - "'The name was not found' in win_feature_install_invalid_result.msg"
-
-- name: try to remove an invalid feature name
- win_feature:
- name: "Microsoft-Bob"
- state: absent
- register: win_feature_remove_invalid_result
- ignore_errors: true
-
-- name: check result of removing invalid feature name
- assert:
- that:
- - "win_feature_remove_invalid_result is failed"
- - "win_feature_remove_invalid_result is not changed"
- - "'The name was not found' in win_feature_remove_invalid_result.msg"
diff --git a/test/integration/targets/win_file/aliases b/test/integration/targets/win_file/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_file/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_file/files/foo.txt b/test/integration/targets/win_file/files/foo.txt
deleted file mode 100644
index 7c6ded14ec..0000000000
--- a/test/integration/targets/win_file/files/foo.txt
+++ /dev/null
@@ -1 +0,0 @@
-foo.txt
diff --git a/test/integration/targets/win_file/files/foobar/directory/fileC b/test/integration/targets/win_file/files/foobar/directory/fileC
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/win_file/files/foobar/directory/fileC
+++ /dev/null
diff --git a/test/integration/targets/win_file/files/foobar/directory/fileD b/test/integration/targets/win_file/files/foobar/directory/fileD
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/win_file/files/foobar/directory/fileD
+++ /dev/null
diff --git a/test/integration/targets/win_file/files/foobar/fileA b/test/integration/targets/win_file/files/foobar/fileA
deleted file mode 100644
index ab47708c98..0000000000
--- a/test/integration/targets/win_file/files/foobar/fileA
+++ /dev/null
@@ -1 +0,0 @@
-fileA
diff --git a/test/integration/targets/win_file/files/foobar/fileB b/test/integration/targets/win_file/files/foobar/fileB
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/win_file/files/foobar/fileB
+++ /dev/null
diff --git a/test/integration/targets/win_file/meta/main.yml b/test/integration/targets/win_file/meta/main.yml
deleted file mode 100644
index d328716dfa..0000000000
--- a/test/integration/targets/win_file/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_win_tests
diff --git a/test/integration/targets/win_file/tasks/main.yml b/test/integration/targets/win_file/tasks/main.yml
deleted file mode 100644
index c528888665..0000000000
--- a/test/integration/targets/win_file/tasks/main.yml
+++ /dev/null
@@ -1,614 +0,0 @@
-# Test code for the file module.
-# (c) 2014, Richard Isaacson <richard.c.isaacson@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- set_fact: output_file={{win_output_dir}}\\foo.txt
-
-- name: prep with a basic win copy
- win_copy: src=foo.txt dest={{output_file}}
-
-- name: verify that we are checking a file and it is present
- win_file: path={{output_file}} state=file
- register: file_result
-
-- name: verify that the file was marked as changed
- assert:
- that:
- - "file_result.changed == false"
-# - "file_result.state == 'file'"
-
-- name: verify that we are checking an absent file
- win_file: path={{win_output_dir}}/bar.txt state=absent
- register: file2_result
-
-- name: verify that the file was marked as changed
- assert:
- that:
- - "file2_result.changed == false"
-# - "file2_result.state == 'absent'"
-
-- name: verify we can touch a file (check)
- win_file:
- path: '{{win_output_dir}}\touch.txt'
- state: touch
- register: touch_file_check
- check_mode: yes
-
-- name: get details of touched file (check)
- win_stat:
- path: '{{win_output_dir}}\touch.txt'
- register: touch_file_actual_check
-
-- name: assert touch a file (check)
- assert:
- that:
- - touch_file_check.changed
- - not touch_file_actual_check.stat.exists
-
-- name: verify we can touch a file
- win_file: path={{win_output_dir}}/touch.txt state=touch
- register: touch_file
-
-- name: get details of touched file
- win_stat:
- path: '{{win_output_dir}}\touch.txt'
- register: touch_file_actual
-
-- name: assert touch a file
- assert:
- that:
- - touch_file.changed
- - touch_file_actual.stat.exists
- - touch_file_actual.stat.size == 0
-
-- name: touch a file again
- win_file:
- path: '{{win_output_dir}}\touch.txt'
- state: touch
- register: touch_file_again
-
-- name: get details of touched file again
- win_stat:
- path: '{{win_output_dir}}\touch.txt'
- register: touch_file_actual_again
-
-- name: assert touch a file again
- assert:
- that:
- - touch_file_again.changed
- - touch_file_actual_again.stat.lastwritetime > touch_file_actual.stat.lastwritetime
-
-- name: touch an existing file in check mode
- win_file:
- path: '{{win_output_dir}}\touch.txt'
- state: touch
- register: touch_file_again_check
- check_mode: yes
-
-- name: get details of touched file in check mode
- win_stat:
- path: '{{win_output_dir}}\touch.txt'
- register: touch_file_again_actual_check
-
-- name: assert touch an existing file in check mode
- assert:
- that:
- - touch_file_again_check.changed
- - touch_file_again_actual_check.stat.lastwritetime == touch_file_actual_again.stat.lastwritetime
-
-#- name: change file mode
-# win_file: path={{win_output_dir}}/baz.txt mode=0600
-# register: file4_result
-
-#- name: verify that the file was marked as changed
-# assert:
-# that:
-# - "file4_result.changed == true"
-# - "file4_result.mode == '0600'"
-#
-#- name: change ownership and group
-# win_file: path={{win_output_dir}}/baz.txt owner=1234 group=1234
-#
-#- name: setup a tmp-like directory for ownership test
-# win_file: path=/tmp/worldwritable mode=1777 state=directory
-
-#- name: Ask to create a file without enough perms to change ownership
-# win_file: path=/tmp/worldwritable/baz.txt state=touch owner=root
-# become: yes
-# become_user: nobody
-# register: chown_result
-# ignore_errors: True
-
-#- name: Ask whether the new file exists
-# win_stat: path=/tmp/worldwritable/baz.txt
-# register: file_exists_result
-
-#- name: Verify that the file doesn't exist on failure
-# assert:
-# that:
-# - "chown_result.failed == True"
-# - "file_exists_result.stat.exists == False"
-#
-#- name: clean up
-# win_file: path=/tmp/worldwritable state=absent
-
-#- name: create soft link to file
-# win_file: src={{output_file}} dest={{win_output_dir}}/soft.txt state=link
-# register: file5_result
-
-#- name: verify that the file was marked as changed
-# assert:
-# that:
-# - "file5_result.changed == true"
-#
-#- name: create hard link to file
-# win_file: src={{output_file}} dest={{win_output_dir}}/hard.txt state=hard
-# register: file6_result
-#
-#- name: verify that the file was marked as changed
-# assert:
-# that:
-# - "file6_result.changed == true"
-#
-- name: create a directory
- win_file: path={{win_output_dir}}/foobar state=directory
- register: file7_result
-
-- debug: var=file7_result
-
-- name: verify that the file was marked as changed
- assert:
- that:
- - "file7_result.changed == true"
-# - "file7_result.state == 'directory'"
-
-# windows and selinux unlikely to ever mix, removing these tests:
-#- name: determine if selinux is installed
-# shell: which getenforce || exit 0
-# register: selinux_installed
-
-#- name: determine if selinux is enabled
-# shell: getenforce
-# register: selinux_enabled
-# when: selinux_installed.stdout != ""
-# ignore_errors: true
-
-#- name: decide to include or not include selinux tests
-# include: selinux_tests.yml
-# when: selinux_installed.stdout != "" and selinux_enabled.stdout != "Disabled"
-
-- name: remote directory foobar
- win_file: path={{win_output_dir}}/foobar state=absent
-
-- name: remove file foo.txt
- win_file: path={{win_output_dir}}/foo.txt state=absent
-
-- name: remove file bar.txt
- win_file: path={{win_output_dir}}/foo.txt state=absent
-
-- name: remove file baz.txt
- win_file: path={{win_output_dir}}/foo.txt state=absent
-
-- name: win copy directory structure over
- win_copy: src=foobar dest={{win_output_dir}}
-
-- name: remove directory foobar
- win_file: path={{win_output_dir}}/foobar state=absent
- register: file14_result
-
-- debug: var=file14_result
-
-- name: verify that the directory was removed
- assert:
- that:
- - 'file14_result.changed == true'
-# - 'file14_result.state == "absent"'
-
-- name: create a test sub-directory
- win_file: dest={{win_output_dir}}/sub1 state=directory
- register: file15_result
-
-- name: verify that the new directory was created
- assert:
- that:
- - 'file15_result.changed == true'
-# - 'file15_result.state == "directory"'
-
-- name: create test files in the sub-directory
- win_file: dest={{win_output_dir}}/sub1/{{item}} state=touch
- with_items:
- - file1
- - file2
- - file3
- register: file16_result
-
-- name: verify the files were created
- assert:
- that:
- - 'item.changed == true'
-# - 'item.state == "file"'
- with_items: "{{file16_result.results}}"
-
-#- name: try to force the sub-directory to a link
-# win_file: src={{win_output_dir}}/testing dest={{win_output_dir}}/sub1 state=link force=yes
-# register: file17_result
-# ignore_errors: true
-
-#- name: verify the directory was not replaced with a link
-# assert:
-# that:
-# - 'file17_result.failed == true'
-# - 'file17_result.state == "directory"'
-
-#- name: create soft link to directory using absolute path
-# win_file: src=/ dest={{win_output_dir}}/root state=link
-# register: file18_result
-#
-#- name: verify that the result was marked as changed
-# assert:
-# that:
-# - "file18_result.changed == true"
-#
-- name: create another test sub-directory
- win_file: dest={{win_output_dir}}/sub2 state=directory
- register: file19_result
-
-- name: verify that the new directory was created
- assert:
- that:
- - 'file19_result.changed == true'
-# - 'file19_result.state == "directory"'
-
-#- name: create soft link to relative file
-# win_file: src=../sub1/file1 dest={{win_output_dir}}/sub2/link1 state=link
-# register: file20_result
-#
-#- name: verify that the result was marked as changed
-# assert:
-# that:
-# - "file20_result.changed == true"
-
-#- name: create soft link to relative directory
-# win_file: src=sub1 dest={{win_output_dir}}/sub1-link state=link
-# register: file21_result
-#
-#- name: verify that the result was marked as changed
-# assert:
-# that:
-# - "file21_result.changed == true"
-#
-#- name: test file creation with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u=rwx,g=rwx,o=rwx
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0777'
-
-#- name: modify symbolic mode for all
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=a=r
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0444'
-
-#- name: modify symbolic mode for owner
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u+w
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0644'
-
-#- name: modify symbolic mode for group
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=g+w
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0664'
-#
-#- name: modify symbolic mode for world
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=o+w
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0666'
-#
-#- name: modify symbolic mode for owner
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u+x
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0766'
-##
-#- name: modify symbolic mode for group
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=g+x
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0776'
-#
-#- name: modify symbolic mode for world
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=o+x
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0777'
-
-#- name: remove symbolic mode for world
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=o-wx
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0774'
-#
-#- name: remove symbolic mode for group
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=g-wx
-# register: result
-#
-#- name: assert file mode
-### assert:
-# that:
-# - result.mode == '0744'
-
-#- name: remove symbolic mode for owner
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u-wx
-# register: result
-
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0444'
-#
-#- name: set sticky bit with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=o+t
-# register: result
-
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '01444'
-#
-#- name: remove sticky bit with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=o-t
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0444'
-
-#- name: add setgid with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=g+s
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '02444'
-#
-#- name: remove setgid with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=g-s
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0444'
-
-#- name: add setuid with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u+s
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '04444'
-
-#- name: remove setuid with symbolic mode
-# win_file: dest={{win_output_dir}}/test_symbolic state=touch mode=u-s
-# register: result
-#
-#- name: assert file mode
-# assert:
-# that:
-# - result.mode == '0444'
-
-# test the file module using follow=yes, so that the target of a
-# symlink is modified, rather than the link itself
-
-#- name: create a test file
-# win_copy: dest={{win_output_dir}}\test_follow content="this is a test file\n" mode=0666
-
-#- name: create a symlink to the test file
-# win_file: path={{win_output_dir}}\test_follow_link src="./test_follow" state=link
-#
-#- name: modify the permissions on the link using follow=yes
-# win_file: path={{win_output_dir}}\test_follow_link mode=0644 follow=yes
-# register: result
-
-#- name: assert that the chmod worked
-# assert:
-# that:
-# - result.changed
-#
-#- name: stat the link target
-# win_stat: path={{win_output_dir}}/test_follow
-# register: result
-#
-#- name: assert that the link target was modified correctly
-# assert:
-# that:
-## - result.stat.mode == '0644'
-
-- name: create a directory
- win_file: path={{win_output_dir}}/dirtest state=directory
- register: file_result
-
-- name: stat the directory created
- win_stat: path={{win_output_dir}}/dirtest
- register: stat_result
-
-- name: assert the directory was created
- assert:
- that:
- - file_result.changed
- - stat_result.stat.exists
- - stat_result.stat.isdir
-
-- name: re run create directory (bug 2147)
- win_file: path={{win_output_dir}}/dirtest state=directory
- register: file_result
-
-- name: stat the directory created again
- win_stat: path={{win_output_dir}}/dirtest
- register: stat_result
-
-- name: assert the directory exists but was not changed
- assert:
- that:
- - file_result.changed == False
- - stat_result.stat.exists
- - stat_result.stat.isdir
-
-- name: remove empty dir we just created
- win_file: path={{win_output_dir}}/dirtest state=absent
- register: file_result
-
-- name: stat the removed directory
- win_stat: path={{win_output_dir}}/dirtest
- register: stat_result
-
-- name: assert the directory does not exist
- assert:
- that:
- - file_result.changed
- - "stat_result.stat.exists == False"
-
-- name: create dir with spaces and parens in the dir name
- win_file:
- path: '{{win_output_dir}}\dir with spaces (and parens) [block]'
- state: directory
- register: file_result
-
-- name: stat the directory with spaces and parens
- win_stat:
- path: '{{win_output_dir}}\dir with spaces (and parens) [block]'
- register: stat_result
-
-- name: check dir with spaces and parens in the dir name has been created
- assert:
- that:
- - file_result.changed
- - stat_result.stat.exists
- - stat_result.stat.isdir
-
-- name: create file in dir with special char
- win_file:
- path: '{{win_output_dir}}\dir with spaces (and parens) [block]\file[1].txt'
- state: touch
- register: file_result
-
-- name: stat the file with spaces and parens
- win_stat:
- path: '{{win_output_dir}}\dir with spaces (and parens) [block]\file[1].txt'
- register: stat_result
-
-- name: check file in dir with spaces and parens exist
- assert:
- that:
- - file_result.changed
- - stat_result.stat.exists
- - stat_result.stat.isreg
-
-- name: remove dir with spaces and parens in the dir name
- win_file:
- path: '{{win_output_dir}}/dir with spaces (and parens) [block]'
- state: absent
- register: file_result
-
-- name: stat the dir with spaces and parens in the dir name
- win_stat:
- path: '{{win_output_dir}}\dir with spaces (and parens) [block]'
- register: stat_result
-
-- name: assert dir with spaces and parens in the dir name was removed
- assert:
- that:
- - file_result.changed
- - "stat_result.stat.exists == False"
-
-# Need to use shell to create the file as win_file doesn't support setting attributes
-- name: create hidden file
- win_shell: $file = New-Item -Path "{{ win_output_dir }}\hidden.txt" -ItemType File; $file.Attributes = "Hidden"
-
-- name: delete hidden file
- win_file:
- path: '{{ win_output_dir }}\hidden.txt'
- state: absent
- register: delete_hidden
-
-- name: get result of delete hidden file
- win_stat:
- path: '{{ win_output_dir }}\hidden.txt'
- register: delete_hidden_actual
-
-- name: assert delete hidden file
- assert:
- that:
- - delete_hidden is changed
- - not delete_hidden_actual.stat.exists
-
-- name: create folder to point set symbolic link for
- win_file:
- path: "{{win_output_dir}}/link-test/link-target"
- state: directory
-
-- name: create symbolic link
- win_command: cmd.exe /c mklink /d "{{win_output_dir}}\link-test\link" "{{win_output_dir}}\link-test\link-target"
-
-- name: remove symbolic link target
- win_file:
- path: "{{win_output_dir}}/link-test/link-target"
- state: absent
-
-- name: remove parent folder with broken link
- win_file:
- path: "{{win_output_dir}}/link-test"
- state: absent
-
-- name: clean up sub1
- win_file: path={{win_output_dir}}/sub1 state=absent
-
-- name: clean up sub2
- win_file: path={{win_output_dir}}/sub2 state=absent
diff --git a/test/integration/targets/win_find/aliases b/test/integration/targets/win_find/aliases
deleted file mode 100644
index 215e0b0692..0000000000
--- a/test/integration/targets/win_find/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group4
diff --git a/test/integration/targets/win_find/defaults/main.yml b/test/integration/targets/win_find/defaults/main.yml
deleted file mode 100644
index fc2e2e1179..0000000000
--- a/test/integration/targets/win_find/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-win_find_dir: '{{ win_output_dir }}\win_find .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-test_win_find_username: testuser
diff --git a/test/integration/targets/win_find/meta/main.yml b/test/integration/targets/win_find/meta/main.yml
deleted file mode 100644
index d328716dfa..0000000000
--- a/test/integration/targets/win_find/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_win_tests
diff --git a/test/integration/targets/win_find/tasks/main.yml b/test/integration/targets/win_find/tasks/main.yml
deleted file mode 100644
index c2f40a8fde..0000000000
--- a/test/integration/targets/win_find/tasks/main.yml
+++ /dev/null
@@ -1,114 +0,0 @@
----
-- name: ensure the testing directory is cleared before setting up test
- win_file:
- path: '{{win_find_dir}}'
- state: absent
-
-# while most of the setup can be done with modules, it is quicker to do them
-# all in bulk than with with_items to save each round trip over WinRM
-- name: set test files and folders
- win_shell: |
- $directories = @(
- "nested",
- "single",
- "link-dest\sub-link",
- "hard-link-dest",
- "junction-link-dest",
- "broken-link-dest",
- "nested\sub-nest",
- "shared\folder",
- "hidden",
- "date",
- "emptynested\nest\dir1",
- "emptynested\nest\dir2"
- )
-
- $tmp_dir = '{{ win_find_dir }}'
- foreach ($directory in $directories) {
- New-Item -Path "$tmp_dir\$directory" -ItemType Directory
- }
-
- $normal_content = "abcdefg1234567"
- $normal_files = @(
- "nested\file.ps1",
- "nested\test.ps1",
- "nested\out.log",
- "nested\archive.log",
- "nested\sub-nest\test.ps1",
- "nested\sub-nest\readonly.txt",
- "link-dest\link.ps1",
- "single\test.ps1",
- "single\hidden.ps1",
- "single\out_20161101-091005.log",
- "hidden\out_20161101-091005.log",
- "hard-link-dest\file-abc.log"
- )
- foreach ($file in $normal_files) {
- New-Item -Path "$tmp_dir\$file" -ItemType File
- [System.IO.File]::WriteAllText("$tmp_dir\$file", $normal_content)
- }
-
- New-Item -Path "$tmp_dir\single\small.ps1" -ItemType File
- [System.IO.File]::WriteAllText("$tmp_dir\single\small.ps1", "a")
-
- New-Item -Path "$tmp_dir\date\new.ps1" -ItemType File
- [System.IO.File]::WriteAllText("$tmp_dir\date\new.ps1", "random text for new date")
-
- New-Item -Path "$tmp_dir\date\old.ps1" -ItemType File
- [System.IO.File]::WriteAllText("$tmp_dir\date\old.ps1", "random text for old date")
-
- New-Item -Path "$tmp_dir\single\large.ps1" -ItemType File
- Set-Content -LiteralPath "$tmp_dir\single\large.ps1" -Value ('abcdefghijklmnopqrstuvwxyz' * 10000)
-
- $share_stat = Get-WmiObject -Class Win32_Share -Filter "name='folder-share'"
- if ($share_stat) {
- $share_stat.Delete()
- }
- $wmi = [wmiClass] 'Win32_Share'
- $wmi.Create("$tmp_dir\shared\folder", "folder-share", 0)
-
- cmd.exe /c mklink /D "$tmp_dir\nested\link" "$tmp_dir\link-dest"
- cmd.exe /c mklink /D "$tmp_dir\broken-link" "$tmp_dir\broken-link-dest"
- cmd.exe /c mklink /H "$tmp_dir\hard-link-dest\hard-link.log" "$tmp_dir\hard-link-dest\file-abc.log"
- cmd.exe /c mklink /J "$tmp_dir\junction-link" "$tmp_dir\junction-link-dest"
-
- $date = Get-Date -Year 2016 -Month 11 -Day 1 -Hour 7 -Minute 10 -Second 5 -Millisecond 0
- Set-Location -LiteralPath $tmp_dir
- Get-ChildItem -Recurse | Where-Object { $_.Name -ne "new.ps1" } | ForEach-Object {
- $_.CreationTime = $date
- $_.LastAccessTime = $date
- $_.LastWriteTime = $date
- }
- Pop-Location
-
- $attributes = @{
- "hidden" = "Hidden"
- "date" = "Hidden"
- "nested\archive.log" = "Archive"
- "nested\sub-nest\readonly.txt" = "ReadOnly"
- "single\hidden.ps1" = "Hidden"
- }
- foreach ($attribute in $attributes.GetEnumerator()) {
- $item = Get-Item -LiteralPath "$tmp_dir\$($attribute.Name)"
- $file_attributes = $item.Attributes -split ','
- if ($file_attributes -notcontains $attribute.Value) {
- $file_attributes += $attribute.Value
- }
- $item.Attributes = $file_attributes -join ','
- }
-
- Remove-Item -LiteralPath "$tmp_dir\broken-link-dest" -Force
-
-- block:
- - include_tasks: tests.yml
-
- always:
- - name: remove test user
- win_user:
- name: '{{test_win_find_username}}'
- state: absent
-
- - name: remove testing folder
- win_file:
- path: '{{win_find_dir}}'
- state: absent
diff --git a/test/integration/targets/win_find/tasks/tests.yml b/test/integration/targets/win_find/tasks/tests.yml
deleted file mode 100644
index 82fa879ced..0000000000
--- a/test/integration/targets/win_find/tasks/tests.yml
+++ /dev/null
@@ -1,755 +0,0 @@
----
-- name: expected skip when paths to a file
- win_find:
- paths: "{{win_find_dir}}\\single\\large.ps1"
- register: actual
-
-- name: assert skip when path is set to a file
- assert:
- that:
- - not actual is changed
- - actual.examined == 0
- - actual.files == []
- - actual.matched == 0
- - actual.warnings == ["Argument path '" + win_find_dir + "\\single\\large.ps1' is a file not a directory, skipping"]
-
-- name: expect skip when path is set to a non existent folder
- win_find:
- paths: "{{win_find_dir}}\\thisisafakefolder"
- register: actual
-
-- name: assert skip when path is set to a non existent folder
- assert:
- that:
- - not actual is changed
- - actual.examined == 0
- - actual.files == []
- - actual.matched == 0
- - actual.warnings == ["Argument path '" + win_find_dir + "\\thisisafakefolder' does not exist, skipping"]
-
-- name: get files in single directory
- win_find:
- paths: "{{win_find_dir}}\\single"
- register: actual
-
-- name: assert get files in single directory
- assert:
- that:
- - not actual is changed
- - actual.examined == 5
- - actual.matched == 4
- - actual.files[0].attributes == 'Archive'
- - actual.files[0].checksum == 'f8d100cdcf0e6c1007db2f8dd0b7ee2884df89af'
- - actual.files[0].creationtime == 1477984205
- - actual.files[0].exists == True
- - actual.files[0].extension == '.ps1'
- - actual.files[0].filename == 'large.ps1'
- - actual.files[0].hlnk_targets == []
- - actual.files[0].isarchive == True
- - actual.files[0].isdir == False
- - actual.files[0].ishidden == False
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == False
- - actual.files[0].isreadonly == False
- - actual.files[0].isreg == True
- - actual.files[0].isshared == False
- - actual.files[0].lastaccesstime == 1477984205
- - actual.files[0].lastwritetime == 1477984205
- - actual.files[0].lnk_source == None
- - actual.files[0].lnk_target == None
- - actual.files[0].nlink == 1
- - actual.files[0].owner == 'BUILTIN\\Administrators'
- - actual.files[0].path == win_find_dir + '\\single\\large.ps1'
- - actual.files[0].sharename == None
- - actual.files[0].size == 260002
- - actual.files[1].attributes == 'Archive'
- - actual.files[1].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[1].creationtime == 1477984205
- - actual.files[1].exists == True
- - actual.files[1].extension == '.log'
- - actual.files[1].filename == 'out_20161101-091005.log'
- - actual.files[1].hlnk_targets == []
- - actual.files[1].isarchive == True
- - actual.files[1].isdir == False
- - actual.files[1].ishidden == False
- - actual.files[1].isjunction == False
- - actual.files[1].islnk == False
- - actual.files[1].isreadonly == False
- - actual.files[1].isreg == True
- - actual.files[1].isshared == False
- - actual.files[1].lastaccesstime == 1477984205
- - actual.files[1].lastwritetime == 1477984205
- - actual.files[1].lnk_source == None
- - actual.files[1].lnk_target == None
- - actual.files[1].nlink == 1
- - actual.files[1].owner == 'BUILTIN\\Administrators'
- - actual.files[1].path == win_find_dir + '\\single\\out_20161101-091005.log'
- - actual.files[1].sharename == None
- - actual.files[1].size == 14
- - actual.files[2].attributes == 'Archive'
- - actual.files[2].checksum == '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
- - actual.files[2].creationtime == 1477984205
- - actual.files[2].exists == True
- - actual.files[2].extension == '.ps1'
- - actual.files[2].filename == 'small.ps1'
- - actual.files[2].hlnk_targets == []
- - actual.files[2].isarchive == True
- - actual.files[2].isdir == False
- - actual.files[2].ishidden == False
- - actual.files[2].isjunction == False
- - actual.files[2].islnk == False
- - actual.files[2].isreadonly == False
- - actual.files[2].isreg == True
- - actual.files[2].isshared == False
- - actual.files[2].lastaccesstime == 1477984205
- - actual.files[2].lastwritetime == 1477984205
- - actual.files[2].lnk_source == None
- - actual.files[2].lnk_target == None
- - actual.files[2].nlink == 1
- - actual.files[2].owner == 'BUILTIN\\Administrators'
- - actual.files[2].path == win_find_dir + '\\single\\small.ps1'
- - actual.files[2].sharename == None
- - actual.files[2].size == 1
- - actual.files[3].attributes == 'Archive'
- - actual.files[3].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[3].creationtime == 1477984205
- - actual.files[3].exists == True
- - actual.files[3].extension == '.ps1'
- - actual.files[3].filename == 'test.ps1'
- - actual.files[3].hlnk_targets == []
- - actual.files[3].isarchive == True
- - actual.files[3].isdir == False
- - actual.files[3].ishidden == False
- - actual.files[3].isjunction == False
- - actual.files[3].islnk == False
- - actual.files[3].isreadonly == False
- - actual.files[3].isreg == True
- - actual.files[3].isshared == False
- - actual.files[3].lastaccesstime == 1477984205
- - actual.files[3].lastwritetime == 1477984205
- - actual.files[3].lnk_source == None
- - actual.files[3].lnk_target == None
- - actual.files[3].nlink == 1
- - actual.files[3].owner == 'BUILTIN\\Administrators'
- - actual.files[3].path == win_find_dir + '\\single\\test.ps1'
- - actual.files[3].sharename == None
- - actual.files[3].size == 14
-
-- name: find hidden files
- win_find:
- paths: ['{{win_find_dir}}\\single', '{{win_find_dir}}\\nested']
- hidden: True
- register: actual
-
-- name: assert get files in single directory
- assert:
- that:
- - not actual is changed
- - actual.examined == 11
- - actual.matched == 1
- - actual.files[0].attributes == 'Hidden, Archive'
- - actual.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[0].creationtime == 1477984205
- - actual.files[0].exists == True
- - actual.files[0].extension == '.ps1'
- - actual.files[0].filename == 'hidden.ps1'
- - actual.files[0].hlnk_targets == []
- - actual.files[0].isarchive == True
- - actual.files[0].isdir == False
- - actual.files[0].ishidden == True
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == False
- - actual.files[0].isreadonly == False
- - actual.files[0].isreg == True
- - actual.files[0].isshared == False
- - actual.files[0].lastaccesstime == 1477984205
- - actual.files[0].lastwritetime == 1477984205
- - actual.files[0].lnk_source == None
- - actual.files[0].lnk_target == None
- - actual.files[0].nlink == 1
- - actual.files[0].owner == 'BUILTIN\\Administrators'
- - actual.files[0].path == win_find_dir + '\\single\\hidden.ps1'
- - actual.files[0].sharename == None
- - actual.files[0].size == 14
-
-- name: find file based on pattern
- win_find:
- paths: '{{win_find_dir}}\\single'
- patterns: ['*.log', 'out_*']
- register: actual_pattern
-
-- name: find file based on pattern regex
- win_find:
- paths: '{{win_find_dir}}\\single'
- patterns: "out_\\d{8}-\\d{6}.log"
- use_regex: True
- register: actual_regex
-
-- name: assert find file based on pattern
- assert:
- that:
- - not actual_pattern is changed
- - actual_pattern.examined == 5
- - actual_pattern.matched == 1
- - actual_pattern.files[0].attributes == 'Archive'
- - actual_pattern.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual_pattern.files[0].creationtime == 1477984205
- - actual_pattern.files[0].exists == True
- - actual_pattern.files[0].extension == '.log'
- - actual_pattern.files[0].filename == 'out_20161101-091005.log'
- - actual_pattern.files[0].hlnk_targets == []
- - actual_pattern.files[0].isarchive == True
- - actual_pattern.files[0].isdir == False
- - actual_pattern.files[0].ishidden == False
- - actual_pattern.files[0].isjunction == False
- - actual_pattern.files[0].islnk == False
- - actual_pattern.files[0].isreadonly == False
- - actual_pattern.files[0].isreg == True
- - actual_pattern.files[0].isshared == False
- - actual_pattern.files[0].lastaccesstime == 1477984205
- - actual_pattern.files[0].lastwritetime == 1477984205
- - actual_pattern.files[0].lnk_source == None
- - actual_pattern.files[0].lnk_target == None
- - actual_pattern.files[0].nlink == 1
- - actual_pattern.files[0].owner == 'BUILTIN\\Administrators'
- - actual_pattern.files[0].path == win_find_dir + '\\single\\out_20161101-091005.log'
- - actual_pattern.files[0].sharename == None
- - actual_pattern.files[0].size == 14
- - actual_pattern == actual_regex
-
-- name: find files with recurse set
- win_find:
- paths: "{{win_find_dir}}\\nested"
- recurse: True
- patterns: "*.ps1"
- register: actual
-
-- name: assert find files with recurse set
- assert:
- that:
- - not actual is changed
- - actual.examined == 8
- - actual.matched == 3
- - actual.files[0].attributes == 'Archive'
- - actual.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[0].creationtime == 1477984205
- - actual.files[0].exists == True
- - actual.files[0].extension == '.ps1'
- - actual.files[0].filename == 'file.ps1'
- - actual.files[0].hlnk_targets == []
- - actual.files[0].isarchive == True
- - actual.files[0].isdir == False
- - actual.files[0].ishidden == False
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == False
- - actual.files[0].isreadonly == False
- - actual.files[0].isreg == True
- - actual.files[0].isshared == False
- - actual.files[0].lastaccesstime == 1477984205
- - actual.files[0].lastwritetime == 1477984205
- - actual.files[0].lnk_source == None
- - actual.files[0].lnk_target == None
- - actual.files[0].nlink == 1
- - actual.files[0].owner == 'BUILTIN\\Administrators'
- - actual.files[0].path == win_find_dir + '\\nested\\file.ps1'
- - actual.files[0].sharename == None
- - actual.files[0].size == 14
- - actual.files[1].attributes == 'Archive'
- - actual.files[1].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[1].creationtime == 1477984205
- - actual.files[1].exists == True
- - actual.files[1].extension == '.ps1'
- - actual.files[1].filename == 'test.ps1'
- - actual.files[1].hlnk_targets == []
- - actual.files[1].isarchive == True
- - actual.files[1].isdir == False
- - actual.files[1].ishidden == False
- - actual.files[1].isjunction == False
- - actual.files[1].islnk == False
- - actual.files[1].isreadonly == False
- - actual.files[1].isreg == True
- - actual.files[1].isshared == False
- - actual.files[1].lastaccesstime == 1477984205
- - actual.files[1].lastwritetime == 1477984205
- - actual.files[1].lnk_source == None
- - actual.files[1].lnk_target == None
- - actual.files[1].nlink == 1
- - actual.files[1].owner == 'BUILTIN\\Administrators'
- - actual.files[1].path == win_find_dir + '\\nested\\sub-nest\\test.ps1'
- - actual.files[1].sharename == None
- - actual.files[1].size == 14
- - actual.files[2].attributes == 'Archive'
- - actual.files[2].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[2].creationtime == 1477984205
- - actual.files[2].exists == True
- - actual.files[2].extension == '.ps1'
- - actual.files[2].filename == 'test.ps1'
- - actual.files[2].hlnk_targets == []
- - actual.files[2].isarchive == True
- - actual.files[2].isdir == False
- - actual.files[2].ishidden == False
- - actual.files[2].isjunction == False
- - actual.files[2].islnk == False
- - actual.files[2].isreadonly == False
- - actual.files[2].isreg == True
- - actual.files[2].isshared == False
- - actual.files[2].lastaccesstime == 1477984205
- - actual.files[2].lastwritetime == 1477984205
- - actual.files[2].lnk_source == None
- - actual.files[2].lnk_target == None
- - actual.files[2].nlink == 1
- - actual.files[2].owner == 'BUILTIN\\Administrators'
- - actual.files[2].path == win_find_dir + '\\nested\\test.ps1'
- - actual.files[2].sharename == None
- - actual.files[2].size == 14
-
-- name: find files with recurse set and follow links
- win_find:
- paths: "{{win_find_dir}}\\nested"
- recurse: True
- follow: True
- patterns: "*.ps1"
- register: actual
-
-- name: assert find files with recurse set and follow links
- assert:
- that:
- - not actual is changed
- - actual.examined == 10
- - actual.matched == 4
- - actual.files[0].attributes == 'Archive'
- - actual.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[0].creationtime == 1477984205
- - actual.files[0].exists == True
- - actual.files[0].extension == '.ps1'
- - actual.files[0].filename == 'file.ps1'
- - actual.files[0].hlnk_targets == []
- - actual.files[0].isarchive == True
- - actual.files[0].isdir == False
- - actual.files[0].ishidden == False
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == False
- - actual.files[0].isreadonly == False
- - actual.files[0].isreg == True
- - actual.files[0].isshared == False
- - actual.files[0].lastaccesstime == 1477984205
- - actual.files[0].lastwritetime == 1477984205
- - actual.files[0].lnk_source == None
- - actual.files[0].lnk_target == None
- - actual.files[0].nlink == 1
- - actual.files[0].owner == 'BUILTIN\\Administrators'
- - actual.files[0].path == win_find_dir + '\\nested\\file.ps1'
- - actual.files[0].sharename == None
- - actual.files[0].size == 14
- - actual.files[1].attributes == 'Archive'
- - actual.files[1].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[1].creationtime == 1477984205
- - actual.files[1].exists == True
- - actual.files[1].extension == '.ps1'
- - actual.files[1].filename == 'link.ps1'
- - actual.files[1].hlnk_targets == []
- - actual.files[1].isarchive == True
- - actual.files[1].isdir == False
- - actual.files[1].ishidden == False
- - actual.files[1].isjunction == False
- - actual.files[1].islnk == False
- - actual.files[1].isreadonly == False
- - actual.files[1].isreg == True
- - actual.files[1].isshared == False
- - actual.files[1].lastaccesstime == 1477984205
- - actual.files[1].lastwritetime == 1477984205
- - actual.files[1].lnk_source == None
- - actual.files[1].lnk_target == None
- - actual.files[1].nlink == 1
- - actual.files[1].owner == 'BUILTIN\\Administrators'
- - actual.files[1].path == win_find_dir + '\\nested\\link\\link.ps1'
- - actual.files[1].sharename == None
- - actual.files[1].size == 14
- - actual.files[2].attributes == 'Archive'
- - actual.files[2].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[2].creationtime == 1477984205
- - actual.files[2].exists == True
- - actual.files[2].extension == '.ps1'
- - actual.files[2].filename == 'test.ps1'
- - actual.files[2].hlnk_targets == []
- - actual.files[2].isarchive == True
- - actual.files[2].isdir == False
- - actual.files[2].ishidden == False
- - actual.files[2].isjunction == False
- - actual.files[2].islnk == False
- - actual.files[2].isreadonly == False
- - actual.files[2].isreg == True
- - actual.files[2].isshared == False
- - actual.files[2].lastaccesstime == 1477984205
- - actual.files[2].lastwritetime == 1477984205
- - actual.files[2].lnk_source == None
- - actual.files[2].lnk_target == None
- - actual.files[2].nlink == 1
- - actual.files[2].owner == 'BUILTIN\\Administrators'
- - actual.files[2].path == win_find_dir + '\\nested\\sub-nest\\test.ps1'
- - actual.files[2].sharename == None
- - actual.files[2].size == 14
- - actual.files[3].attributes == 'Archive'
- - actual.files[3].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
- - actual.files[3].creationtime == 1477984205
- - actual.files[3].exists == True
- - actual.files[3].extension == '.ps1'
- - actual.files[3].filename == 'test.ps1'
- - actual.files[3].hlnk_targets == []
- - actual.files[3].isarchive == True
- - actual.files[3].isdir == False
- - actual.files[3].ishidden == False
- - actual.files[3].isjunction == False
- - actual.files[3].islnk == False
- - actual.files[3].isreadonly == False
- - actual.files[3].isreg == True
- - actual.files[3].isshared == False
- - actual.files[3].lastaccesstime == 1477984205
- - actual.files[3].lastwritetime == 1477984205
- - actual.files[3].lnk_source == None
- - actual.files[3].lnk_target == None
- - actual.files[3].nlink == 1
- - actual.files[3].owner == 'BUILTIN\\Administrators'
- - actual.files[3].path == win_find_dir + '\\nested\\test.ps1'
- - actual.files[3].sharename == None
- - actual.files[3].size == 14
-
-- name: find directories
- win_find:
- paths: "{{win_find_dir}}\\link-dest"
- file_type: directory
- register: actual
-
-- name: assert find directories
- assert:
- that:
- - not actual is changed
- - actual.examined == 2
- - actual.matched == 1
- - actual.files[0].attributes == 'Directory'
- - actual.files[0].checksum == None
- - actual.files[0].creationtime == 1477984205
- - actual.files[0].exists == True
- - actual.files[0].extension == None
- - actual.files[0].filename == 'sub-link'
- - actual.files[0].hlnk_targets == []
- - actual.files[0].isarchive == False
- - actual.files[0].isdir == True
- - actual.files[0].ishidden == False
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == False
- - actual.files[0].isreadonly == False
- - actual.files[0].isreg == False
- - actual.files[0].isshared == False
- - actual.files[0].lastaccesstime == 1477984205
- - actual.files[0].lastwritetime == 1477984205
- - actual.files[0].lnk_source == None
- - actual.files[0].lnk_target == None
- - actual.files[0].nlink == 1
- - actual.files[0].owner == 'BUILTIN\\Administrators'
- - actual.files[0].path == win_find_dir + '\\link-dest\\sub-link'
- - actual.files[0].sharename == None
- - actual.files[0].size == None
-
-- name: find directories recurse and follow with a broken link
- win_find:
- paths: "{{win_find_dir}}"
- file_type: directory
- recurse: True
- follow: True
- register: actual
-
-- name: check directory count with recurse and follow is correct
- assert:
- that:
- - not actual is changed
- - actual.examined == 37
- - actual.matched == 17
- - actual.files[0].filename == 'broken-link'
- - actual.files[0].isjunction == False
- - actual.files[0].islnk == True
- - actual.files[6].filename == 'junction-link'
- - actual.files[6].isjunction == True
- - actual.files[6].islnk == False
- - actual.files[6].lnk_source == win_find_dir + '\\junction-link-dest'
- - actual.files[11].filename == 'link'
- - actual.files[11].islnk == True
- - actual.files[11].lnk_source == win_find_dir + '\\link-dest'
- - actual.files[15].filename == 'folder'
- - actual.files[15].islnk == False
- - actual.files[15].isshared == True
- - actual.files[15].sharename == 'folder-share'
-
-- name: filter files by size without byte specified
- win_find:
- paths: "{{win_find_dir}}\\single"
- size: 260002
- register: actual_without_byte
-
-- name: filter files by size with byte specified
- win_find:
- paths: "{{win_find_dir}}\\single"
- size: 253k
- register: actual_with_byte
-
-- name: assert filter files by size
- assert:
- that:
- - not actual_without_byte is changed
- - actual_without_byte.examined == 5
- - actual_without_byte.matched == 1
- - actual_without_byte.files[0].attributes == 'Archive'
- - actual_without_byte.files[0].checksum == 'f8d100cdcf0e6c1007db2f8dd0b7ee2884df89af'
- - actual_without_byte.files[0].creationtime == 1477984205
- - actual_without_byte.files[0].exists == True
- - actual_without_byte.files[0].extension == '.ps1'
- - actual_without_byte.files[0].filename == 'large.ps1'
- - actual_without_byte.files[0].hlnk_targets == []
- - actual_without_byte.files[0].isarchive == True
- - actual_without_byte.files[0].isdir == False
- - actual_without_byte.files[0].ishidden == False
- - actual_without_byte.files[0].isjunction == False
- - actual_without_byte.files[0].islnk == False
- - actual_without_byte.files[0].isreadonly == False
- - actual_without_byte.files[0].isreg == True
- - actual_without_byte.files[0].isshared == False
- - actual_without_byte.files[0].lastaccesstime == 1477984205
- - actual_without_byte.files[0].lastwritetime == 1477984205
- - actual_without_byte.files[0].lnk_source == None
- - actual_without_byte.files[0].lnk_target == None
- - actual_without_byte.files[0].nlink == 1
- - actual_without_byte.files[0].owner == 'BUILTIN\\Administrators'
- - actual_without_byte.files[0].path == win_find_dir + '\\single\\large.ps1'
- - actual_without_byte.files[0].sharename == None
- - actual_without_byte.files[0].size == 260002
- - actual_without_byte == actual_with_byte
-
-- name: filter files by size (less than) without byte specified
- win_find:
- paths: "{{win_find_dir}}\\single"
- size: -4
- register: actual_without_byte
-
-- name: filter files by size (less than) with byte specified
- win_find:
- paths: "{{win_find_dir}}\\single"
- size: -4b
- register: actual_with_byte
-
-- name: assert filter files by size (less than) without byte specified
- assert:
- that:
- - not actual_without_byte is changed
- - actual_without_byte.examined == 5
- - actual_without_byte.matched == 1
- - actual_without_byte.files[0].attributes == 'Archive'
- - actual_without_byte.files[0].checksum == '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8'
- - actual_without_byte.files[0].creationtime == 1477984205
- - actual_without_byte.files[0].exists == True
- - actual_without_byte.files[0].extension == '.ps1'
- - actual_without_byte.files[0].filename == 'small.ps1'
- - actual_without_byte.files[0].hlnk_targets == []
- - actual_without_byte.files[0].isarchive == True
- - actual_without_byte.files[0].isdir == False
- - actual_without_byte.files[0].ishidden == False
- - actual_without_byte.files[0].isjunction == False
- - actual_without_byte.files[0].islnk == False
- - actual_without_byte.files[0].isreadonly == False
- - actual_without_byte.files[0].isreg == True
- - actual_without_byte.files[0].isshared == False
- - actual_without_byte.files[0].lastaccesstime == 1477984205
- - actual_without_byte.files[0].lastwritetime == 1477984205
- - actual_without_byte.files[0].lnk_source == None
- - actual_without_byte.files[0].lnk_target == None
- - actual_without_byte.files[0].nlink == 1
- - actual_without_byte.files[0].owner == 'BUILTIN\\Administrators'
- - actual_without_byte.files[0].path == win_find_dir + '\\single\\small.ps1'
- - actual_without_byte.files[0].sharename == None
- - actual_without_byte.files[0].size == 1
- - actual_without_byte == actual_with_byte
-
-# For dates we cannot assert against expected as the times change, this is a poor mans attempt at testing
-- name: filter files by age without unit specified
- win_find:
- paths: "{{win_find_dir}}\\date"
- age: 3600
- register: actual_without_unit
-
-- name: filter files by age with unit specified
- win_find:
- paths: "{{win_find_dir}}\\date"
- age: 1h
- register: actual_with_unit
-
-- name: assert dates match each other
- assert:
- that:
- - actual_without_unit == actual_with_unit
- - actual_without_unit.matched == 1
- - actual_without_unit.files[0].checksum == 'd1185139c47f5bc951e2e9135922fe31059206b1'
- - actual_without_unit.files[0].path == win_find_dir + '\\date\\old.ps1'
-
-- name: filter files by age (newer than) without unit specified
- win_find:
- paths: "{{win_find_dir}}\\date"
- age: -3600
- register: actual_without_unit
-
-- name: filter files by age (newer than) without unit specified
- win_find:
- paths: "{{win_find_dir}}\\date"
- age: -1h
- register: actual_with_unit
-
-- name: assert dates match each other
- assert:
- that:
- - actual_without_unit == actual_with_unit
- - actual_without_unit.matched == 1
- - actual_without_unit.files[0].checksum == 'af99d0e98df4531b9f26c942f41d65c58766bfa9'
- - actual_without_unit.files[0].path == win_find_dir + '\\date\\new.ps1'
-
-- name: get list of files with md5 checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- checksum_algorithm: md5
- register: actual_md5_checksum
-
-- name: assert md5 checksum value
- assert:
- that:
- - actual_md5_checksum.files[0].checksum == 'd1713d0f1d2e8fae230328d8fd59de01'
-
-- name: get list of files with sha1 checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- checksum_algorithm: sha1
- register: actual_sha1_checksum
-
-- name: assert sha1 checksum value
- assert:
- that:
- - actual_sha1_checksum.files[0].checksum == '8df33cee3325596517df5bb5aa980cf9c5c1fda3'
-
-- name: get list of files with sha256 checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- checksum_algorithm: sha256
- register: actual_sha256_checksum
-
-- name: assert sha256 checksum value
- assert:
- that:
- - actual_sha256_checksum.files[0].checksum == 'c20d2eba7ffda0079812721b6f4e4e109e2f0c5e8cc3d1273a060df6f7d9f339'
-
-- name: get list of files with sha384 checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- checksum_algorithm: sha384
- register: actual_sha384_checksum
-
-- name: assert sha384 checksum value
- assert:
- that:
- - actual_sha384_checksum.files[0].checksum == 'aed515eb216b9c7009ae8c4680f46c1e22004528b231aa0482a8587543bca47d3504e9f77e884eb2d11b2f9f5dc01651'
-
-- name: get list of files with sha512 checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- checksum_algorithm: sha512
- register: actual_sha512_checksum
-
-- name: assert sha512 checksum value
- assert:
- that:
- - actual_sha512_checksum.files[0].checksum == '05abf64a68c4731699c23b4fc6894a36646fce525f3c96f9cf743b5d0c3bfd933dad0e95e449e3afe1f74d534d69a53b8f46cf835763dd42915813c897b02b87'
-
-- name: get list of files without checksum
- win_find:
- paths: "{{win_find_dir}}\\single"
- patterns: test.ps1
- get_checksum: False
- register: actual_no_checksum
-
-- name: assert no checksum is returned
- assert:
- that:
- - actual_no_checksum.files[0].checksum == None
-
-# https://github.com/ansible/ansible/issues/26158
-- name: get list of files in an empty nested directory
- win_find:
- paths: '{{win_find_dir}}\emptynested'
- register: actual_empty_nested
-
-- name: assert get list of files in an empty nested directory
- assert:
- that:
- - actual_empty_nested.matched == 0
-
-- name: create new folders for security tests
- win_file:
- path: '{{win_find_dir}}\{{item}}'
- state: directory
- with_items:
- - secure-tests\secure\internal-folder
- - secure-tests\open\internal-folder
-
-- name: create random password for test user
- set_fact:
- test_win_find_password: password123! + {{ lookup('password', '/dev/null chars=ascii_letters,digits length=8') }}
-
-- name: create test user who does not have access to secure folder
- win_user:
- name: '{{test_win_find_username}}'
- password: '{{test_win_find_password}}'
- state: present
- groups:
- - Users
-
-- name: change owner of secure folder
- win_owner:
- path: '{{win_find_dir}}\secure-tests\secure'
- user: BUILTIN\Administrators
- recurse: yes
-
-- name: set explicit inheritance of secure folder for the Administrators accounts
- win_acl:
- user: BUILTIN\Administrators
- path: '{{win_find_dir}}\secure-tests\secure'
- rights: FullControl
- type: allow
- state: present
- inherit: None
-
-- name: remove inheritance on the secure folder
- win_acl_inheritance:
- path: '{{win_find_dir}}\secure-tests\secure'
- reorganize: no
- state: absent
-
-- name: run win_find with under-privileged account
- win_find:
- paths: '{{win_find_dir}}\secure-tests'
- recurse: yes
- file_type: directory
- register: secure_result
- become: yes
- become_method: runas
- become_user: '{{test_win_find_username}}'
- vars:
- ansible_become_password: '{{test_win_find_password}}'
-
-- name: assert win_find only examined 2 files with under-privileged account
- assert:
- that:
- - secure_result.examined == 3
- - secure_result.matched == 3
- - secure_result.files[0].path == win_find_dir + "\secure-tests\open"
- - secure_result.files[1].path == win_find_dir + "\secure-tests\open\internal-folder"
- - secure_result.files[2].path == win_find_dir + "\secure-tests\secure"
diff --git a/test/integration/targets/win_get_url/aliases b/test/integration/targets/win_get_url/aliases
deleted file mode 100644
index ca4f45531a..0000000000
--- a/test/integration/targets/win_get_url/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/windows/group5
-needs/httptester
-skip/windows/2008 # httptester requires SSH which doesn't work with 2008
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/file.txt b/test/integration/targets/win_get_url/files/ftp/anon/file.txt
deleted file mode 100644
index 7ffe02e39e..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/anon/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-ftp/anon/file.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/file2.txt b/test/integration/targets/win_get_url/files/ftp/anon/file2.txt
deleted file mode 100644
index 9dfc1e4aba..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/anon/file2.txt
+++ /dev/null
@@ -1 +0,0 @@
-ftp/anon/file2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt
deleted file mode 100644
index c5cfcb4769..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-a97e6837f60cec6da4491bab387296bbcd72bdba cHR1eA==
-3911340502960ca33aece01129234460bfeb2791 not_target1.txt
-1b4b6adf30992cedb0f6edefd6478ff0a593b2e4 not_target2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt
deleted file mode 100644
index 599e3626af..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006 cHR1eA==
-30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 not_target1.txt
-d0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b not_target2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt
deleted file mode 100644
index 1e46b89d6b..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006 ./cHR1eA==
-30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 ./not_target1.txt
-d0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b ./not_target2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/user-pass/file.txt b/test/integration/targets/win_get_url/files/ftp/user-pass/file.txt
deleted file mode 100644
index b0a23ddabc..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/user-pass/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-ftp/user-pass/file.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/user/file.txt b/test/integration/targets/win_get_url/files/ftp/user/file.txt
deleted file mode 100644
index 40438f769f..0000000000
--- a/test/integration/targets/win_get_url/files/ftp/user/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-ftp/user/file.txt
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
deleted file mode 100644
index c6f8744a45..0000000000
--- a/test/integration/targets/win_get_url/library/win_defender_exclusion.ps1
+++ /dev/null
@@ -1,40 +0,0 @@
-#!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/meta/main.yml b/test/integration/targets/win_get_url/meta/main.yml
deleted file mode 100644
index 6baa762584..0000000000
--- a/test/integration/targets/win_get_url/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
-- setup_remote_tmp_dir
-- prepare_http_tests
diff --git a/test/integration/targets/win_get_url/tasks/main.yml b/test/integration/targets/win_get_url/tasks/main.yml
deleted file mode 100644
index 842323d590..0000000000
--- a/test/integration/targets/win_get_url/tasks/main.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# Due to the special environment setup required for proxies, you can manually test out the proxy options with
-# https://github.com/jborean93/ansible-powershell-url-proxy.
----
-- name: set fact out special testing dir
- set_fact:
- testing_dir: '{{ remote_tmp_dir }}\win_get_url .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-
-- name: create test directory with space and special chars
- win_file:
- path: '{{ testing_dir }}'
- state: directory
-
-- name: copy across testing files
- win_copy:
- 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
- dest: '{{ testing_dir }}\SlimFTPd.exe'
-
-# SlimFTPd does not work with special chars because it is so old, use a symlink as a workaround
-- name: set fact of temp symlink for SlimFTPd
- set_fact:
- slimftpd_link: C:\SlimFTPd
-
-- name: template SlimFTPd configuration file
- win_template:
- src: slimftpd.conf.tmpl
- dest: '{{ testing_dir }}\slimftpd.conf'
-
-- block:
- - name: create SLimFTPd symlink
- win_command: cmd.exe /c mklink /d "{{ slimftpd_link }}" "{{ testing_dir }}"
-
- - name: create SlimFTPd service
- win_service:
- name: SlimFTPd
- path: '"{{ slimftpd_link }}\SlimFTPd.exe" -service'
- state: started
- dependencies:
- - tcpip
-
- - name: run URL tests
- import_tasks: tests_url.yml
-
- - name: run FTP tests
- import_tasks: tests_ftp.yml
-
- - name: run checksum tests
- import_tasks: tests_checksum.yml
-
- always:
- - name: remove SlimFTPd service
- win_service:
- name: SlimFTPd
- state: absent
-
- - name: remove temp symlink
- 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
diff --git a/test/integration/targets/win_get_url/tasks/tests_checksum.yml b/test/integration/targets/win_get_url/tasks/tests_checksum.yml
deleted file mode 100644
index 8010580548..0000000000
--- a/test/integration/targets/win_get_url/tasks/tests_checksum.yml
+++ /dev/null
@@ -1,91 +0,0 @@
----
-# These files are pre formatted and we want to get the base64 value so we can use it for httpbin
-# dynamic content in checksum_url
-- name: set base64 values for checksum files
- set_fact:
- sha1sum: '{{ lookup("file", "ftp/anon/sha1sum.txt") | b64encode }}'
- sha256sum: '{{ lookup("file", "ftp/anon/sha256sum.txt") | b64encode }}'
- sha256sum_dot: '{{ lookup("file", "ftp/anon/sha256sum_with_dot.txt") | b64encode }}'
-
-- name: download file with sha1 checksum url
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\sha1.txt'
- checksum_url: https://{{ httpbin_host }}/base64/{{ sha1sum }}
- force: True
- register: download_sha1_url
-
-- name: download file with sha1 checksum value
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\sha1.txt'
- checksum: a97e6837f60cec6da4491bab387296bbcd72bdba
- force: True
- register: download_sha1_value
-
-- name: assert download file with sha1 checksum
- assert:
- that:
- - download_sha1_url is changed
- - download_sha1_url.status_code == 200
- - download_sha1_url.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
- - not download_sha1_value is changed
- - download_sha1_value.status_code == 200
- - download_sha1_value.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
-
-- name: download file with sha256 checksum ftp
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\sha256.txt'
- checksum_url: ftp://localhost/anon/sha256sum.txt # tests that a checksum can be from an FTP URI
- checksum_algorithm: sha256
- force: True
- register: download_sha256_ftp
-
-- name: download file with sha256 checksum dot leading source as file
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\sha256.txt'
- checksum_url: '{{ testing_dir }}\ftp\anon\sha256sum_with_dot.txt'
- checksum_algorithm: sha256
- force: True
- register: download_sha256_file
-
-- name: download file with sha256 checksum value
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\sha256.txt'
- checksum: b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006
- checksum_algorithm: sha256
- register: download_sha256_value
-
-- name: assert download file with sha256 checksum
- assert:
- that:
- - download_sha256_ftp is changed
- - download_sha256_ftp.status_code == 200
- - download_sha256_ftp.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
- - not download_sha256_file is changed
- - download_sha256_file.status_code == 200
- - download_sha256_file.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
- - not download_sha256_value is changed
- - download_sha256_value.status_code == 200
- - download_sha256_value.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
-
-- name: fail download with invalid checksum and force=no
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\fail.txt'
- checksum: invalid
- force: no
- register: fail_checksum_force_no
- failed_when: fail_checksum_force_no.msg != "The checksum for https://" + httpbin_host + "/base64/cHR1eA== did not match 'invalid', it was 'a97e6837f60cec6da4491bab387296bbcd72bdba'"
-
-- name: fail download with invalid checksum and force=yes
- win_get_url:
- url: https://{{ httpbin_host }}/base64/cHR1eA==
- dest: '{{ testing_dir }}\fail.txt'
- checksum: invalid
- force: yes
- register: fail_checksum_force_yes
- failed_when: fail_checksum_force_yes.msg != "The checksum for https://" + httpbin_host + "/base64/cHR1eA== did not match 'invalid', it was 'a97e6837f60cec6da4491bab387296bbcd72bdba'"
diff --git a/test/integration/targets/win_get_url/tasks/tests_ftp.yml b/test/integration/targets/win_get_url/tasks/tests_ftp.yml
deleted file mode 100644
index ec389079b8..0000000000
--- a/test/integration/targets/win_get_url/tasks/tests_ftp.yml
+++ /dev/null
@@ -1,166 +0,0 @@
----
-- name: download file from FTP source (check)
- win_get_url:
- url: ftp://localhost/anon/file.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- check_mode: yes
- register: ftp_anon_check
-
-- name: get results of download file from FTP source (check)
- win_stat:
- path: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon_result_check
-
-- name: assert download file from FTP source (check)
- assert:
- that:
- - ftp_anon_check is changed
- - not ftp_anon_result_check.stat.exists
-
-- name: download file from FTP source
- win_get_url:
- url: ftp://localhost/anon/file.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon
-
-- name: get results of download file from FTP source
- win_stat:
- path: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon_result
-
-- name: assert download file from FTP source
- assert:
- that:
- - ftp_anon is changed
- - ftp_anon_result.stat.exists
- - ftp_anon_result.stat.checksum == '67e0de92f29645cc30d8d147b767cceb81756651'
-
-- name: download file from FTP source (idempotent)
- win_get_url:
- url: ftp://localhost/anon/file.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon_again
-
-- name: assert download file from FTP source (idempotent)
- assert:
- that:
- - not ftp_anon_again is changed
-
-- name: download file from FTP source with force no (check)
- win_get_url:
- url: ftp://localhost/anon/file.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- force: no
- check_mode: yes
- register: ftp_anon_force_no_check
-
-- name: assert download file from FTP source with force no
- assert:
- that:
- - ftp_anon_force_no_check is not changed
-
-- name: download file from FTP source with force no
- win_get_url:
- url: ftp://localhost/anon/file.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- force: no
- register: ftp_anon_force_no
-
-- name: assert download file from FTP source with force no
- assert:
- that:
- - ftp_anon_force_no is not changed
-
-- name: set last modified time on FTP source to newer datetime
- win_shell: (Get-Item -LiteralPath '{{ testing_dir }}\ftp\anon\file2.txt').LastWriteTime = (Get-Date).AddHours(24)
-
-- name: download newer file from FTP source to same dest (check)
- win_get_url:
- url: ftp://localhost/anon/file2.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- force: no
- check_mode: yes
- register: ftp_anon_force_no_different_check
-
-- name: get result of download newer file from FTP source to same dest (check)
- win_stat:
- path: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon_force_no_different_result_check
-
-- name: assert download newer file from FTP source to same dest (check)
- assert:
- that:
- - ftp_anon_force_no_different_check is changed
- - ftp_anon_force_no_different_result_check.stat.checksum == '67e0de92f29645cc30d8d147b767cceb81756651'
-
-- name: download newer file from FTP source to same dest
- win_get_url:
- url: ftp://localhost/anon/file2.txt
- dest: '{{ testing_dir }}\ftp-anon.txt'
- force: no
- register: ftp_anon_force_no_different
-
-- name: get result of download newer file from FTP source to same dest
- win_stat:
- path: '{{ testing_dir }}\ftp-anon.txt'
- register: ftp_anon_force_no_different_result
-
-- name: assert download newer file from FTP source to same dest (check)
- assert:
- that:
- - ftp_anon_force_no_different is changed
- - ftp_anon_force_no_different_result.stat.checksum == 'eac3baccd817f7137c00138559e2e62aca64aab0'
-
-- name: fail to download file from ftp protected by username
- win_get_url:
- url: ftp://localhost/user/file.txt
- dest: '{{ testing_dir }}\ftp-user.txt'
- register: fail_ftp_no_user
- ignore_errors: yes
-
-- name: assert fail to download file from ftp protected by username
- assert:
- that:
- - fail_ftp_no_user is failed
- - fail_ftp_no_user is not changed
- - fail_ftp_no_user.status_code == 550
- - '"File unavailable (e.g., file not found, no access)." in fail_ftp_no_user.msg'
-
-- name: download FTP file protected by username
- win_get_url:
- url: ftp://localhost/user/file.txt
- dest: '{{ testing_dir }}\ftp-user.txt'
- url_username: username
- register: ftp_user_file
-
-- name: get result of download FTP file protected by username
- win_stat:
- path: '{{ testing_dir }}\ftp-user.txt'
- register: ftp_user_file_result
-
-- name: assert download FTP file protected by username
- assert:
- that:
- - ftp_user_file is changed
- - ftp_user_file_result.stat.exists
- - ftp_user_file_result.stat.checksum == '0efc2e97611cf74e25ec17a00d4b2cf65d0c28ba'
-
-- name: download FTP file protected by username and password
- win_get_url:
- url: ftp://localhost/user-pass/file.txt
- dest: '{{ testing_dir }}\ftp-user-pass.txt'
- url_username: userpass
- url_password: password
- register: ftp_user_pass_file
-
-- name: get result of download FTP file protected by username and password
- win_stat:
- path: '{{ testing_dir }}\ftp-user-pass.txt'
- register: ftp_user_pass_file_result
-
-- name: assert download FTP file protected by username and password
- assert:
- that:
- - ftp_user_pass_file is changed
- - ftp_user_pass_file_result.stat.exists
- - ftp_user_pass_file_result.stat.checksum == '7da5f1124d4a986cba2b4658d38d95eb55afe086'
diff --git a/test/integration/targets/win_get_url/tasks/tests_url.yml b/test/integration/targets/win_get_url/tasks/tests_url.yml
deleted file mode 100644
index 91c782c7fa..0000000000
--- a/test/integration/targets/win_get_url/tasks/tests_url.yml
+++ /dev/null
@@ -1,237 +0,0 @@
-- name: download single file (check)
- win_get_url:
- url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
- dest: '{{ testing_dir }}\output.txt'
- check_mode: yes
- register: http_download_check
-
-- name: get result of download single file (check)
- win_stat:
- path: '{{ testing_dir }}\output.txt'
- register: http_download_result_check
-
-- name: assert download single file (check)
- assert:
- that:
- - http_download_check is not failed
- - http_download_check is changed
- - http_download_check.url
- - http_download_check.dest
- - not http_download_result_check.stat.exists
-
-- name: download single file
- win_get_url:
- url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
- dest: '{{ testing_dir }}\output.txt'
- register: http_download
-
-- name: get result of download single file
- win_stat:
- path: '{{ testing_dir }}\output.txt'
- register: http_download_result
-
-- name: assert download single file
- assert:
- that:
- - http_download is not failed
- - http_download is changed
- - http_download.url
- - http_download.dest
- - http_download_result.stat.exists
-
-- name: download single file (idempotent)
- win_get_url:
- url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
- dest: '{{ testing_dir }}\output.txt'
- register: http_download_again
-
-- name: assert download single file (idempotent)
- assert:
- that:
- - not http_download_again is changed
-
-# Cannot use httpbin as the Last-Modified date is generated dynamically
-- name: download file for force=no tests
- win_get_url:
- url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
- dest: '{{ testing_dir }}\output'
-
-- name: download single file with force no
- win_get_url:
- url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
- dest: '{{ testing_dir }}\output'
- force: no
- register: http_download_no_force
-
-- name: assert download single file with force no
- assert:
- that:
- - http_download_no_force is not changed
-
-- name: manually change the content and last modified time on FTP source to older datetime
- win_shell: |
- $path = '{{ testing_dir }}\output'
- Set-Content -LiteralPath $path -Value 'abc'
- (Get-Item -LiteralPath $path).LastWriteTime = (Get-Date -Date "01/01/1970")
-
-- name: download newer file with force no
- win_get_url:
- url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
- dest: '{{ testing_dir }}\output'
- force: no
- register: http_download_newer_no_force
-
-- name: assert download newer file with force no
- assert:
- that:
- - http_download_newer_no_force is changed
-
-- name: download file to directory
- win_get_url:
- url: https://{{ httpbin_host }}/image/png
- dest: '{{ testing_dir }}'
- register: http_download_to_directory
-
-- name: get result of download to directory
- win_stat:
- path: '{{ testing_dir }}\png'
- register: http_download_to_directory_result
-
-- name: assert download file to directory
- assert:
- that:
- - http_download_to_directory is changed
- - http_download_to_directory_result.stat.exists
-
-- name: download to path with env var
- win_get_url:
- url: https://{{ httpbin_host }}/image/jpeg
- dest: '%TEST_WIN_GET_URL%\jpeg.jpg'
- register: http_download_with_env
- environment:
- TEST_WIN_GET_URL: '{{ testing_dir }}'
-
-- name: get result of download to path with env var
- win_stat:
- path: '{{ testing_dir }}\jpeg.jpg'
- register: http_download_with_env_result
-
-- name: assert download to path with env var
- assert:
- that:
- - http_download_with_env is changed
- - http_download_with_env_result.stat.exists
-
-- name: fail when link returns 404
- win_get_url:
- url: https://{{ httpbin_host }}/status/404
- dest: '{{ testing_dir }}\skynet_module.html'
- ignore_errors: yes
- register: fail_download_404
-
-- name: assert fail when link returns 404
- assert:
- that:
- - fail_download_404 is not changed
- - fail_download_404 is failed
- - fail_download_404.status_code == 404
-
-- name: fail when dest is an invalid path
- win_get_url:
- url: https://{{ httpbin_host }}/base64/YQ==
- dest: Q:\Filez\Cyberdyne.html
- register: fail_invalid_path
- failed_when: '"The path ''Q:\Filez'' does not exist for destination ''Q:\Filez\Cyberdyne.html''" not in fail_invalid_path.msg'
-
-- name: test basic authentication
- win_get_url:
- url: http://{{ httpbin_host }}/basic-auth/username/password
- dest: '{{ testing_dir }}\basic.txt'
- url_username: username
- url_password: password
- register: basic_auth
-
-- name: assert test basic authentication
- assert:
- that:
- - basic_auth is changed
- - basic_auth.status_code == 200
-
-# httpbin hidden-basic-auth returns 404 not found on auth failure which stops the automatic auth handler from working.
-# Setting force_basic_auth=yes means the Basic auth header is sent in the original request not after a 401 response
-- name: test force basic authentication
- win_get_url:
- url: http://{{ httpbin_host }}/hidden-basic-auth/username/password
- dest: '{{ testing_dir }}\force-basic.txt'
- url_username: username
- url_password: password
- force_basic_auth: yes
- register: force_basic_auth
-
-- name: assert test force basic auth
- assert:
- that:
- - force_basic_auth is changed
- - force_basic_auth.status_code == 200
-
-- name: timeout request
- win_get_url:
- url: https://{{ httpbin_host }}/delay/7
- dest: '{{ testing_dir }}\timeout.txt'
- timeout: 3
- register: timeout_req
- failed_when: 'timeout_req.msg != "Error downloading ''https://" + httpbin_host + "/delay/7'' to ''" + testing_dir + "\\timeout.txt'': The operation has timed out"'
-
-- name: send request with headers
- win_get_url:
- url: https://{{ httpbin_host }}/headers
- dest: '{{ testing_dir }}\headers.txt'
- headers:
- testing: 123
- User-Agent: 'badAgent'
- accept: 'text/html'
- register: headers
-
-- name: get result of send request with headers
- slurp:
- path: '{{ testing_dir }}\headers.txt'
- register: headers_actual
-
-- name: assert send request with headers
- assert:
- that:
- - headers is changed
- - headers.status_code == 200
- - (headers_actual.content | b64decode | from_json).headers.Testing == '123'
- - (headers_actual.content | b64decode | from_json).headers["User-Agent"] == 'badAgent'
- - (headers_actual.content | b64decode | from_json).headers.Accept == 'text/html'
-
-- name: test download follow with redirects
- win_get_url:
- url: https://{{ httpbin_host }}/redirect/2
- dest: '{{ testing_dir }}\redirects.txt'
- register: redirection
-
-- name: assert download follow with redirects
- assert:
- that:
- - redirection is changed
- - redirection.status_code == 200
-
-- name: test download follow without redirects
- win_get_url:
- url: https://{{ httpbin_host }}/redirect/2
- dest: '{{ testing_dir }}\no_redirection.txt'
- follow_redirects: none
- register: no_redirection
-
-- name: get result of test download follow without redirects
- slurp:
- path: '{{ testing_dir }}\no_redirection.txt'
- register: no_redirection_actual
-
-- name: assert test download follow without redirects
- assert:
- that:
- - no_redirection is changed
- - no_redirection.status_code == 302
diff --git a/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl b/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl
deleted file mode 100644
index ce2f712927..0000000000
--- a/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl
+++ /dev/null
@@ -1,28 +0,0 @@
-# http://www.wiki.uniformserver.com/index.php/SlimFTPd:_Config_File
-BindInterface Local
-BindPort 21
-CommandTimeout 300
-ConnectTimeout 15
-MaxConnections 20
-LookupHosts On
-
-<User "anonymous">
- Password ""
- Mount / "{{ slimftpd_link | replace('\\', '\\\\') }}\\ftp"
- Allow /anon All
- Deny /user All
- Deny /user-pass All
-</User>
-
-<User "username">
- Mount / "{{ slimftpd_link | replace('\\', '\\\\') }}\\ftp"
- Allow /anon All
- Allow /user All
- Deny /user-pass All
-</User>
-
-<User "userpass">
- Password "password"
- Mount / "{{ slimftpd_link | replace('\\', '\\\\') }}\\ftp"
- Allow / All
-</User>
diff --git a/test/integration/targets/win_group/aliases b/test/integration/targets/win_group/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_group/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_group/defaults/main.yml b/test/integration/targets/win_group/defaults/main.yml
deleted file mode 100644
index 2ab744e822..0000000000
--- a/test/integration/targets/win_group/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-test_win_group_name: Ansiblings
-test_win_group_description: Test group for Ansible
diff --git a/test/integration/targets/win_group/tasks/main.yml b/test/integration/targets/win_group/tasks/main.yml
deleted file mode 100644
index f66e3c2e75..0000000000
--- a/test/integration/targets/win_group/tasks/main.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-# test code for the slurp module when using winrm connection
-# (c) 2015, Chris Church <cchurch@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: remove test group if it exists
- win_group:
- name: "{{test_win_group_name}}"
- state: absent
-
-- name: create test group with missing name parameter
- win_group:
- description: "{{test_win_group_description}}"
- register: win_group_create_noname
- ignore_errors: true
-
-- name: check create result without name parameter
- assert:
- that:
- - "win_group_create_noname is failed"
-
-- name: create test group with invalid state parameter
- win_group:
- name: "{{test_win_group_name}}"
- state: "unknown"
- register: win_group_create_invalid_state
- ignore_errors: true
-
-- name: check create result with invalid state parameter
- assert:
- that:
- - "win_group_create_invalid_state is failed"
-
-- name: create test group
- win_group:
- name: "{{test_win_group_name}}"
- description: "{{test_win_group_description}}"
- register: win_group_create
-
-- name: check create group results
- assert:
- that:
- - "win_group_create is changed"
-
-- name: create test group again with same options
- win_group:
- name: "{{test_win_group_name}}"
- description: "{{test_win_group_description}}"
- state: "present"
- register: win_group_create_again
-
-- name: check create group again results
- assert:
- that:
- - "win_group_create_again is not changed"
-
-- name: create test group again but change description
- win_group:
- name: "{{test_win_group_name}}"
- description: "{{test_win_group_description}} updated"
- register: win_group_create_new_description
-
-- name: check create group results after updating description
- assert:
- that:
- - "win_group_create_new_description is changed"
-
-- name: remove test group
- win_group:
- name: "{{test_win_group_name}}"
- state: absent
- register: win_group_remove
-
-- name: check remove group result
- assert:
- that:
- - "win_group_remove is changed"
-
-- name: remove test group again
- win_group:
- name: "{{test_win_group_name}}"
- state: absent
- register: win_group_remove_again
-
-- name: check remove group again result
- assert:
- that:
- - "win_group_remove_again is not changed"
diff --git a/test/integration/targets/win_group_membership/aliases b/test/integration/targets/win_group_membership/aliases
deleted file mode 100644
index 4c08975b17..0000000000
--- a/test/integration/targets/win_group_membership/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group6
diff --git a/test/integration/targets/win_group_membership/tasks/main.yml b/test/integration/targets/win_group_membership/tasks/main.yml
deleted file mode 100644
index d26e2e6c96..0000000000
--- a/test/integration/targets/win_group_membership/tasks/main.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-- name: Gather facts
- setup:
-
-- name: Remove potentially leftover test group
- win_group: &wg_absent
- name: WinGroupMembershipTest
- state: absent
-
-- name: Remove potentially leftover test user
- win_user: &wu_absent
- name: WinTestUser
- state: absent
-
-- name: Add new test group
- win_group:
- name: WinGroupMembershipTest
- state: present
-
-- name: Add new test user
- win_user:
- name: WinTestUser
- password: "W1nGr0upM3mb3rsh1pT3$tP@$$w0rd"
- state: present
-
-- name: Run tests for win_group_membership
- block:
-
- - name: Test in normal mode
- import_tasks: tests.yml
- vars:
- win_local_group: WinGroupMembershipTest
- win_local_user: WinTestUser
- in_check_mode: no
-
- - name: Test in check-mode
- import_tasks: tests.yml
- vars:
- win_local_group: WinGroupMembershipTest
- win_local_user: WinTestUser
- in_check_mode: yes
- check_mode: yes
-
-- name: Remove test group
- win_group: *wg_absent
-
-- name: Remove test user
- win_group: *wu_absent \ No newline at end of file
diff --git a/test/integration/targets/win_group_membership/tasks/tests.yml b/test/integration/targets/win_group_membership/tasks/tests.yml
deleted file mode 100644
index 44a94a0473..0000000000
--- a/test/integration/targets/win_group_membership/tasks/tests.yml
+++ /dev/null
@@ -1,320 +0,0 @@
-# Test code for win_group_membership
-
-# Copyright: (c) 2017, Andrew Saraceni <andrew.saraceni@gmail.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: Look up built-in Administrator account name (-500 user whose domain == computer name)
- raw: $machine_sid = (Get-CimInstance Win32_UserAccount -Filter "Domain='$env:COMPUTERNAME'")[0].SID -replace '(S-1-5-21-\d+-\d+-\d+)-\d+', '$1'; (Get-CimInstance Win32_UserAccount -Filter "SID='$machine_sid-500'").Name
- check_mode: no
- register: admin_account_result
-
-- set_fact:
- admin_account_name: "{{ admin_account_result.stdout_lines[0] }}"
-
-- name: Remove potentially leftover group members
- win_group_membership:
- name: "{{ win_local_group }}"
- members:
- - "{{ admin_account_name }}"
- - "{{ win_local_user }}"
- - NT AUTHORITY\SYSTEM
- - NT AUTHORITY\NETWORK SERVICE
- state: absent
-
-
-- name: Add user to fake group
- win_group_membership:
- name: FakeGroup
- members:
- - "{{ admin_account_name }}"
- state: present
- register: add_user_to_fake_group
- failed_when: add_user_to_fake_group.changed != false or add_user_to_fake_group.msg != "Could not find local group FakeGroup"
-
-
-- name: Add fake local user
- win_group_membership:
- name: "{{ win_local_group }}"
- members:
- - FakeUser
- state: present
- register: add_fake_local_user
- failed_when: add_fake_local_user.changed != false or add_fake_local_user.msg is not search("account_name FakeUser is not a valid account, cannot get SID.*")
-
-
-- name: Add users to group
- win_group_membership: &wgm_present
- name: "{{ win_local_group }}"
- members:
- - "{{ admin_account_name }}"
- - "{{ win_local_user }}"
- - NT AUTHORITY\SYSTEM
- state: present
- register: add_users_to_group
-
-- name: Test add_users_to_group (normal mode)
- assert:
- that:
- - add_users_to_group.changed == true
- - add_users_to_group.added == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- - add_users_to_group.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- when: not in_check_mode
-
-- name: Test add_users_to_group (check-mode)
- assert:
- that:
- - add_users_to_group.changed == true
- - add_users_to_group.added == []
- - add_users_to_group.members == []
- when: in_check_mode
-
-
-- name: Add users to group (again)
- win_group_membership: *wgm_present
- register: add_users_to_group_again
-
-- name: Test add_users_to_group_again (normal mode)
- assert:
- that:
- - add_users_to_group_again.changed == false
- - add_users_to_group_again.added == []
- - add_users_to_group_again.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- when: not in_check_mode
-
-
-- name: Add different syntax users to group (again)
- win_group_membership:
- <<: *wgm_present
- members:
- - '{{ ansible_hostname }}\{{ admin_account_name }}'
- - '.\{{ win_local_user }}'
- register: add_different_syntax_users_to_group_again
-
-- name: Test add_different_syntax_users_to_group_again (normal mode)
- assert:
- that:
- - add_different_syntax_users_to_group_again.changed == false
- - add_different_syntax_users_to_group_again.added == []
- - add_different_syntax_users_to_group_again.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- when: not in_check_mode
-
-- name: Test add_different_syntax_users_to_group_again (check-mode)
- assert:
- that:
- - add_different_syntax_users_to_group_again.changed == true
- - add_different_syntax_users_to_group_again.added == []
- - add_different_syntax_users_to_group_again.members == []
- when: in_check_mode
-
-
-- name: Add another user to group
- win_group_membership: &wgma_present
- <<: *wgm_present
- members:
- - NT AUTHORITY\NETWORK SERVICE
- register: add_another_user_to_group
-
-- name: Test add_another_user_to_group (normal mode)
- assert:
- that:
- - add_another_user_to_group.changed == true
- - add_another_user_to_group.added == ["NT AUTHORITY\\NETWORK SERVICE"]
- - add_another_user_to_group.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM", "NT AUTHORITY\\NETWORK SERVICE"]
- when: not in_check_mode
-
-- name: Test add_another_user_to_group (check-mode)
- assert:
- that:
- - add_another_user_to_group.changed == true
- - add_another_user_to_group.added == []
- - add_another_user_to_group.members == []
- when: in_check_mode
-
-
-- name: Add another user to group (again)
- win_group_membership: *wgma_present
- register: add_another_user_to_group_again
-
-- name: Test add_another_user_to_group_1_again (normal mode)
- assert:
- that:
- - add_another_user_to_group_again.changed == false
- - add_another_user_to_group_again.added == []
- - add_another_user_to_group_again.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM", "NT AUTHORITY\\NETWORK SERVICE"]
- when: not in_check_mode
-
-
-- name: Remove users from group
- win_group_membership: &wgm_absent
- <<: *wgm_present
- state: absent
- register: remove_users_from_group
-
-- name: Test remove_users_from_group (normal mode)
- assert:
- that:
- - remove_users_from_group.changed == true
- - remove_users_from_group.removed == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- - remove_users_from_group.members == ["NT AUTHORITY\\NETWORK SERVICE"]
- when: not in_check_mode
-
-- name: Test remove_users_from_group (check-mode)
- assert:
- that:
- - remove_users_from_group.changed == false
- - remove_users_from_group.removed == []
- - remove_users_from_group.members == []
- when: in_check_mode
-
-
-- name: Remove users from group (again)
- win_group_membership: *wgm_absent
- register: remove_users_from_group_again
-
-- name: Test remove_users_from_group_again (normal mode)
- assert:
- that:
- - remove_users_from_group_again.changed == false
- - remove_users_from_group_again.removed == []
- - remove_users_from_group_again.members == ["NT AUTHORITY\\NETWORK SERVICE"]
- when: not in_check_mode
-
-
-- name: Remove different syntax users from group (again)
- win_group_membership:
- <<: *wgm_absent
- members:
- - '{{ ansible_hostname }}\{{ admin_account_name }}'
- - '.\{{ win_local_user }}'
- register: remove_different_syntax_users_from_group_again
-
-- name: Test remove_different_syntax_users_from_group_again (normal mode)
- assert:
- that:
- - remove_different_syntax_users_from_group_again.changed == false
- - remove_different_syntax_users_from_group_again.removed == []
- - remove_different_syntax_users_from_group_again.members == ["NT AUTHORITY\\NETWORK SERVICE"]
- when: not in_check_mode
-
-- name: Test add_different_syntax_users_to_group_again (check-mode)
- assert:
- that:
- - remove_different_syntax_users_from_group_again.changed == false
- - remove_different_syntax_users_from_group_again.removed == []
- - remove_different_syntax_users_from_group_again.members == []
- when: in_check_mode
-
-
-- name: Remove another user from group
- win_group_membership: &wgma_absent
- <<: *wgm_absent
- members:
- - NT AUTHORITY\NETWORK SERVICE
- register: remove_another_user_from_group
-
-- name: Test remove_another_user_from_group (normal mode)
- assert:
- that:
- - remove_another_user_from_group.changed == true
- - remove_another_user_from_group.removed == ["NT AUTHORITY\\NETWORK SERVICE"]
- - remove_another_user_from_group.members == []
- when: not in_check_mode
-
-- name: Test remove_another_user_from_group (check-mode)
- assert:
- that:
- - remove_another_user_from_group.changed == false
- - remove_another_user_from_group.removed == []
- - remove_another_user_from_group.members == []
- when: in_check_mode
-
-
-- name: Remove another user from group (again)
- win_group_membership: *wgma_absent
- register: remove_another_user_from_group_again
-
-- name: Test remove_another_user_from_group_again (normal mode)
- assert:
- that:
- - remove_another_user_from_group_again.changed == false
- - remove_another_user_from_group_again.removed == []
- - remove_another_user_from_group_again.members == []
- when: not in_check_mode
-
-
-- name: Setup users for pure testing
- win_group_membership:
- <<: *wgm_present
- members:
- - "{{ admin_account_name }}"
- - NT AUTHORITY\NETWORK SERVICE
-
-
-- name: Define users as pure
- win_group_membership: &wgm_pure
- <<: *wgm_present
- state: pure
- register: define_users_as_pure
-
-- name: Test define_users_as_pure (normal mode)
- assert:
- that:
- - define_users_as_pure.changed == true
- - define_users_as_pure.added == ["{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- - define_users_as_pure.removed == ["NT AUTHORITY\\NETWORK SERVICE"]
- - define_users_as_pure.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- when: not in_check_mode
-
-- name: Test define_users_as_pure (check-mode)
- assert:
- that:
- - define_users_as_pure.changed == true
- - define_users_as_pure.added == []
- - define_users_as_pure.removed == []
- - define_users_as_pure.members == []
- when: in_check_mode
-
-
-- name: Define users as pure (again)
- win_group_membership: *wgm_pure
- register: define_users_as_pure_again
-
-- name: Test define_users_as_pure_again (normal mode)
- assert:
- that:
- - define_users_as_pure_again.changed == false
- - define_users_as_pure_again.added == []
- - define_users_as_pure_again.removed == []
- - define_users_as_pure_again.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}", "NT AUTHORITY\\SYSTEM"]
- when: not in_check_mode
-
-
-- name: Define different syntax users as pure
- win_group_membership:
- <<: *wgm_pure
- members:
- - '{{ ansible_hostname }}\{{ admin_account_name }}'
- - '.\{{ win_local_user }}'
- register: define_different_syntax_users_as_pure
-
-- name: Test define_different_syntax_users_as_pure (normal mode)
- assert:
- that:
- - define_different_syntax_users_as_pure.changed == true
- - define_different_syntax_users_as_pure.added == []
- - define_different_syntax_users_as_pure.removed == ["NT AUTHORITY\\SYSTEM"]
- - define_different_syntax_users_as_pure.members == ["{{ ansible_hostname }}\\{{ admin_account_name }}", "{{ ansible_hostname }}\\{{ win_local_user }}"]
- when: not in_check_mode
-
-- name: Test define_different_syntax_users_as_pure (check-mode)
- assert:
- that:
- - define_different_syntax_users_as_pure.changed == true
- - define_different_syntax_users_as_pure.added == []
- - define_different_syntax_users_as_pure.removed == []
- - define_different_syntax_users_as_pure.members == []
- when: in_check_mode
-
-
-- name: Teardown remaining pure users
- win_group_membership: *wgm_absent \ No newline at end of file
diff --git a/test/integration/targets/win_hostname/aliases b/test/integration/targets/win_hostname/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_hostname/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_hostname/defaults/main.yml b/test/integration/targets/win_hostname/defaults/main.yml
deleted file mode 100644
index dfc956db29..0000000000
--- a/test/integration/targets/win_hostname/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-test_win_hostname_name: abcdef-123
diff --git a/test/integration/targets/win_hostname/tasks/main.yml b/test/integration/targets/win_hostname/tasks/main.yml
deleted file mode 100644
index 6f4df9be77..0000000000
--- a/test/integration/targets/win_hostname/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- name: get the current hostname
- win_command: hostname
- register: current_hostname
-
-- block:
- - name: run tests
- include_tasks: test.yml
-
- always:
- - name: reset the hostname back to the original
- win_hostname:
- name: '{{current_hostname.stdout_lines[0]}}'
- register: reset_hostname
-
- - name: reboot if required
- win_reboot:
- when: reset_hostname.reboot_required
diff --git a/test/integration/targets/win_hostname/tasks/test.yml b/test/integration/targets/win_hostname/tasks/test.yml
deleted file mode 100644
index 6c3c247a04..0000000000
--- a/test/integration/targets/win_hostname/tasks/test.yml
+++ /dev/null
@@ -1,56 +0,0 @@
----
-- name: fail to set hostname to an invalid name
- win_hostname:
- name: invalid/name
- register: fail_hostname
- failed_when: '"Failed to rename computer to ''invalid/name''" not in fail_hostname.msg'
-
-- name: change the hostname (check)
- win_hostname:
- name: '{{test_win_hostname_name}}'
- register: change_hostname_check
- check_mode: yes
-
-- name: get actual hostname
- win_shell: $env:COMPUTERNAME
- register: change_hostname_actual_check
-
-- name: assert change the hostname (check)
- assert:
- that:
- - change_hostname_check is changed
- - change_hostname_check.old_name|upper != test_win_hostname_name|upper
- - change_hostname_check.reboot_required
- - change_hostname_actual_check.stdout_lines[0]|upper != test_win_hostname_name|upper
-
-- name: change the hostname
- win_hostname:
- name: '{{test_win_hostname_name}}'
- register: change_hostname
-
-- name: reboot after changing the hostname
- win_reboot:
-
-- name: get actual hostname
- win_shell: $env:COMPUTERNAME
- register: change_hostname_actual
-
-- name: assert change the hostname
- assert:
- that:
- - change_hostname is changed
- - change_hostname.old_name|upper == change_hostname_check.old_name|upper
- - change_hostname.reboot_required
- - change_hostname_actual.stdout_lines[0]|upper == test_win_hostname_name|upper
-
-- name: change the hostname (idempotent)
- win_hostname:
- name: '{{test_win_hostname_name}}'
- register: change_hostname_again
-
-- name: assert change the hostname (idempotent)
- assert:
- that:
- - not change_hostname_again is changed
- - change_hostname_again.old_name|upper == test_win_hostname_name|upper
- - not change_hostname_again.reboot_required
diff --git a/test/integration/targets/win_optional_feature/aliases b/test/integration/targets/win_optional_feature/aliases
deleted file mode 100644
index 9ad549d4a6..0000000000
--- a/test/integration/targets/win_optional_feature/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/windows/group2
-skip/windows/2008
-skip/windows/2008-R2
diff --git a/test/integration/targets/win_optional_feature/tasks/main.yml b/test/integration/targets/win_optional_feature/tasks/main.yml
deleted file mode 100644
index 556590cee4..0000000000
--- a/test/integration/targets/win_optional_feature/tasks/main.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Test code for win_optional_feature module
-# Copyright: (c) 2019, Carson Anderson <rcanderson23@gmail.com>
-
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: check if host supports module
- win_shell: if (Get-Command -Name Enable-WindowsOptionalFeature -ErrorAction SilentlyContinue) { $true } else { $false }
- register: run_tests
-
-- name: run tests
- when: run_tests.stdout | trim | bool
- block:
- - name: ensure we start test with removed features
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: absent
- - include_tasks: tests.yml
-
- always:
- - name: make sure test features have been removed after test
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: absent
diff --git a/test/integration/targets/win_optional_feature/tasks/tests.yml b/test/integration/targets/win_optional_feature/tasks/tests.yml
deleted file mode 100644
index ebec9e8d34..0000000000
--- a/test/integration/targets/win_optional_feature/tasks/tests.yml
+++ /dev/null
@@ -1,151 +0,0 @@
-# Test code for win_optional_feature module
-# Copyright: (c) 2019, Carson Anderson <rcanderson23@gmail.com>
-
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: fail with invalid feature name
- win_optional_feature:
- name:
- - TelnetClient
- - FakeFeature
- state: present
- register: invalid_name
- failed_when: invalid_name.msg != "Failed to find feature 'FakeFeature'"
-
-- name: run with check_mode
- win_optional_feature:
- name: TelnetClient
- state: present
- include_parent: true
- check_mode: yes
- register: feature_check
-
-- name: assert check_mode
- assert:
- that:
- - feature_check.changed
-
-- name: run without check_mode
- win_optional_feature:
- name: TelnetClient
- state: present
- include_parent: true
- register: real_feature_check
-
-- name: assert feature installed
- assert:
- that:
- - real_feature_check.changed
-
-- name: test idempotence for install
- win_optional_feature:
- name: TelnetClient
- state: present
- include_parent: true
- register: real_feature_check
-
-- name: assert idempotence
- assert:
- that:
- - not real_feature_check.changed
-
-- name: install feature with list
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: present
- include_parent: true
- register: install_list
-
-- name: assert install feature with list
- assert:
- that:
- - install_list is changed
-
-- name: install feature with list (idempotent)
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: present
- include_parent: true
- register: install_list_again
-
-- name: assert install feature with list (idempotent)
- assert:
- that:
- - not install_list_again is changed
-
-- name: removal run with check_mode
- win_optional_feature:
- name: TelnetClient
- state: absent
- check_mode: yes
- register: feature_check
-
-- name: assert removal check_mode
- assert:
- that:
- - feature_check.changed
-
-- name: remove feature
- win_optional_feature:
- name: TelnetClient
- state: absent
- register: real_feature_check
-
-- name: assert feature removed
- assert:
- that:
- - real_feature_check.changed
-
-- name: test idempotence for removal
- win_optional_feature:
- name: TelnetClient
- state: absent
- register: real_feature_check
-
-- name: assert idempotence
- assert:
- that:
- - not real_feature_check.changed
-
-- name: remove feature with list
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: absent
- register: remove_feature_list
-
-- name: assert remove feature with list
- assert:
- that:
- - remove_feature_list is changed
-
-- name: remove feature with list (idempotent)
- win_optional_feature:
- name:
- - SimpleTCP
- - TelnetClient
- state: absent
- register: remove_feature_list_again
-
-- name: assert remove feature with list (idempotent)
- assert:
- that:
- - not remove_feature_list_again is changed
diff --git a/test/integration/targets/win_owner/aliases b/test/integration/targets/win_owner/aliases
deleted file mode 100644
index 641468f584..0000000000
--- a/test/integration/targets/win_owner/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group5
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_owner/defaults/main.yml b/test/integration/targets/win_owner/defaults/main.yml
deleted file mode 100644
index a3882a95f6..0000000000
--- a/test/integration/targets/win_owner/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_win_owner_path: C:\ansible\win_owner .ÅÑŚÌβŁÈ [$!@^&test(;)]
diff --git a/test/integration/targets/win_owner/tasks/main.yml b/test/integration/targets/win_owner/tasks/main.yml
deleted file mode 100644
index 4b6046f409..0000000000
--- a/test/integration/targets/win_owner/tasks/main.yml
+++ /dev/null
@@ -1,209 +0,0 @@
----
-# Setup tests
-# Use single task to save on CI runtime
-- name: create test files
- win_shell: |
- $folders = @(
- "folder",
- "folder\folder1",
- "folder\folder2",
- "folder with space",
- "folder with space\folder1",
- "folder with space\folder2"
- )
- $tmp_dir = '{{ test_win_owner_path }}'
- if (Test-Path -LiteralPath $tmp_dir) {
- Remove-Item -LiteralPath $tmp_dir -Force -Recurse
- }
- New-Item -Path $tmp_dir -ItemType Directory
-
- foreach ($folder in $folders) {
- New-Item -Path "$tmp_dir\$folder" -ItemType Directory
- }
- $files = @(
- "folder\file.txt",
- "folder\folder1\file.txt",
- "folder\folder2\file.txt",
- "folder with space\file.txt",
- "folder with space\folder1\file.txt",
- "folder with space\folder2\file.txt"
- )
- foreach ($file in $files) {
- Set-Content -LiteralPath "$tmp_dir\$file" -Value "content"
- }
-
-# Run win_owner tests
-- name: set owner for invalid path
- win_owner:
- path: C:\invalid
- user: SYSTEM
- register: invalid_path
- failed_when: invalid_path.msg != 'C:\invalid file or directory does not exist on the host'
-
-- name: set owner for invalid user
- win_owner:
- path: "{{test_win_owner_path}}"
- user: invalid-user
- register: invalid_user
- failed_when: invalid_user.msg is not search("account_name invalid-user is not a valid account, cannot get SID.*")
-
-- name: set owner defaults check
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- register: defaults_check
- check_mode: True
-
-- name: get owner of folder of set owner defaults check
- win_shell: (Get-Acl -LiteralPath '{{test_win_owner_path}}\\folder').Owner
- register: actual_defaults_check
-
-- name: assert set owner defaults check
- assert:
- that:
- - defaults_check is changed
- - actual_defaults_check.stdout_lines[0] == 'BUILTIN\Administrators'
-
-- name: set owner defaults
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- register: defaults
-
-- name: get owner of folder of set owner defaults
- win_shell: (Get-Acl -LiteralPath '{{test_win_owner_path}}\\folder').Owner
- register: actual_defaults
-
-- name: assert set owner defaults
- assert:
- that:
- - defaults is changed
- - actual_defaults.stdout_lines[0] == 'NT AUTHORITY\SYSTEM'
-
-- name: set owner defaults again
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- register: defaults_again
-
-- name: assert set owner defaults again
- assert:
- that:
- - defaults_again is not changed
-
-- name: set owner recurse check
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- recurse: True
- register: recurse_check
- check_mode: True
-
-- name: get owner of folder of set owner recurse check
- win_shell: (Get-Acl -LiteralPath '{{test_win_owner_path}}\\{{item.path}}').Owner
- register: actual_recurse_check
- failed_when: actual_recurse_check.stdout_lines[0] != item.owner
- with_items:
- - { path: 'folder', owner: 'NT AUTHORITY\SYSTEM' }
- - { path: 'folder\file.txt', owner: 'BUILTIN\Administrators' }
- - { path: 'folder\folder1', owner: 'BUILTIN\Administrators' }
- - { path: 'folder\folder1\file.txt', owner: 'BUILTIN\Administrators' }
- - { path: 'folder\folder2', owner: 'BUILTIN\Administrators' }
- - { path: 'folder\folder2\file.txt', owner: 'BUILTIN\Administrators' }
-
-- name: assert set owner recurse check
- assert:
- that:
- - recurse_check is changed
-
-- name: set owner recurse
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- recurse: True
- register: recurse
-
-- name: get owner of folder of set owner recurse
- win_shell: (Get-Acl -LiteralPath '{{test_win_owner_path}}\\{{item}}').Owner
- register: actual_recurse
- failed_when: actual_recurse.stdout_lines[0] != 'NT AUTHORITY\SYSTEM'
- with_items:
- - folder
- - folder\file.txt
- - folder\folder1
- - folder\folder1\file.txt
- - folder\folder2
- - folder\folder2\file.txt
-
-- name: assert set owner recurse
- assert:
- that:
- - recurse is changed
-
-- name: set owner recurse again
- win_owner:
- path: "{{test_win_owner_path}}\\folder"
- user: SYSTEM
- recurse: True
- register: recurse_again
-
-- name: assert set owner recurse again
- assert:
- that:
- - recurse_again is not changed
-
-- name: create test user
- win_user:
- name: test win owner
- password: E1K0-O8b1-c8M9-c6D5
- register: test_user
-
-- name: set owner with space recurse
- win_owner:
- path: "{{test_win_owner_path}}\\folder with space"
- user: test win owner
- recurse: True
- register: recurse_space
-
-- name: get owner of folder of set owner with space recurse
- win_shell: |
- $owner = (Get-Acl -LiteralPath '{{ test_win_owner_path }}\{{ item }}').Owner
- $account = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList $owner
- $account.Translate([System.Security.Principal.SecurityIdentifier]).Value
- register: actual_recurse_space
- failed_when: actual_recurse_space.stdout_lines[0] != test_user.sid
- with_items:
- - folder with space
- - folder with space\file.txt
- - folder with space\folder1
- - folder with space\folder1\file.txt
- - folder with space\folder2
- - folder with space\folder2\file.txt
-
-- name: assert set owner with space recurse
- assert:
- that:
- - recurse_space is changed
-
-- name: set owner with space recurse again
- win_owner:
- path: "{{test_win_owner_path}}\\folder with space"
- user: test win owner
- recurse: True
- register: recurse_space_again
-
-- name: assert set owner with space recurse again
- assert:
- that:
- - recurse_space_again is not changed
-
-# Run cleanup after tests
-- name: delete test path
- win_file:
- path: "{{test_win_owner_path}}"
- state: absent
-
-- name: remove test user
- win_user:
- name: test win owner
- state: absent
diff --git a/test/integration/targets/win_package/aliases b/test/integration/targets/win_package/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_package/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_package/defaults/main.yml b/test/integration/targets/win_package/defaults/main.yml
deleted file mode 100644
index 87d6ec8c16..0000000000
--- a/test/integration/targets/win_package/defaults/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
----
-test_path: '{{ remote_tmp_dir }}\win_package .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-
-# MSI packages
-good_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_package/good.msi
-reboot_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_package/reboot.msi
-bad_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_package/bad.msi
-
-# MSIX tools
-makeappx_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_package/makeappx.zip
-
-# MSP packages - https://wixtoolset.org/documentation/manual/v3/patching/patch_building.html
-patch_msi_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_package/patch.msi
-patch_msp_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_package/patch.msp
-patch_install_file: C:\Program Files (x86)\Patch Sample Directory\Sample.txt
-
-good_id: '{223D9A13-653B-4231-A365-EDDC30B4F226}'
-reboot_id: '{223D9A13-653B-4231-A365-EDDC30B4F227}'
-patch_product_id: '{48C49ACE-90CF-4161-9C6E-9162115A54DD}'
-patch_patch_id: '{224C316C-5894-4771-BABF-21A3AC1F75FF}'
-msix_id: WinPackageMsix
-msixbundle_id: WinPackageBundleMsix
-appx_id: WinPackageAppx
-appxbundle_id: WinPackageBundleAppx
-registry_id: WinPackageRegistry
-
-all_ids:
-- '{{ good_id }}'
-- '{{ reboot_id }}'
-- '{{ patch_product_id }}'
-- '{{ msix_id }}'
-- '{{ msixbundle_id }}'
-- '{{ appx_id }}'
-- '{{ appxbundle_id }}'
-- '{{ registry_id }}'
diff --git a/test/integration/targets/win_package/files/bad.wsx b/test/integration/targets/win_package/files/bad.wsx
deleted file mode 100644
index 5014610940..0000000000
--- a/test/integration/targets/win_package/files/bad.wsx
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product Id="223D9A13-653B-4231-A365-EDDC30B4F228" UpgradeCode="575580C0-AFA1-4C17-8A9C-3CB0CEDC6A06" Name="Bovine University" Manufacturer="Ansible" Version="1.0.0" Language="1033" Codepage="1252">
- <Package InstallerVersion="200" Compressed="yes" Comments="When I grow up I want to go to Bovine University" />
- <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
- </Product>
-</Wix>
diff --git a/test/integration/targets/win_package/files/good.wsx b/test/integration/targets/win_package/files/good.wsx
deleted file mode 100644
index ee90745687..0000000000
--- a/test/integration/targets/win_package/files/good.wsx
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product Id="223D9A13-653B-4231-A365-EDDC30B4F226" UpgradeCode="575580C0-AFA1-4C17-8A9C-3CB0CEDC6A05" Name="Bovine University" Manufacturer="Ansible" Version="1.0.0" Language="1033" Codepage="1252">
- <Package InstallerVersion="200" Compressed="yes" Comments="When I grow up I want to go to Bovine University" />
- <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="ProgramFilesFolder">
- <Directory Id="INSTALLDIR" Name="Bovine University">
- <Component Id="MooFiles" Guid="D7BC586D-A23C-4002-BC20-76579F25C67D">
- <File Id="MooFile" Source="moo.exe" />
- </Component>
- <Component Id="CowFiles" Guid="D1801B2D-8E54-4F19-8B14-A42D8A122A24">
- <File Id="CowFile" Source="cow.exe" />
- </Component>
- </Directory>
- </Directory>
- </Directory>
-
- <Feature Id="Moo" Level="1">
- <ComponentRef Id="MooFiles" />
- </Feature>
- <Feature Id="Cow" Level="1">
- <ComponentRef Id="CowFiles" />
- </Feature>
- </Product>
-</Wix>
diff --git a/test/integration/targets/win_package/files/reboot.wsx b/test/integration/targets/win_package/files/reboot.wsx
deleted file mode 100644
index c6ded2a67d..0000000000
--- a/test/integration/targets/win_package/files/reboot.wsx
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product Id="223D9A13-653B-4231-A365-EDDC30B4F227" UpgradeCode="575580C0-AFA1-4C17-8A9C-3CB0CEDC6A06" Name="Bovine University" Manufacturer="Ansible" Version="1.0.0" Language="1033" Codepage="1252">
- <Package InstallerVersion="200" Compressed="yes" Comments="When I grow up I want to go to Bovine University" />
- <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="ProgramFilesFolder">
- <Directory Id="INSTALLDIR" Name="Bovine University">
- <Component Id="MooFiles" Guid="D7BC586D-A23C-4002-BC20-76579F25C67D">
- <File Id="MooFile" Source="moo.exe" />
- </Component>
- <Component Id="CowFiles" Guid="D1801B2D-8E54-4F19-8B14-A42D8A122A24">
- <File Id="CowFile" Source="cow.exe" />
- </Component>
- </Directory>
- </Directory>
- </Directory>
-
- <Feature Id="Moo" Level="1">
- <ComponentRef Id="MooFiles" />
- </Feature>
- <Feature Id="Cow" Level="1">
- <ComponentRef Id="CowFiles" />
- </Feature>
-
- <InstallExecuteSequence>
- <ScheduleReboot After="InstallFinalize" />
- </InstallExecuteSequence>
- </Product>
-</Wix>
diff --git a/test/integration/targets/win_package/handlers/main.yml b/test/integration/targets/win_package/handlers/main.yml
deleted file mode 100644
index 41cdb8179e..0000000000
--- a/test/integration/targets/win_package/handlers/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: remove trusted root cert
- win_certificate_store:
- thumbprint: '{{ test_win_package_msix_packages.thumbprint }}'
- store_location: LocalMachine
- store_name: Root
- state: absent
-
-- name: remove sideloading mode for msix
- win_regedit:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
- name: AllowAllTrustedApps
- data: 0
- type: dword
- state: present
diff --git a/test/integration/targets/win_package/library/win_make_appx.ps1 b/test/integration/targets/win_package/library/win_make_appx.ps1
deleted file mode 100644
index eaf6e8e1ee..0000000000
--- a/test/integration/targets/win_package/library/win_make_appx.ps1
+++ /dev/null
@@ -1,194 +0,0 @@
-#!powershell
-
-# Copyright: (c) 2020, Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-#AnsibleRequires -CSharpUtil Ansible.Basic
-#Requires -Module Ansible.ModuleUtils.ArgvParser
-#Requires -Module Ansible.ModuleUtils.CommandUtil
-
-$spec = @{
- options = @{
- packages = @{
- type = "list"
- elements = "dict"
- options = @{
- identity = @{ type = "str"; required = $true }
- version = @{ type = "str"; required = $true }
- architecture = @{ type = "str" }
- resource_id = @{ type = "str" }
- min_version = @{ type = "str"; default = "10.0.17763.0" }
- max_version = @{ type = "str"; default = "10.0.18362.0" }
- filename = @{ type = "str"; required = $true }
- }
- }
- bundles = @{
- type = "list"
- elements = "dict"
- options = @{
- files = @{ type = "list"; elements = "str"; required = $true }
- filename = @{ type = "str"; required = $true }
- }
- }
- publisher = @{ type = "str"; required = $true }
- path = @{ type = "str"; required = $true }
- makeappx_path = @{ type = "str"; required = $true }
- signtool_path = @{ type = "str"; required = $true }
- }
-}
-
-$module = [Ansible.Basic.AnsibleModule]::Create($args, $spec)
-
-$packages = $module.Params.packages
-$bundles = $module.Params.bundles
-$publisher = $module.Params.publisher
-$path = $module.Params.path
-$makeappxPath = $module.Params.makeappx_path
-$signtoolPath = $module.Params.signtool_path
-
-if (-not (Test-Path -LiteralPath $path)) {
- $module.FailJson("The path at '$path' does not exist")
-}
-
-$manifest = @'
-<?xml version="1.0" encoding="utf-8"?>
-<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
- <Identity Name="{0}" Version="{1}" Publisher="{2}"{3}{4} />
- <Properties>
- <DisplayName>{0}DisplayName</DisplayName>
- <PublisherDisplayName>PublisherDisplayName</PublisherDisplayName>
- <Description>Test MSIX Package for win_package</Description>
- <Logo>icon.png</Logo>
- </Properties>
- <Resources>
- <Resource Language="en-us" />
- </Resources>
- <Dependencies>
- <TargetDeviceFamily Name="Windows.Desktop" MinVersion="{5}" MaxVersionTested="{6}" />
- </Dependencies>
- <Capabilities>
- <rescap:Capability Name="runFullTrust"/>
- </Capabilities>
- <Applications>
- <Application Id="MsixPackage" Executable="test.exe" EntryPoint="Windows.FullTrustApplication">
- <uap:VisualElements DisplayName="{0}AppDisplayName" Description="Description" Square150x150Logo="icon.png" Square44x44Logo="icon.png" BackgroundColor="#464646"/>
- </Application>
- </Applications>
-</Package>
-'@
-
-# bytes of http://1x1px.me/000000-0.png
-$iconBytes = [System.Convert]::FromBase64String('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGNiYAAAAAkAAxkR2eQAAAAASUVORK5CYII=')
-
-$certParams = @{
- # Can only create in the My store, so store it there temporarily.
- CertStoreLocation = 'Cert:\CurrentUser\My'
- FriendlyName = 'win_package test'
- KeyUsage = 'DigitalSignature'
- Subject = $publisher
- TextExtension = @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
- Type = 'Custom'
-}
-$cert = New-SelfSignedCertificate @certParams
-
-try {
- # Need to create a temporary pfx for signtool.exe and we need to import the cert to the Trusted Root store.
- $module.Result.thumbprint = $cert.Thumbprint
- $certPath = Join-Path -Path $module.Tmpdir -ChildPath 'cert.pfx'
- $certPassword = ([char[]]([char]33..[char]126) | Sort-Object {Get-Random})[0..16] -join ''
- $certPasswordSS = ConvertTo-SecureString -String $certPassword -AsPlainText -Force
- $null = $cert | Export-PfxCertificate -FilePath $certPath -Password $certPasswordSS
-
- $importParams = @{
- FilePath = $certPath
- CertStoreLocation = 'Cert:\LocalMachine\Root'
- Password = $certPasswordSS
- }
- $null = Import-PfxCertificate @importParams
-} finally {
- $cert | Remove-Item -Force
-}
-
-$module.Result.changed = $true
-
-foreach ($info in $packages) {
- $architectureAttribute = ""
- if ($info.architecture) {
- $architectureAttribute = " ProcessorArchitecture=`"$($info.architecture)`""
- }
-
- $resourceIdAttribute = ""
- if ($info.resource_id) {
- $resourceIdAttribute = " ResourceId=`"$($info.resource_id)`""
- }
-
- $xml = $manifest -f @(
- $info.identity, $info.version, $publisher, $architectureAttribute, $resourceIdAttribute, $info.min_version,
- $info.max_version
- )
-
- $tempDir = Join-Path -Path $module.Tmpdir -ChildPath ([System.IO.Path]::GetRandomFileName())
- New-Item -Path $tempDir -ItemType Directory > $null
- Set-Content -LiteralPath (Join-Path -Path $tempDir -ChildPath 'AppxManifest.xml') -Value $xml
- Set-Content -LiteralPath (Join-Path -Path $tempDir -ChildPath 'icon.png') -Value $iconBytes
- Set-Content -LiteralPath (Join-Path -Path $tempDir -ChildPath 'test.exe') -Value ''
-
- $outPath = Join-Path -Path $path -ChildPath $info.filename
- $makeArguments = @($makeappxPath, 'pack', '/d', $tempDir, '/p', $outPath, '/o')
- $res = Run-Command -command (Argv-ToString -arguments $makeArguments)
-
- if ($res.rc -ne 0) {
- $module.Result.rc = $res.rc
- $module.Result.stdout = $res.stdout
- $module.Result.stderr = $res.stderr
- $module.FailJson("Failed to make package for $($info.filename): see stdout and stderr for more info")
- }
-
- Remove-Item -Literalpath $tempDir -Force -Recurse
-
- $signArguments = @($signtoolPath, 'sign', '/a', '/v', '/fd', 'SHA256', '/f', $certPath, '/p', $certPassword,
- $outPath)
- $res = Run-Command -command (Argv-ToString -arguments $signArguments)
-
- if ($res.rc -ne 0) {
- $module.Result.rc = $res.rc
- $module.Result.stdout = $res.stdout
- $module.Result.stderr = $res.stderr
- $module.FailJson("Failed to sign package for $($info.filename): see stdout and stderr for more info")
- }
-}
-
-foreach ($info in $bundles) {
- $tempDir = Join-Path -Path $module.Tmpdir -ChildPath ([System.IO.Path]::GetRandomFileName())
- New-Item -Path $tempDir -ItemType Directory > $null
- foreach ($name in $info.files) {
- $sourcePath = Join-Path -Path $path -ChildPath $name
- $targetPath = Join-Path -Path $tempDir -ChildPath $name
- Move-Item -LiteralPath $sourcePath -Destination $targetPath
- }
- $outPath = Join-Path -Path $path -ChildPath $info.filename
- $makeArguments = @($makeappxPath, 'bundle', '/d', $tempDir, '/p', $outPath, '/o')
- $res = Run-Command -command (Argv-ToString -arguments $makeArguments)
-
- if ($res.rc -ne 0) {
- $module.Result.rc = $res.rc
- $module.Result.stdout = $res.stdout
- $module.Result.stderr = $res.stderr
- $module.FailJson("Failed to make bundle for $($info.filename): see stdout and stderr for more info")
- }
-
- Remove-Item -LiteralPath $tempDir -Force -Recurse
-
- $signArguments = @($signtoolPath, 'sign', '/a', '/v', '/fd', 'SHA256', '/f', $certPath, '/p', $certPassword,
- $outPath)
- $res = Run-Command -command (Argv-ToString -arguments $signArguments)
-
- if ($res.rc -ne 0) {
- $module.Result.rc = $res.rc
- $module.Result.stdout = $res.stdout
- $module.Result.stderr = $res.stderr
- $module.FailJson("Failed to sign bundle for $($info.filename): see stdout and stderr for more info")
- }
-}
-
-$module.ExitJson()
diff --git a/test/integration/targets/win_package/meta/main.yml b/test/integration/targets/win_package/meta/main.yml
deleted file mode 100644
index 9f37e96cd9..0000000000
--- a/test/integration/targets/win_package/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- setup_remote_tmp_dir
diff --git a/test/integration/targets/win_package/tasks/failure_tests.yml b/test/integration/targets/win_package/tasks/failure_tests.yml
deleted file mode 100644
index e37e757789..0000000000
--- a/test/integration/targets/win_package/tasks/failure_tests.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# these tests are invalid arguments and failure states for win_package
----
-- name: fail to install broken msi
- win_package:
- path: '{{ test_path }}\bad.msi'
- state: present
- register: fail_bad_rc
- failed_when: "'unexpected rc from' not in fail_bad_rc.msg and fail_bad_rc.rc != 1603"
-
-- name: fail when not using an int for a return code
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- expected_return_code: 0,abc
- register: fail_invalid_return_code
- failed_when: "'argument for list entry expected_return_code is of type System>String and we were unable to convert to in' in fail_invalid_return_code.msg"
-
-- name: fail when path is not set and state!= absent
- win_package:
- state: present
- register: fail_no_path
- failed_when: 'fail_no_path.msg != "state is present but all of the following are missing: path"'
-
-- name: fail when path is not set and state=absent but product_id is null
- win_package:
- state: absent
- register: fail_no_path_state_absent_no_id
- failed_when: 'fail_no_path_state_absent_no_id.msg != "state is absent but any of the following are missing: path, product_id"'
-
-- name: fail invalid local path
- win_package:
- path: '{{ test_path }}\no file.msi'
- state: present
- register: fail_invalid_local_path
- failed_when: fail_invalid_local_path.msg != "the file at the path '" + test_path + "\\no file.msi' cannot be reached"
-
-- name: fail invalid URL
- win_package:
- path: http://fakeurl/file.msi
- product_id: 'id'
- state: present
- register: fail_invalid_url_path
- failed_when: "\"The remote name could not be resolved: 'fakeurl'\" not in fail_invalid_url_path.msg"
-
-- name: fail to check version without creates_path
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- creates_version: 1
- register: fail_creates_version_without_path
- failed_when: "fail_creates_version_without_path.msg != \"missing parameter(s) required by 'creates_version': creates_path\""
-
-- name: fail to check version without when path is not a file
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- creates_path: C:\Windows
- creates_version: 1
- register: fail_creates_version_not_a_file
- failed_when: "'creates_path must be a file not a directory when creates_version is set' not in fail_creates_version_not_a_file.msg"
diff --git a/test/integration/targets/win_package/tasks/main.yml b/test/integration/targets/win_package/tasks/main.yml
deleted file mode 100644
index 250bc8307f..0000000000
--- a/test/integration/targets/win_package/tasks/main.yml
+++ /dev/null
@@ -1,71 +0,0 @@
----
-- name: ensure testing folder exists
- win_file:
- path: '{{ test_path }}'
- state: directory
-
-# Some of the registry_tests.yml create a badly formed unisntall string so remove the reg entry in case the test
-# didn't get to cleaning itself up
-- name: remove registry package path
- win_regedit:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- state: absent
-
-- name: download packages from S3 bucket
- win_get_url:
- url: '{{ item.url }}'
- dest: '{{ test_path }}\{{ item.name }}'
- with_items:
- - url: '{{ good_url }}'
- name: good.msi
- - url: '{{ reboot_url }}'
- name: reboot.msi
- - url: '{{ bad_url }}'
- name: bad.msi
- - url: '{{ patch_msi_url }}'
- name: patch.msi
- - url: '{{ patch_msp_url }}'
- name: patch.msp
-
-- name: make sure all test packages are uninstalled before test
- win_package:
- product_id: '{{ item }}'
- state: absent
- with_items: '{{ all_ids }}'
-
-- block:
- - name: run tests for expected failures
- include_tasks: failure_tests.yml
-
- - name: run tests for msi files and URL paths
- include_tasks: msi_tests.yml
-
- # The msix test setup will only work on Server 2019 or newer so conditionally run this
- - name: check if we can run the msix tests
- win_shell: |
- $osVersion = [Version](Get-Item -LiteralPath "$env:SystemRoot\System32\kernel32.dll").VersionInfo.ProductVersion
- $osVersion -ge [Version]"10.0.17763"
- register: can_run_msix
- changed_when: False
-
- - name: run tests for msix packages
- include_tasks: msix_tests.yml
- when: can_run_msix.stdout | trim | bool
-
- - name: run tests for msp packages
- include_tasks: msp_tests.yml
-
- - name: run tests for registry packages
- include_tasks: registry_tests.yml
-
- always:
- - name: remove registry package path
- win_regedit:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- state: absent
-
- - name: make sure all test packages are uninstalled after test
- win_package:
- product_id: '{{ item }}'
- state: absent
- with_items: '{{ all_ids }}'
diff --git a/test/integration/targets/win_package/tasks/msi_tests.yml b/test/integration/targets/win_package/tasks/msi_tests.yml
deleted file mode 100644
index 4c76084dd1..0000000000
--- a/test/integration/targets/win_package/tasks/msi_tests.yml
+++ /dev/null
@@ -1,511 +0,0 @@
----
-# this test just makes sure the task doesn't fail when we set out expected rc
-- name: install broken msi override expected rc
- win_package:
- path: '{{ test_path }}\bad.msi'
- state: present
- expected_return_code: 0,1603
-
-- name: install local msi (check mode)
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- register: install_local_msi_check
- check_mode: yes
-
-- name: get result of install local msi (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: install_local_msi_actual_check
-
-- name: assert install local msi (check mode)
- assert:
- that:
- - install_local_msi_check is changed
- - install_local_msi_check.reboot_required == False
- - install_local_msi_actual_check.exists == False
-
-- name: install local msi with log
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- log_path: '{{ test_path }}\msi.log'
- register: install_local_msi
-
-- name: get result of install local msi
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: install_local_msi_actual
-
-- name: assert install local msi
- assert:
- that:
- - install_local_msi is changed
- - install_local_msi.reboot_required == False
- - install_local_msi.rc == 0
- - install_local_msi_actual.exists == True
-
-- name: get result of install local msi log_path
- win_stat:
- path: '{{ test_path }}\msi.log'
- register: install_local_msi_actual_log_path
-
-- name: assert install local msi log path
- assert:
- that:
- - install_local_msi_actual_log_path.stat.exists == True
-
-- name: install local msi (idempotent)
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- register: install_local_msi_idempotent
-
-- name: assert install local msi (idempotent)
- assert:
- that:
- - install_local_msi_idempotent is not changed
-
-- name: uninstall local msi with path (check mode)
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
- register: uninstall_path_local_msi_check
- check_mode: yes
-
-- name: get result of uninstall local msi with path (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: uninstall_path_local_msi_actual_check
-
-- name: assert uninstall local msi with path (check mode)
- assert:
- that:
- - uninstall_path_local_msi_check is changed
- - uninstall_path_local_msi_check.reboot_required == False
- - uninstall_path_local_msi_actual_check.exists == True
-
-- name: uninstall local msi with path
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
- log_path: '{{ test_path }}\msi uninstall.log'
- register: uninstall_path_local_msi
-
-- name: get result of uninstall local msi with path
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: uninstall_path_local_msi_actual
-
-- name: assert uninstall local msi with path
- assert:
- that:
- - uninstall_path_local_msi is changed
- - uninstall_path_local_msi.reboot_required == False
- - uninstall_path_local_msi.rc == 0
- - uninstall_path_local_msi_actual.exists == False
-
-- name: get result of uninstall local msi with path
- win_stat:
- path: '{{ test_path }}\msi uninstall.log'
- register: uninstall_path_local_msi_actual_log_path
-
-- name: assert uninstall local msi with path
- assert:
- that:
- - uninstall_path_local_msi_actual_log_path.stat.exists == True # we expect log to remain
-
-- name: uninstall local msi with path (idempotent)
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
- register: uninstall_path_local_msi_idempotent
-
-- name: assert uninstall local msi with path (idempotent)
- assert:
- that:
- - uninstall_path_local_msi_idempotent is not changed
-
-- name: install url msi (check mode)
- win_package:
- path: '{{ good_url }}'
- product_id: '{{ good_id }}'
- state: present
- register: install_url_msi_check
- check_mode: yes
-
-- name: get result of install url msi (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: install_url_msi_actual_check
-
-- name: assert install url msi (check mode)
- assert:
- that:
- - install_url_msi_check is changed
- - install_url_msi_check.reboot_required == False
- - install_url_msi_actual_check.exists == False
-
-- name: install url msi
- win_package:
- path: '{{ good_url }}'
- product_id: '{{ good_id }}'
- state: present
- register: install_url_msi
-
-- name: get result of install url msi
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: install_url_msi_actual
-
-- name: assert install url msi
- assert:
- that:
- - install_url_msi is changed
- - install_url_msi.reboot_required == False
- - install_url_msi.rc == 0
- - install_url_msi_actual.exists == True
-
-- name: install url msi (idempotent)
- win_package:
- path: '{{ good_url }}'
- product_id: '{{ good_id }}'
- state: present
- register: install_url_msi_again
-
-- name: assert install url msi (idempotent)
- assert:
- that:
- - install_url_msi_again is not changed
-
-- name: uninstall local msi with product_id (check mode)
- win_package:
- product_id: '{{ good_id }}'
- state: absent
- register: uninstall_id_local_msi_check
- check_mode: yes
-
-- name: get result of uninstall local msi with product_id (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: uninstall_id_local_msi_actual_check
-
-- name: assert uninstall local msi with product_id (check mode)
- assert:
- that:
- - uninstall_id_local_msi_check is changed
- - uninstall_id_local_msi_check.reboot_required == False
- - uninstall_id_local_msi_actual_check.exists == True
-
-- name: uninstall local msi with product_id
- win_package:
- product_id: '{{ good_id }}'
- state: absent
- register: uninstall_id_local_msi
-
-- name: get result of uninstall local msi with product_id
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ good_id }}
- register: uninstall_id_local_msi_actual
-
-- name: assert uninstall local msi with product_id
- assert:
- that:
- - uninstall_id_local_msi is changed
- - uninstall_id_local_msi.reboot_required == False
- - uninstall_id_local_msi.rc == 0
- - uninstall_id_local_msi_actual.exists == False
-
-- name: uninstall local msi with product_id (idempotent)
- win_package:
- product_id: '{{ good_id }}'
- state: absent
- register: uninstall_id_local_msi_idempotent
-
-- name: assert uninstall local msi with product_id (idempotent)
- assert:
- that:
- - uninstall_id_local_msi_idempotent is not changed
-
-- name: install local reboot msi (check mode)
- win_package:
- path: '{{ test_path }}\reboot.msi'
- state: present
- register: install_local_reboot_msi_check
- check_mode: yes
-
-- name: get result of install local reboot msi (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ reboot_id }}
- register: install_local_reboot_msi_actual_check
-
-- name: assert install local reboot msi (check mode)
- assert:
- that:
- - install_local_reboot_msi_check is changed
- - install_local_reboot_msi_check.reboot_required == False
- - install_local_reboot_msi_actual_check.exists == False
-
-- name: install local reboot msi
- win_package:
- path: '{{ test_path }}\reboot.msi'
- state: present
- register: install_local_reboot_msi
-
-- name: get result of install local reboot msi
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ reboot_id }}
- register: install_local_reboot_msi_actual
-
-- name: assert install local reboot msi
- assert:
- that:
- - install_local_reboot_msi is changed
- - install_local_reboot_msi.reboot_required == True
- - install_local_reboot_msi.rc == 3010
- - install_local_reboot_msi_actual.exists == True
-
-- name: install local reboot msi (idempotent)
- win_package:
- path: '{{ test_path }}\reboot.msi'
- state: present
- register: install_local_reboot_msi_idempotent
-
-- name: assert install local reboot msi (idempotent)
- assert:
- that:
- - install_local_reboot_msi_idempotent is not changed
-
-- name: uninstall reboot msi after test
- win_package:
- path: '{{ test_path }}\reboot.msi'
- state: absent
-
-- name: ensure the install folder is cleaned in case uninstall didn't work
- win_file:
- path: '%ProgramFiles(x86)%\Bovine University'
- state: absent
-
-- name: install local msi with arguments (check mode)
- win_package:
- path: '{{ test_path }}\good.MSI'
- state: present
- arguments: ADDLOCAL=Cow
- register: install_msi_argument_check
- check_mode: yes
-
-- name: get result of moo file after install local msi with arguments (check mode)
- win_stat:
- path: '%ProgramFiles(x86)%\Bovine University\moo.exe'
- register: install_msi_argument_moo_check
-
-- name: get result of cow file after install local msi with arguments (check mode)
- win_stat:
- path: '%ProgramFiles(x86)%\Bovine University\cow.exe'
- register: install_msi_argument_cow_check
-
-- name: assert install local msi with arguments (check mode)
- assert:
- that:
- - install_msi_argument_check is changed
- - install_msi_argument_check.reboot_required == False
- - install_msi_argument_moo_check.stat.exists == False
- - install_msi_argument_cow_check.stat.exists == False
-
-- name: install local msi with arguments
- win_package:
- path: '{{ test_path}}\good.MSI'
- state: present
- arguments: ADDLOCAL=Cow
- register: install_msi_argument
-
-- name: get result of moo file after install local msi with arguments
- win_stat:
- path: '%ProgramFiles(x86)%\Bovine University\moo.exe'
- register: install_msi_argument_moo
-
-- name: get result of cow file after install local msi with arguments
- win_stat:
- path: '%ProgramFiles(x86)%\Bovine University\cow.exe'
- register: install_msi_argument_cow
-
-- name: assert install local msi with arguments
- assert:
- that:
- - install_msi_argument is changed
- - install_msi_argument.reboot_required == False
- - install_msi_argument.rc == 0
- - install_msi_argument_moo.stat.exists == False
- - install_msi_argument_cow.stat.exists == True
-
-- name: install local msi with arguments (idempotent)
- win_package:
- path: '{{ test_path}}\good.MSI'
- state: present
- arguments: ADDLOCAL=Cow
- register: install_msi_argument_again
-
-- name: assert install local msi with arguments (idempotent)
- assert:
- that:
- - install_msi_argument_again is not changed
-
-- name: uninstall good msi after test
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
-
-- name: install good msi for all users
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- arguments: ALLUSERS=1
- register: install_good_all_users
-
-- name: get result of install good msi for all users
- win_shell: |
- Add-Type -Namespace Msi -Name NativeMethods -UsingNamespace System.Text -MemberDefinition @'
- [DllImport("Msi.dll", CharSet = CharSet.Unicode)]
- public static extern UInt32 MsiGetProductInfoExW(
- string szProductCode,
- string szUserSid,
- UInt32 dwContext,
- string szProperty,
- StringBuilder szValue,
- ref UInt32 pcchValue);
- '@
-
- $productCode = '{{ good_id }}'
- $sb = New-Object -TypeName System.Text.StringBuilder -ArgumentList 0
- $sbLength = [UInt32]0
-
- $null = [Msi.NativeMethods]::MsiGetProductInfoExW($productCode, [NullString]::Value, 4, "State", $sb, [ref]$sbLength)
- $sbLength += 1
- $null = $sb.EnsureCapacity($sbLength)
-
- $null = [Msi.NativeMethods]::MsiGetProductInfoExW($productCode, [NullString]::Value, 4, "State", $sb, [ref]$sbLength)
- [int]$sb.ToString()
- register: install_good_all_users_actual
-
-- name: assert install good msi for all users
- assert:
- that:
- - install_good_all_users is changed
- - install_good_all_users_actual.stdout | trim | int == 5 # INSTALLSTATE_DEFAULT
-
-- name: install good msi for all users (idempotent)
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- arguments: ALLUSERS=1
- register: install_good_all_users_again
-
-- name: assert install good msi for all users (idempotent)
- assert:
- that:
- - not install_good_all_users_again is changed
-
-- name: uninstall good msi for all users
- win_package:
- product_id: '{{ good_id }}'
- state: absent
- register: uninstall_good_all_users
-
-- name: get result of uninstall good msi for all users
- win_shell: |
- Add-Type -Namespace Msi -Name NativeMethods -MemberDefinition @'
- [DllImport("Msi.dll", CharSet = CharSet.Unicode)]
- public static extern Int32 MsiQueryProductStateW(
- string szProductCode);
- '@
- [Msi.NativeMethods]::MsiQueryProductStateW('{{ good_id }}')
- register: uninstall_good_all_users_actual
-
-- name: assert uninstall good msi for all users
- assert:
- that:
- - uninstall_good_all_users is changed
- - uninstall_good_all_users_actual.stdout | trim | int == -1 # INSTALLSTATE_UNKNOWN
-
-- name: create custom install directory for msi install
- win_file:
- path: '{{ test_path }}\msi install'
- state: directory
-
-- name: install msi to custom path using string arguments
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- arguments: ADDLOCAL=Cow INSTALLDIR="{{ test_path }}\msi install"
- register: install_msi_string_arguments
-
-- name: get result of moo file after install local msi with string arguments
- win_stat:
- path: '{{ test_path }}\msi install\moo.exe'
- register: install_msi_string_arguments_moo
-
-- name: get result of cow file after install local msi with string arguments
- win_stat:
- path: '{{ test_path }}\msi install\cow.exe'
- register: install_msi_string_arguments_cow
-
-- name: assert results of install msi to custom path using string arguments
- assert:
- that:
- - install_msi_string_arguments is changed
- - install_msi_string_arguments.reboot_required == False
- - install_msi_string_arguments.rc == 0
- - install_msi_string_arguments_moo.stat.exists == False
- - install_msi_string_arguments_cow.stat.exists == True
-
-- name: uninstall good msi after string argument test
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
-
-# MSI arguments KEY="value" are known to fail when set as a list, for this test just create a simple folder path that
-# does not need to be escaped and cleanup at the end.
-- name: create a simple spaceless folder for argument list test
- win_file:
- path: C:\ansible_win_package
- state: directory
-
-- block:
- - name: install msi to custom path using list arguments
- win_package:
- path: '{{ test_path }}\good.msi'
- state: present
- arguments:
- - ADDLOCAL=Moo
- - INSTALLDIR=C:\ansible_win_package
- register: install_msi_list_arguments
-
- - name: get result of moo file after install local msi with list arguments
- win_stat:
- path: C:\ansible_win_package\moo.exe
- register: install_msi_list_arguments_moo
-
- - name: get result of cow file after install local msi with list arguments
- win_stat:
- path: C:\ansible_win_package\cow.exe
- register: install_msi_list_arguments_cow
-
- - name: assert results of install msi to custom path using list arguments
- assert:
- that:
- - install_msi_list_arguments is changed
- - install_msi_list_arguments.reboot_required == False
- - install_msi_list_arguments.rc == 0
- - install_msi_list_arguments_moo.stat.exists == True
- - install_msi_list_arguments_cow.stat.exists == False
-
- - name: uninstall good msi after list argument test
- win_package:
- path: '{{ test_path }}\good.msi'
- state: absent
-
- always:
- - name: remove spaceless folder for argument list test
- win_file:
- path: C:\ansible_win_package
- state: absent
diff --git a/test/integration/targets/win_package/tasks/msix_tests.yml b/test/integration/targets/win_package/tasks/msix_tests.yml
deleted file mode 100644
index 1cec9d7bfa..0000000000
--- a/test/integration/targets/win_package/tasks/msix_tests.yml
+++ /dev/null
@@ -1,448 +0,0 @@
----
-- name: enable sideloading of apps for test
- win_regedit:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
- name: AllowAllTrustedApps
- data: 1
- type: dword
- state: present
- notify: remove sideloading mode for msix
-
-- name: download makeappx binaries
- win_get_url:
- url: '{{ makeappx_url }}'
- dest: '{{ test_path }}\makeappx.zip'
-
-- name: extract makeappx binaries
- win_shell: Expand-Archive -LiteralPath '{{ test_path }}\makeappx.zip' -DestinationPath '{{ test_path }}\makeappx'
-
-- name: setup MSIX packages
- win_make_appx:
- packages:
- - identity: '{{ msix_id }}'
- version: 1.0.0.0
- filename: WinPackage-1.0.0.0.msix
- - identity: '{{ msix_id }}'
- version: 1.0.0.1
- filename: WinPackage-1.0.0.1.msix
- - identity: '{{ appx_id }}'
- version: 1.0.0.0
- filename: WinPackage.appx
- - identity: '{{ msixbundle_id }}'
- version: 1.0.0.1
- architecture: x64
- resource_id: resid
- filename: WinPackageBundle-x64.msix
- - identity: '{{ msixbundle_id }}'
- version: 1.0.0.1
- architecture: x86
- resource_id: resid
- filename: WinPackageBundle-x86.msix
- - identity: '{{ appxbundle_id }}'
- version: 1.0.0.1
- architecture: x64
- resource_id: resid
- filename: WinPackageBundle-x64.appx
- - identity: '{{ appxbundle_id }}'
- version: 1.0.0.1
- architecture: x86
- resource_id: resid
- filename: WinPackageBundle-x86.appx
- - identity: FailMsix
- version: 1.2.3.4
- min_version: 99.0.0.0
- max_version: 99.0.0.0
- filename: Fail.msix
- bundles:
- - files:
- - WinPackageBundle-x64.msix
- - WinPackageBundle-x86.msix
- filename: WinPackageBundle.msixbundle
- - files:
- - WinPackageBundle-x64.appx
- - WinPackageBundle-x86.appx
- filename: WinPackageBundle.appxbundle
- publisher: CN=Ansible Core, O=Ansible, L=Durhan, S=NC, C=USA
- path: '{{ test_path }}'
- makeappx_path: '{{ test_path }}\makeappx\makeappx.exe'
- signtool_path: '{{ test_path }}\makeappx\signtool.exe'
- become: yes # New-SelfSignedCertificate requires this to store the cert with key into the store.
- become_method: runas
- vars:
- ansible_become_user: '{{ ansible_user }}'
- ansible_become_pass: '{{ ansible_password }}'
- register: test_win_package_msix_packages
- notify: remove trusted root cert
-
-- name: install msix (check mode)
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
- state: present
- register: msix_install_check
- check_mode: yes
-
-- name: get result of install msix (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
- register: msix_install_actual_check
- changed_when: False
-
-- name: assert install msix (check mode)
- assert:
- that:
- - msix_install_check is changed
- - msix_install_check.rc == 0
- - not msix_install_check.reboot_required
- - not msix_install_actual_check.stdout | trim | bool
-
-- name: install msix
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
- state: present
- register: msix_install
-
-- name: get result of install msix
- win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
- register: msix_install_actual
- changed_when: False
-
-- name: assert install msix
- assert:
- that:
- - msix_install is changed
- - msix_install.rc == 0
- - not msix_install.reboot_required
- - msix_install_actual.stdout | trim | bool
-
-- name: install msix (idempotence)
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
- state: present
- register: msix_install_again
-
-- name: assert install msix (idempotence)
- assert:
- that:
- - not msix_install_again is changed
-
-- name: install updated msix package
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
- state: present
- register: msix_install_updated
-
-- name: get result of install updated msix package
- win_shell: Get-AppxPackage -Name '{{ msix_id }}' | Select-Object -ExpandProperty Version
- changed_when: False
- register: msix_install_updated_actual
-
-- name: assert result of install updated msix package
- assert:
- that:
- - msix_install_updated is changed
- - msix_install_updated.rc == 0
- - not msix_install_updated.reboot_required
- - msix_install_updated_actual.stdout | trim == "1.0.0.1"
-
-- name: fail to install older msix when new is present
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
- state: present
- register: fail_msix_older
- failed_when: "'unexpected status from Add-AppxPackage' not in fail_msix_older.msg"
-
-- name: remove msix by path (check mode)
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
- state: absent
- register: msix_uninstall_check
- check_mode: yes
-
-- name: get result of remove msix by path (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
- changed_when: False
- register: msix_uninstall_actual_check
-
-- name: assert results of remove msix by path (check mode)
- assert:
- that:
- - msix_uninstall_check is changed
- - msix_uninstall_check.rc == 0
- - not msix_uninstall_check.reboot_required
- - msix_uninstall_actual_check.stdout | trim | bool
-
-- name: remove msix by path
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
- state: absent
- register: msix_uninstall
-
-- name: get result of remove msix by path
- win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
- changed_when: False
- register: msix_uninstall_actual
-
-- name: assert results of remove msix by path
- assert:
- that:
- - msix_uninstall is changed
- - msix_uninstall.rc == 0
- - not msix_uninstall.reboot_required
- - not msix_uninstall_actual.stdout | trim | bool
-
-- name: remove msix by path (idempotence)
- win_package:
- path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
- state: absent
- register: msix_uninstall_again
-
-- name: assert results of remove msix by path (idempotence)
- assert:
- that:
- - not msix_uninstall_again is changed
-
-# The install steps are the same as msix so no need for check and idempotency tests
-- name: install appx
- win_package:
- path: '{{ test_path }}\WinPackage.appx'
- state: present
- register: appx_install
-
-- name: get result of install appx
- win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
- changed_when: False
- register: appx_install_actual
-
-- name: assert results of install appx
- assert:
- that:
- - appx_install is changed
- - appx_install.rc == 0
- - not appx_install.reboot_required
- - appx_install_actual.stdout | trim | bool
-
-- name: remove appx by id (check mode)
- win_package:
- product_id: '{{ appx_id }}'
- state: absent
- register: appx_uninstall_check
- check_mode: yes
-
-- name: get result of remove appx (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
- changed_when: False
- register: appx_uninstall_actual_check
-
-- name: assert results of remove appx by id (check mode)
- assert:
- that:
- - appx_uninstall_check is changed
- - appx_uninstall_check.rc == 0
- - not appx_uninstall_check.reboot_required
- - appx_uninstall_actual_check.stdout | trim | bool
-
-- name: remove appx by id
- win_package:
- product_id: '{{ appx_id }}'
- state: absent
- register: appx_uninstall
-
-- name: get result of remove appx
- win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
- changed_when: False
- register: appx_uninstall_actual
-
-- name: assert results of remove appx by id
- assert:
- that:
- - appx_uninstall is changed
- - appx_uninstall.rc == 0
- - not appx_uninstall.reboot_required
- - not appx_uninstall_actual.stdout | trim | bool
-
-- name: remove appx by id (idempotence)
- win_package:
- product_id: '{{ appx_id }}'
- state: absent
- register: appx_uninstall_again
-
-- name: assert results of remove appx by id (idempotence)
- assert:
- that:
- - not appx_uninstall_again is changed
-
-- name: validate failures are detected on a bad package
- win_package:
- path: '{{ test_path }}\Fail.msix'
- state: present
- register: fail_msix
- failed_when: "'unexpected status from Add-AppxPackage' not in fail_msix.msg"
-
-- name: install msixbundle (check mode)
- win_package:
- path: '{{ test_path }}\WinPackageBundle.msixbundle'
- state: present
- register: msixbundle_install_check
- check_mode: yes
-
-- name: get result of install msixbundle (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_install_actual_check
-
-- name: assert install msixbundle (check mode)
- assert:
- that:
- - msixbundle_install_check is changed
- - msixbundle_install_check.rc == 0
- - not msixbundle_install_check.reboot_required
- - not msixbundle_install_actual_check.stdout | trim | bool
-
-- name: install msixbundle
- win_package:
- path: '{{ test_path }}\WinPackageBundle.msixbundle'
- state: present
- register: msixbundle_install
-
-- name: get result of install msixbundle
- win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_install_actual
-
-- name: assert install msixbundle
- assert:
- that:
- - msixbundle_install is changed
- - msixbundle_install.rc == 0
- - not msixbundle_install.reboot_required
- - msixbundle_install_actual.stdout | trim | bool
-
-- name: install msixbundle (idempotence)
- win_package:
- path: '{{ test_path }}\WinPackageBundle.msixbundle'
- state: present
- register: msixbundle_install_again
-
-- name: assert install msixbundle (idempotence)
- assert:
- that:
- - not msixbundle_install_again is changed
-
-- name: uninstall msixbundle by id (check mode)
- win_package:
- product_id: '{{ msixbundle_id }}'
- state: absent
- register: msixbundle_uninstall_check
- check_mode: yes
-
-- name: get result of uninstall msixbundle by id (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_uninstall_actual_check
-
-- name: assert uninstall msixbundle by id (check mode)
- assert:
- that:
- - msixbundle_uninstall_check is changed
- - msixbundle_uninstall_check.rc == 0
- - not msixbundle_uninstall_check.reboot_required
- - msixbundle_uninstall_actual_check.stdout | trim | bool
-
-- name: uninstall msixbundle by id
- win_package:
- product_id: '{{ msixbundle_id }}'
- state: absent
- register: msixbundle_uninstall
-
-- name: get result of uninstall msixbundle by id
- win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_uninstall_actual
-
-- name: assert uninstall msixbundle by id
- assert:
- that:
- - msixbundle_uninstall is changed
- - msixbundle_uninstall.rc == 0
- - not msixbundle_uninstall.reboot_required
- - not msixbundle_uninstall_actual.stdout | trim | bool
-
-- name: uninstall msixbundle by id (idempotence)
- win_package:
- product_id: '{{ msixbundle_id }}'
- state: absent
- register: msixbundle_uninstall_again
-
-- name: assert uninstall msixbundle by id (idempotence)
- assert:
- that:
- - not msixbundle_uninstall_again is changed
-
-# The logic for appxbundle is the same for msixbundle no need for check and idempotence tests
-- name: install appxbundle
- win_package:
- path: '{{ test_path }}\WinPackageBundle.appxbundle'
- state: present
- register: appxbundle_install
-
-- name: get result of install appxbundle
- win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
- changed_when: False
- register: appxbundle_install_actual
-
-- name: assert install appxbundle
- assert:
- that:
- - appxbundle_install is changed
- - appxbundle_install.rc == 0
- - not appxbundle_install.reboot_required
- - appxbundle_install_actual.stdout | trim | bool
-
-- name: uninstall appxbundle by path (check mode)
- win_package:
- path: '{{ test_path }}\WinPackageBundle.appxbundle'
- state: absent
- register: msixbundle_uninstall_check
- check_mode: yes
-
-- name: get result of uninstall appxbundle by path (check mode)
- win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_uninstall_actual_check
-
-- name: assert uninstall appxbundle by path (check mode)
- assert:
- that:
- - msixbundle_uninstall_check is changed
- - msixbundle_uninstall_check.rc == 0
- - not msixbundle_uninstall_check.reboot_required
- - msixbundle_uninstall_actual_check.stdout | trim | bool
-
-- name: uninstall appxbundle by path
- win_package:
- path: '{{ test_path }}\WinPackageBundle.appxbundle'
- state: absent
- register: msixbundle_uninstall
-
-- name: get result of uninstall appxbundle by path
- win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
- changed_when: False
- register: msixbundle_uninstall_actual
-
-- name: assert uninstall appxbundle by path
- assert:
- that:
- - msixbundle_uninstall is changed
- - msixbundle_uninstall.rc == 0
- - not msixbundle_uninstall.reboot_required
- - not msixbundle_uninstall_actual.stdout | trim | bool
-
-- name: uninstall appxbundle by path (idempotence)
- win_package:
- path: '{{ test_path }}\WinPackageBundle.appxbundle'
- state: absent
- register: msixbundle_uninstall_again
-
-- name: assert uninstall appxbundle by path (idempotence)
- assert:
- that:
- - not msixbundle_uninstall_again is changed
diff --git a/test/integration/targets/win_package/tasks/msp_tests.yml b/test/integration/targets/win_package/tasks/msp_tests.yml
deleted file mode 100644
index cb7ffe9486..0000000000
--- a/test/integration/targets/win_package/tasks/msp_tests.yml
+++ /dev/null
@@ -1,167 +0,0 @@
----
-- name: fail if base product is not applied
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: present
- register: fail_no_product_found
- failed_when: '"The specified patch does not apply to any installed MSI packages" not in fail_no_product_found.msg'
-
-- name: install base package for msp patch
- win_package:
- path: '{{ test_path }}\patch.msi'
- state: present
-
-- name: install msp (check mode)
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: present
- register: msp_install_check
- check_mode: yes
-
-- name: get result of install msp (check mode)
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_install_actual_check
-
-- name: assert install msp (check mode)
- assert:
- that:
- - msp_install_check is changed
- - msp_install_check.rc == 0
- - not msp_install_check.reboot_required
- - msp_install_actual_check.content | b64decode == 'This is version 1.0'
-
-- name: install msp
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: present
- register: msp_install
-
-- name: get result of install msp
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_install_actual
-
-- name: assert install msp
- assert:
- that:
- - msp_install is changed
- - msp_install.rc == 0
- - not msp_install.reboot_required
- - msp_install_actual.content | b64decode == 'This is version 1.1'
-
-- name: install msp (idempotence)
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: present
- register: msp_install_again
-
-- name: assert install msp (idempotence)
- assert:
- that:
- - not msp_install_again is changed
-
-- name: remove msp by path (check mode)
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: absent
- register: msp_uninstall_path_check
- check_mode: yes
-
-- name: get result of remove msp by path (check mode)
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_uninstall_path_actual_check
-
-- name: assert remove msp by path (check mode)
- assert:
- that:
- - msp_uninstall_path_check is changed
- - msp_uninstall_path_check.rc == 0
- - not msp_uninstall_path_check.reboot_required
- - msp_uninstall_path_actual_check.content | b64decode == 'This is version 1.1'
-
-- name: remove msp by path
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: absent
- register: msp_uninstall_path
-
-- name: get result of remove msp by path
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_uninstall_path_actual
-
-- name: assert remove msp by path
- assert:
- that:
- - msp_uninstall_path is changed
- - msp_uninstall_path.rc == 0
- - not msp_uninstall_path.reboot_required
- - msp_uninstall_path_actual.content | b64decode == 'This is version 1.0'
-
-- name: remove msp by path (idempotence)
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: absent
- register: msp_uninstall_path_again
-
-- name: assert remove msp by path (idempotence)
- assert:
- that:
- - not msp_uninstall_path_again is changed
-
-- name: install patch again
- win_package:
- path: '{{ test_path }}\patch.msp'
- state: present
-
-- name: remove msp by id (check mode)
- win_package:
- product_id: '{{ patch_patch_id }}'
- state: absent
- register: msp_uninstall_id_check
- check_mode: yes
-
-- name: get result of remove msp by id (check mode)
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_uninstall_id_actual_check
-
-- name: assert remove msp by id (check mode)
- assert:
- that:
- - msp_uninstall_id_check is changed
- - msp_uninstall_id_check.rc == 0
- - not msp_uninstall_id_check.reboot_required
- - msp_uninstall_id_actual_check.content | b64decode == 'This is version 1.1'
-
-- name: remove msp by id
- win_package:
- product_id: '{{ patch_patch_id }}'
- state: absent
- register: msp_uninstall_id
-
-- name: get result of remove msp by id
- slurp:
- path: '{{ patch_install_file }}'
- register: msp_uninstall_id_actual
-
-- name: assert remove msp by id
- assert:
- that:
- - msp_uninstall_id is changed
- - msp_uninstall_id.rc == 0
- - not msp_uninstall_id.reboot_required
- - msp_uninstall_id_actual.content | b64decode == 'This is version 1.0'
-
-- name: remove msp by id (idempotence)
- win_package:
- product_id: '{{ patch_patch_id }}'
- state: absent
- register: msp_uninstall_id_again
-
-- name: assert remove msp by id (idempotence)
- assert:
- that:
- - not msp_uninstall_id_again is changed
diff --git a/test/integration/targets/win_package/tasks/registry_tests.yml b/test/integration/targets/win_package/tasks/registry_tests.yml
deleted file mode 100644
index b4b5a8e2bd..0000000000
--- a/test/integration/targets/win_package/tasks/registry_tests.yml
+++ /dev/null
@@ -1,393 +0,0 @@
----
-# This symlink allows us to test paths with a space in the executable path
-- name: create symbolic link in test folder to powershell
- win_command: cmd.exe /c mklink "{{ test_path }}\powershell symlink.exe" C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-
-- name: copy across test script that creates a registry install entry
- win_template:
- src: registry_package.ps1.j2
- dest: '{{ test_path }}\registry_package.ps1'
-
-- name: install registry package not quoted and no spaces in path
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - UninstallString
- - C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse
- state: present
-
-- name: uninstall registry package not quoted and no spaces in path (check mode)
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_normal_check
- check_mode: yes
-
-- name: get result of uninstall registry package not quoted and no spaces in path (check mode)
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_normal_actual_check
-
-- name: assert uninstall registry package not quoted and no spaces in path (check mode)
- assert:
- that:
- - registry_uninstall_normal_check is changed
- - registry_uninstall_normal_check.rc == 0
- - not registry_uninstall_normal_check.reboot_required
- - registry_uninstall_normal_actual_check.exists
-
-- name: uninstall registry package not quoted and no spaces in path
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_normal
-
-- name: get result of uninstall registry package not quoted and no spaces in path
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_normal_actual
-
-- name: assert uninstall registry package not quoted and no spaces in path
- assert:
- that:
- - registry_uninstall_normal is changed
- - registry_uninstall_normal.rc == 0
- - not registry_uninstall_normal.reboot_required
- - not registry_uninstall_normal_actual.exists
-
-- name: uninstall registry package not quoted and no spaces in path (idempotence)
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_normal_again
-
-- name: assert uninstall registry package not quoted and no spaces in path (idempotence)
- assert:
- that:
- - not registry_uninstall_normal_again is changed
-
-- name: install registry package not quoted and spaces in path
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx86
- - QuietUninstallString
- - '{{ test_path }}\powershell symlink.exe -Command Remove-Item -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse'
- state: present
-
-- name: uninstall registry package not quoted and spaces in path
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_not_quoted
-
-- name: get result of uninstall registry package not quoted and spaces in path
- win_reg_stat:
- path: HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_not_quoted_actual
-
-- name: assert uninstall registry package not quoted and spaces in path
- assert:
- that:
- - registry_uninstall_not_quoted is changed
- - registry_uninstall_not_quoted.rc == 0
- - not registry_uninstall_not_quoted.reboot_required
- - not registry_uninstall_not_quoted_actual.exists
-
-- name: install registry package quoted and no spaces in path
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKCUx64
- - UninstallString
- - '"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Command Remove-Item -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse'
- state: present
-
-- name: uninstall registry package quoted and no spaces in path
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_quoted_normal
-
-- name: get result of uninstall registry package quoted and no spaces in path
- win_reg_stat:
- path: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Unisntall\{{ registry_id }}
- register: registry_uninstall_quoted_normal_actual
-
-- name: assert uninstall registry package quoted and no spaces in path
- assert:
- that:
- - registry_uninstall_quoted_normal is changed
- - registry_uninstall_quoted_normal.rc == 0
- - not registry_uninstall_quoted_normal.reboot_required
- - not registry_uninstall_quoted_normal_actual.exists
-
-- name: install registry package quoted and spaces in path
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKCUx86
- - QuietUninstallString
- - '"{{ test_path }}\powershell symlink.exe" -Command Remove-Item -Path HKCU:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse'
- state: present
-
-- name: uninstall registry package quoted and spaces in path
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_quoted_spaces
-
-- name: get result of uninstall registry package quoted and spaces in path
- win_reg_stat:
- path: HKCU:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_quoted_spaces_actual
-
-- name: assert uninstall registry package quoted and spaces in path
- assert:
- that:
- - registry_uninstall_quoted_spaces is changed
- - registry_uninstall_quoted_spaces.rc == 0
- - not registry_uninstall_quoted_spaces.reboot_required
- - not registry_uninstall_quoted_spaces_actual.exists
-
-- name: install registry package with unquoted env vars
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - UninstallString
- - '%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse'
- state: present
-
-- name: uninstall registry package with unquoted env vars
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_env
-
-- name: get result of ininstall registry package with unquoted env vars
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_env_actual
-
-- name: assert uninstall registry package with unquoted env vars
- assert:
- that:
- - registry_uninstall_env is changed
- - registry_uninstall_env.rc == 0
- - not registry_uninstall_env.reboot_required
- - not registry_uninstall_env_actual.exists
-
-- name: install registry package quoted env vars
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - UninstallString
- - '"%TestVar%\powershell symlink.exe" -Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse'
- state: present
-
-- name: uninstall registry package quoted env vars
- win_package:
- product_id: '{{ registry_id }}'
- state: absent
- register: registry_uninstall_env_quoted
- environment:
- TestVar: '{{ test_path }}'
-
-- name: get result of uninstall registry package quoted env vars
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_env_quoted_actual
-
-- name: assert uninstall registry package quoted env vars
- assert:
- that:
- - registry_uninstall_env_quoted is changed
- - registry_uninstall_env_quoted.rc == 0
- - not registry_uninstall_env_quoted.reboot_required
- - not registry_uninstall_env_quoted_actual.exists
-
-- name: install registry package for overriding path test
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - UninstallString
- - Fail path
- state: present
-
-- name: uninstall registry package with overridden path and explicit error code
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- product_id: '{{ registry_id }}'
- arguments: '-Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}; exit 1'
- expected_return_code: 1
- state: absent
- register: registry_uninstall_explicit_path
-
-- name: get result of uninstall registry package with overridden path and explicit error code
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_explicit_path_actual
-
-- name: assert unisntall registry package with overridden path and explicit error code
- assert:
- that:
- - registry_uninstall_explicit_path is changed
- - registry_uninstall_explicit_path.rc == 1
- - not registry_uninstall_explicit_path.reboot_required
- - not registry_uninstall_explicit_path_actual.exists
-
-- name: create registry package for uninstal with explicit arguments test
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - QuietUninstallString
- - C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- state: present
-
-- name: uninstall registry package with explicit arguments and chdir
- win_package:
- product_id: '{{ registry_id }}'
- arguments: -Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse; [System.IO.File]::WriteAllText('{{ test_path }}\reg_out.txt', $pwd.Path, [System.Text.Encoding]::Unicode); exit 3010
- state: absent
- chdir: C:\Users
- register: registry_uninstall_arguments
-
-- name: get package result of uninstall registry package with explicit arguments and chdir
- win_reg_stat:
- path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }}
- register: registry_uninstall_arguments_reg_actual
-
-- name: get package output of uninstall registry package with explicit arguments and chdir
- slurp:
- path: '{{ test_path }}\reg_out.txt'
- register: registry_uninstall_arguments_chdir_actual
-
-- name: assert uninstall registry package with explicit arguments and chdir
- assert:
- that:
- - registry_uninstall_arguments is changed
- - registry_uninstall_arguments.rc == 3010
- - registry_uninstall_arguments.reboot_required
- - not registry_uninstall_arguments_reg_actual.exists
- # backslash escaping makes it hard to compare the value, just compare the raw base64 string expected which is 'C:\Users' as UTF-16-LE
- - registry_uninstall_arguments_chdir_actual.content == '//5DADoAXABVAHMAZQByAHMA'
-
-- name: install package for creates_* tests
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments:
- - -File
- - '{{ test_path }}\registry_package.ps1'
- - HKLMx64
- - UninstallString
- - powershell.exe -Command Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{ registry_id }} -Force -Recurse
- state: present
-
-- name: get actual PowerShell file version for tests
- win_shell: |
- $path = '{{ test_path }}\powershell symlink.exe'
- $version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path)
- (New-Object -TypeName System.Version -ArgumentList @(
- $version.FileMajorPart, $version.FileMinorPart, $version.FileBuildPart, $version.FilePrivatePart
- )).ToString()
- changed_when: False
- register: powershell_version
-
-- name: test creates_path overrides product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: '{{ registry_id }}'
- creates_path: C:\missing
- state: present
- register: creates_path
-
-- name: test creates_version overrides product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: '{{ registry_id }}'
- creates_path: '{{ test_path }}\powershell symlink.exe'
- creates_version: 1.0.0
- state: present
- register: creates_version
-
-- name: assert test creates_path and creates_version override product_id is changed
- assert:
- that:
- - creates_path is changed
- - creates_version is changed
-
-- name: test creates_path to existing but no product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: Fake
- creates_path: C:\Windows
- state: present
- register: creates_path_present
-
-- name: test creates_version to existing but no product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: Fake
- creates_path: '{{ test_path }}\powershell symlink.exe'
- creates_version: '{{ powershell_version.stdout | trim }}'
- state: present
- register: creates_version_present
-
-- name: assert test creates_path to existing but no product_Id
- assert:
- that:
- - not creates_path_present is changed
- - not creates_version_present is changed
-
-- name: test creates_service overrides product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: '{{ registry_id }}'
- creates_service: missing service
- state: present
- register: creates_service
-
-- name: assert test creates_service overrides product_id
- assert:
- that:
- - creates_service is changed
-
-- name: test creates_service to existing but no product_id
- win_package:
- path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- arguments: echo hi
- product_id: Fake
- creates_service: winrm
- state: present
- register: creates_service_present
-
-- name: assert test creates_service to existing but no product_Id
- assert:
- that:
- - not creates_service_present is changed
diff --git a/test/integration/targets/win_package/templates/registry_package.ps1.j2 b/test/integration/targets/win_package/templates/registry_package.ps1.j2
deleted file mode 100644
index b82b21d0c0..0000000000
--- a/test/integration/targets/win_package/templates/registry_package.ps1.j2
+++ /dev/null
@@ -1,26 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-$productId = '{{ registry_id }}'
-
-$regPath = switch ($args[0]) {
- HKLMx64 { 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall' }
- HKLMx86 { 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall' }
- HKCUx64 { 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall' }
- HKCUx86 { 'HKCU:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall' }
- default { throw "Invalid registry path specified $($args[0])" }
-}
-$regProperty = $args[1]
-$regUninstallString = $args[2]
-#$regUninstallString = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($args[2]))
-
-$null = New-Item -Path $regPath -Name $productId -Force
-
-$propParams = @{
- Path = "$regPath\$productId"
- Force = $true
- PropertyType = 'String'
-}
-New-ItemProperty -Name $regProperty -Value $regUninstallString @propParams
-if ($regProperty -eq 'QuietUninstallString') {
- New-ItemProperty -Name 'UninstallString' -Value 'Fail if used' @propParams
-}
diff --git a/test/integration/targets/win_path/aliases b/test/integration/targets/win_path/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_path/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_path/tasks/main.yml b/test/integration/targets/win_path/tasks/main.yml
deleted file mode 100644
index bf27cec663..0000000000
--- a/test/integration/targets/win_path/tasks/main.yml
+++ /dev/null
@@ -1,183 +0,0 @@
-- set_fact:
- varname: WINPATH_TEST
-
-- name: Remove {{ varname }} vars from user and machine scope
- raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'
-
-- name: Set a var at the machine and user levels
- win_path:
- name: "{{ varname }}"
- elements: C:\{{ item }}Path
- scope: "{{ item }}"
- with_items:
- - machine
- - user
- register: pathout
-
-- name: Get path value from machine and user levels
- raw: '[Environment]::GetEnvironmentVariable("{{ varname }}","{{ item.item }}")'
- with_items: "{{ pathout.results }}"
- register: varout
-
-- name: Ensure output
- assert:
- that:
- - item.0 is changed
- - item.0.path_value == "C:\\" + item.0.item + "Path"
- - item.1.stdout_lines[0] == 'C:\\' + item.0.item + 'Path'
- with_together:
- - "{{ pathout.results }}"
- - "{{ varout.results }}"
-
-- name: Remove {{ varname }} vars from user and machine scope
- raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'
-
-- name: Create multi-element path
- win_path:
- name: "{{ varname }}"
- elements:
- - C:\PathZ
- - C:\PathA
- register: multiout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: varout
-
-- name: Ensure output
- assert:
- that:
- - multiout is changed
- - multiout.path_value == "C:\\PathZ;C:\\PathA"
- - varout.stdout_lines[0] == "C:\\PathZ;C:\\PathA"
-
-- name: Add value to middle and end
- win_path:
- name: "{{ varname }}"
- elements:
- - C:\NewPath
- - C:\PathA
- - 'C:\PathWithTrailingBackslash\' # store with a trailing backslash
- - '"C:\Quoted;With;Semicolons"' # embedded semicolon, wrapped in quotes
- - '%SystemRoot%\stuff'
- register: addout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: varout
-
-- name: Test idempotence- retry values to middle and end, test case-insensitive comparison, backslash canonicalization
- win_path:
- name: "{{ varname }}"
- elements:
- - c:\nEwPaTh
- - c:\patha
- - C:\pathwithtrailingbackslash # no trailing backslash, should be the same
- - '"C:\Quoted;With;Semicolons"'
- - '%SystemRoot%\stuff'
- register: idemout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: idemvarout
-
-- name: Ensure output
- assert:
- that:
- - addout is changed
- - addout.path_value == 'C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- - varout.stdout_lines[0] == ('C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff')
- - idemout is not changed
- - idemout.path_value == 'C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- - idemvarout.stdout_lines[0] == ('C:\\PathZ;C:\\NewPath;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff')
-
-- name: Remove single element
- win_path:
- name: "{{ varname }}"
- elements: C:\NewPath
- state: absent
- register: removeout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: varout
-
-- name: Test idempotence- retry remove single element
- win_path:
- name: "{{ varname }}"
- elements: C:\NewPath
- state: absent
- register: idemremoveout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: idemvarout
-
-- name: Ensure output
- assert:
- that:
- - removeout is changed
- - removeout.path_value == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- - varout.stdout_lines[0] == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff'
- - idemremoveout is not changed
- - idemremoveout.path_value == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";%SystemRoot%\stuff'
- - idemvarout.stdout_lines[0] == 'C:\\PathZ;C:\\PathA;C:\\PathWithTrailingBackslash\\;"C:\Quoted;With;Semicolons";C:\Windows\stuff'
-
-- name: Remove multiple elements
- win_path:
- name: "{{ varname }}"
- elements:
- - C:\PathWithTrailingBackslash # no trailing backslash
- - c:\pathz
- - '"C:\Quoted;With;Semicolons"'
- - '%SystemRoot%\stuff\' # add trailing backslash
- state: absent
- register: removeout
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: varout
-
-- name: Ensure output
- assert:
- that:
- - removeout is changed
- - removeout.path_value == "C:\\PathA"
- - varout.stdout_lines[0] == "C:\\PathA"
-
-- name: Test check mode add
- check_mode: yes
- win_path:
- name: "{{ varname }}"
- elements:
- - C:\MissingPath
- register: checkadd
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: checkaddvarout
-
-- name: Test check mode remove
- check_mode: yes
- win_path:
- name: "{{ varname }}"
- elements: C:\PathA
- state: absent
- register: checkremove
-
-- name: Get path value
- raw: $env:{{ varname }}
- register: checkremovevarout
-
-- name: Ensure output
- assert:
- that:
- - checkadd is changed
- - checkadd.path_value == "C:\\PathA;C:\\MissingPath"
- - checkaddvarout.stdout_lines[0] == "C:\\PathA" # shouldn't have actually changed the value
- - checkremove is changed
- - checkremove.path_value == ""
- - checkremovevarout.stdout_lines[0] == "C:\\PathA" # shouldn't have actually changed the value
-
-- name: Remove {{ varname }} vars from user and machine scope
- raw: '[Environment]::SetEnvironmentVariable("{{ varname }}", $null, "User"); [Environment]::SetEnvironmentVariable("{{ varname }}", $null, "Machine")'
diff --git a/test/integration/targets/win_ping/aliases b/test/integration/targets/win_ping/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_ping/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_ping/library/win_ping_set_attr.ps1 b/test/integration/targets/win_ping/library/win_ping_set_attr.ps1
deleted file mode 100644
index f17049643b..0000000000
--- a/test/integration/targets/win_ping/library/win_ping_set_attr.ps1
+++ /dev/null
@@ -1,31 +0,0 @@
-#!powershell
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# POWERSHELL_COMMON
-
-$params = Parse-Args $args $true;
-
-$data = Get-Attr $params "data" "pong";
-
-$result = @{
- changed = $false
- ping = "pong"
-};
-
-# Test that Set-Attr will replace an existing attribute.
-Set-Attr $result "ping" $data
-
-Exit-Json $result;
diff --git a/test/integration/targets/win_ping/library/win_ping_strict_mode_error.ps1 b/test/integration/targets/win_ping/library/win_ping_strict_mode_error.ps1
deleted file mode 100644
index 508174afcc..0000000000
--- a/test/integration/targets/win_ping/library/win_ping_strict_mode_error.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!powershell
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# POWERSHELL_COMMON
-
-$params = Parse-Args $args $true;
-
-$params.thisPropertyDoesNotExist
-
-$data = Get-Attr $params "data" "pong";
-
-$result = @{
- changed = $false
- ping = $data
-};
-
-Exit-Json $result;
diff --git a/test/integration/targets/win_ping/library/win_ping_syntax_error.ps1 b/test/integration/targets/win_ping/library/win_ping_syntax_error.ps1
deleted file mode 100644
index d4c9f07ad5..0000000000
--- a/test/integration/targets/win_ping/library/win_ping_syntax_error.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!powershell
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# POWERSHELL_COMMON
-
-$blah = 'I can't quote my strings correctly.'
-
-$params = Parse-Args $args $true;
-
-$data = Get-Attr $params "data" "pong";
-
-$result = @{
- changed = $false
- ping = $data
-};
-
-Exit-Json $result;
diff --git a/test/integration/targets/win_ping/library/win_ping_throw.ps1 b/test/integration/targets/win_ping/library/win_ping_throw.ps1
deleted file mode 100644
index 7306f4d280..0000000000
--- a/test/integration/targets/win_ping/library/win_ping_throw.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!powershell
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# POWERSHELL_COMMON
-
-throw
-
-$params = Parse-Args $args $true;
-
-$data = Get-Attr $params "data" "pong";
-
-$result = @{
- changed = $false
- ping = $data
-};
-
-Exit-Json $result;
diff --git a/test/integration/targets/win_ping/library/win_ping_throw_string.ps1 b/test/integration/targets/win_ping/library/win_ping_throw_string.ps1
deleted file mode 100644
index 09e3b7cb45..0000000000
--- a/test/integration/targets/win_ping/library/win_ping_throw_string.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!powershell
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# POWERSHELL_COMMON
-
-throw "no ping for you"
-
-$params = Parse-Args $args $true;
-
-$data = Get-Attr $params "data" "pong";
-
-$result = @{
- changed = $false
- ping = $data
-};
-
-Exit-Json $result;
diff --git a/test/integration/targets/win_ping/tasks/main.yml b/test/integration/targets/win_ping/tasks/main.yml
deleted file mode 100644
index a7e6ba7fc4..0000000000
--- a/test/integration/targets/win_ping/tasks/main.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-# test code for the win_ping module
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: test win_ping
- action: win_ping
- register: win_ping_result
-
-- name: check win_ping result
- assert:
- that:
- - win_ping_result is not failed
- - win_ping_result is not changed
- - win_ping_result.ping == 'pong'
-
-- name: test win_ping with data
- win_ping:
- data: ☠
- register: win_ping_with_data_result
-
-- name: check win_ping result with data
- assert:
- that:
- - win_ping_with_data_result is not failed
- - win_ping_with_data_result is not changed
- - win_ping_with_data_result.ping == '☠'
-
-- name: test win_ping.ps1 with data as complex args
- # win_ping.ps1: # TODO: do we want to actually support this? no other tests that I can see...
- win_ping:
- data: bleep
- register: win_ping_ps1_result
-
-- name: check win_ping.ps1 result with data
- assert:
- that:
- - win_ping_ps1_result is not failed
- - win_ping_ps1_result is not changed
- - win_ping_ps1_result.ping == 'bleep'
-
-- name: test win_ping using data=crash so that it throws an exception
- win_ping:
- data: crash
- register: win_ping_crash_result
- ignore_errors: yes
-
-- name: check win_ping_crash result
- assert:
- that:
- - win_ping_crash_result is failed
- - win_ping_crash_result is not changed
- - 'win_ping_crash_result.msg == "Unhandled exception while executing module: boom"'
- - '"throw \"boom\"" in win_ping_crash_result.exception'
diff --git a/test/integration/targets/win_reboot/aliases b/test/integration/targets/win_reboot/aliases
deleted file mode 100644
index f687b0e0ef..0000000000
--- a/test/integration/targets/win_reboot/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group4
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_reboot/tasks/main.yml b/test/integration/targets/win_reboot/tasks/main.yml
deleted file mode 100644
index 7757e08fcd..0000000000
--- a/test/integration/targets/win_reboot/tasks/main.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-- name: make sure win output dir exists
- win_file:
- path: "{{win_output_dir}}"
- state: directory
-
-- name: reboot with defaults
- win_reboot:
-
-- name: test with negative values for delays
- win_reboot:
- post_reboot_delay: -0.5
- pre_reboot_delay: -61
-
-- name: schedule a reboot for sometime in the future
- win_command: shutdown.exe /r /t 599
-
-- name: reboot with a shutdown already scheduled
- win_reboot:
-
-# test a reboot that reboots again during the test_command phase
-- name: create test file
- win_file:
- path: '{{win_output_dir}}\win_reboot_test'
- state: touch
-
-- name: reboot with secondary reboot stage
- win_reboot:
- test_command: '{{ lookup("template", "post_reboot.ps1") }}'
-
-- name: reboot with test command that fails
- win_reboot:
- test_command: 'FAIL'
- reboot_timeout: 120
- register: reboot_fail_test
- failed_when: "reboot_fail_test.msg != 'Timed out waiting for post-reboot test command (timeout=120)'"
-
-- name: remove SeRemoteShutdownPrivilege
- win_user_right:
- name: SeRemoteShutdownPrivilege
- users: []
- action: set
- register: removed_shutdown_privilege
-
-- block:
- - name: try and reboot without required privilege
- win_reboot:
- register: fail_privilege
- failed_when:
- - "'Reboot command failed, error was:' not in fail_privilege.msg"
- - "'Access is denied.(5)' not in fail_privilege.msg"
-
- always:
- - name: reset the SeRemoteShutdownPrivilege
- win_user_right:
- name: SeRemoteShutdownPrivilege
- users: '{{ removed_shutdown_privilege.removed }}'
- action: add
-
-- name: Use invalid parameter
- reboot:
- foo: bar
- ignore_errors: true
- register: invalid_parameter
-
-- name: Ensure task fails with error
- assert:
- that:
- - invalid_parameter is failed
- - "invalid_parameter.msg == 'Invalid options for reboot: foo'"
diff --git a/test/integration/targets/win_reboot/templates/post_reboot.ps1 b/test/integration/targets/win_reboot/templates/post_reboot.ps1
deleted file mode 100644
index e4a99a721d..0000000000
--- a/test/integration/targets/win_reboot/templates/post_reboot.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-if (Test-Path -Path '{{win_output_dir}}\win_reboot_test') {
- New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' `
- -Name PendingFileRenameOperations `
- -Value @("\??\{{win_output_dir}}\win_reboot_test`0") `
- -PropertyType MultiString
- Restart-Computer -Force
- exit 1
-}
diff --git a/test/integration/targets/win_reg_stat/aliases b/test/integration/targets/win_reg_stat/aliases
deleted file mode 100644
index 4cd27b3cb2..0000000000
--- a/test/integration/targets/win_reg_stat/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group1
diff --git a/test/integration/targets/win_reg_stat/defaults/main.yml b/test/integration/targets/win_reg_stat/defaults/main.yml
deleted file mode 100644
index a714e4399d..0000000000
--- a/test/integration/targets/win_reg_stat/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-test_reg_path: Test Key / [&Ansible*]
diff --git a/test/integration/targets/win_reg_stat/meta/main.yml b/test/integration/targets/win_reg_stat/meta/main.yml
deleted file mode 100644
index d328716dfa..0000000000
--- a/test/integration/targets/win_reg_stat/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_win_tests
diff --git a/test/integration/targets/win_reg_stat/tasks/main.yml b/test/integration/targets/win_reg_stat/tasks/main.yml
deleted file mode 100644
index bb12c91665..0000000000
--- a/test/integration/targets/win_reg_stat/tasks/main.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-- name: get value of expand string %windir%
- win_command: powershell.exe $env:windir
- register: win_dir_value
-
-- name: template out test registry structure
- win_template:
- src: test_reg.reg.j2
- dest: '{{ win_output_dir }}\test_reg.reg'
-
-- name: import test registry structure
- win_command: reg.exe import "{{ win_output_dir }}\test_reg.reg"
-
-- block:
- - name: run tests
- import_tasks: tests.yml
-
- always:
- - name: remove test registry key
- win_regedit:
- path: HKCU:\{{ test_reg_path }}
- state: absent
- delete_key: True
-
- - name: remove template registry file
- win_file:
- path: '{{ win_output_dir }}\test_reg.reg'
- state: absent
diff --git a/test/integration/targets/win_reg_stat/tasks/tests.yml b/test/integration/targets/win_reg_stat/tasks/tests.yml
deleted file mode 100644
index 5424ba4d45..0000000000
--- a/test/integration/targets/win_reg_stat/tasks/tests.yml
+++ /dev/null
@@ -1,377 +0,0 @@
----
-- name: expect failure when not passing in path option
- win_reg_stat:
- name: a
- register: actual
- failed_when: "actual.msg != 'Get-AnsibleParam: Missing required argument: path'"
-
-- name: expect failure when passing in an invalid hive
- win_reg_stat:
- path: ABCD:\test
- register: actual
- failed_when: 'actual.msg != "path: ABCD:\\test is not a valid registry path, see module documentation for examples."'
-
-- name: get known nested reg key structure
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- register: actual
-
-- name: set expected value for reg structure
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- properties:
- binary: { raw_value: ["0x01", "0x16"], type: 'REG_BINARY', value: [1, 22] }
- dword: { raw_value: 1, type: 'REG_DWORD', value: 1 }
- expand: { raw_value: '%windir%\dir', type: 'REG_EXPAND_SZ', value: "{{win_dir_value.stdout_lines[0]}}\\dir" }
- large_dword: { raw_value: 4294967295, type: 'REG_DWORD', value: 4294967295 }
- large_qword: { raw_value: 18446744073709551615, type: 'REG_QWORD', value: 18446744073709551615 }
- multi: { raw_value: ['a, b', 'c'], type: 'REG_MULTI_SZ', value: ['a, b', 'c'] }
- qword: { raw_value: 1, type: 'REG_QWORD', value: 1 }
- string: { raw_value: 'test', type: 'REG_SZ', value: 'test' }
- sub_keys:
- - nest1
- - nest2
-
-- name: assert get known nested reg key structure
- assert:
- that:
- - actual == expected
-
-- name: get known reg key with no sub keys but some properties
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\single
- register: actual
-
-- name: set expected value for reg key with no sub keys but some properties
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- properties:
- none: { raw_value: [], type: 'REG_NONE', value: [] }
- none1: { raw_value: ["0x00"], type: 'REG_NONE', value: [0] }
- string1: { raw_value: '', type: 'REG_SZ', value: '' }
- string2: { raw_value: 'abc123', type: 'REG_SZ', value: 'abc123' }
- sub_keys: []
-
-- name: assert get known reg key with no sub keys but some properties
- assert:
- that:
- - actual == expected
-
-- name: get known reg key without sub keys and properties
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested\nest2
- register: actual
-
-- name: set expected value for reg key without sub keys or properties
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- properties: {}
- sub_keys: []
- register: expected
-
-- name: assert get known reg key without sub keys and properties
- assert:
- that:
- - actual == expected
-
-- name: get non-existent reg key
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Thispathwillneverexist
- register: actual
-
-- name: set expected value for non-existent reg key
- set_fact:
- expected:
- changed: false
- exists: false
- failed: false
-
-- name: assert get non-existent reg key
- assert:
- that:
- - actual == expected
-
-- name: get string property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: string
- register: actual
-
-- name: set expected string property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: 'test'
- type: 'REG_SZ'
- value: 'test'
-
-- name: assert get string property
- assert:
- that:
- - actual == expected
-
-- name: get expand string property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: expand
- register: actual
-
-- name: set expected expand string property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: '%windir%\dir'
- type: 'REG_EXPAND_SZ'
- value: "{{win_dir_value.stdout_lines[0]}}\\dir"
-
-- name: assert get expand string property
- assert:
- that:
- - actual == expected
-
-- name: get multi string property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: multi
- register: actual
-
-- name: set expected multi string property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: ['a, b', 'c']
- type: 'REG_MULTI_SZ'
- value: ['a, b', 'c']
-
-- name: assert get multi string property
- assert:
- that:
- - actual == expected
-
-- name: get binary property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: binary
- register: actual
-
-- name: set expected binary property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: ["0x01", "0x16"]
- type: 'REG_BINARY'
- value: [1, 22]
-
-- name: assert get binary property
- assert:
- that:
- - actual == expected
-
-- name: get dword property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: dword
- register: actual
-
-- name: set expected dword property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: 1
- type: 'REG_DWORD'
- value: 1
-
-- name: assert get dword property
- assert:
- that:
- - actual == expected
-
-- name: get qword property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\nested
- name: qword
- register: actual
-
-- name: set expected qword property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: 1
- type: 'REG_QWORD'
- value: 1
-
-- name: assert get qword property
- assert:
- that:
- - actual == expected
-
-- name: get none property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\single
- name: none
- register: actual
-
-- name: set expected none property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: []
- type: 'REG_NONE'
- value: []
-
-- name: assert get none property
- assert:
- that:
- - actual == expected
-
-- name: get none with value property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\single
- name: none1
- register: actual
-
-- name: set expected none with value property
- set_fact:
- expected:
- changed: false
- exists: true
- failed: false
- raw_value: ["0x00"]
- type: 'REG_NONE'
- value: [0]
-
-- name: assert get non with value property
- assert:
- that:
- - actual == expected
-
-- name: get non-existent property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\single
- name: doesnotexist
- register: actual
-
-- name: set expected non-existent property
- set_fact:
- expected:
- changed: false
- exists: false
- failed: false
-
-- name: assert get non-existent property
- assert:
- that:
- - actual == expected
-
-- name: get key with default property set
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Duplicate Default
- register: actual
-
-- name: assert get key with default property set
- assert:
- that:
- - actual.properties[""]['raw_value'] == "default"
- - actual.properties[""]['type'] == "REG_SZ"
- - actual.properties[""]['value'] == "default"
- - actual.properties['(Default)'].raw_value == "custom"
- - actual.properties['(Default)'].type == "REG_SZ"
- - actual.properties['(Default)'].value == "custom"
-
-- name: get default property
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Duplicate Default
- name: ''
- register: actual
-
-- name: assert get default property
- assert:
- that:
- - actual.value == "default"
- - actual.raw_value == "default"
- - actual.type == "REG_SZ"
-
-- name: get key with blank property set
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Blank Default
- register: actual
-
-- name: assert get key with blank property set
- assert:
- that:
- - actual.properties[""].raw_value == ""
- - actual.properties[""].type == "REG_SZ"
- - actual.properties[""].value == ""
- - actual.properties['(Default)'].raw_value == ""
- - actual.properties['(Default)'].type == "REG_SZ"
- - actual.properties['(Default)'].value == ""
-
-- name: get default property as empty string
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Blank Default
- name: ''
- register: actual
-
-- name: assert get default property as empty string
- assert:
- that:
- - actual.value == ""
- - actual.raw_value == ""
- - actual.type == "REG_SZ"
-
-- name: get key with no properties set
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Empty Default
- register: actual
-
-- name: assert get key with no properties set
- assert:
- that:
- - actual.properties == {}
-
-- name: get default property that has not been set
- win_reg_stat:
- path: HKCU:\{{ test_reg_path }}\Empty Default
- name: ''
- register: actual
-
-- name: assert get default property that has not been set
- assert:
- that:
- - not actual.exists
-
-# Tests https://github.com/ansible/ansible/issues/59337
-- name: test out all registry hives
- win_reg_stat:
- path: '{{ item }}'
- register: reg_hive_stat
- failed_when: not reg_hive_stat.exists
- with_items:
- - HKCR:\*
- - HKCC:\Software
- - HKCU:\Software
- - HKLM:\Software
- - HKU:\.DEFAULT
diff --git a/test/integration/targets/win_reg_stat/templates/test_reg.reg.j2 b/test/integration/targets/win_reg_stat/templates/test_reg.reg.j2
deleted file mode 100644
index ac3d44ed73..0000000000
--- a/test/integration/targets/win_reg_stat/templates/test_reg.reg.j2
+++ /dev/null
@@ -1,37 +0,0 @@
-Windows Registry Editor Version 5.00
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}]
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\nested]
-"string"="test"
-"binary"=hex:01,16
-"dword"=dword:00000001
-"qword"=hex(b):01,00,00,00,00,00,00,00
-"large_dword"=dword:ffffffff
-"large_qword"=hex(b):ff,ff,ff,ff,ff,ff,ff,ff
-"multi"=hex(7):61,00,2c,00,20,00,62,00,00,00,63,00,00,00,00,00
-"expand"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,64,00,69,\
- 00,72,00,00,00
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\nested\nest1]
-"dontcare"=""
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\nested\nest2]
-
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\single]
-"string1"=""
-"string2"="abc123"
-"none"=hex(0):
-"none1"=hex(0):00
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\Empty Default]
-
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\Blank Default]
-@=""
-"(Default)"=""
-
-[HKEY_CURRENT_USER\{{ test_reg_path }}\Duplicate Default]
-@="default"
-"(Default)"="custom"
diff --git a/test/integration/targets/win_regedit/aliases b/test/integration/targets/win_regedit/aliases
deleted file mode 100644
index 4f4664b685..0000000000
--- a/test/integration/targets/win_regedit/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group5
diff --git a/test/integration/targets/win_regedit/defaults/main.yml b/test/integration/targets/win_regedit/defaults/main.yml
deleted file mode 100644
index ec88487556..0000000000
--- a/test/integration/targets/win_regedit/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-test_win_regedit_local_key: 'HKLM:\Software\Moo []{}!@#$%^&*()-_=+/key''"?<>'
-test_win_regedit_classes_key: HKCR:\.test-ansible
-test_win_regedit_hive_key: HKLM:\ANSIBLE\NewKey
diff --git a/test/integration/targets/win_regedit/tasks/cleanup.yml b/test/integration/targets/win_regedit/tasks/cleanup.yml
deleted file mode 100644
index f10452506e..0000000000
--- a/test/integration/targets/win_regedit/tasks/cleanup.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- name: load HKLM:\ANSIBLE with test hive
- win_command: reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat
- failed_when: false
-
-- name: make sure testing keys are removed before test
- win_regedit:
- path: '{{item}}'
- delete_key: yes
- state: absent
- with_items:
- - '{{test_win_regedit_local_key}}'
- - '{{test_win_regedit_classes_key}}'
- - '{{test_win_regedit_hive_key}}'
-
-- name: ensure HKLM:\ANSIBLE is unloaded
- win_command: reg.exe unload HKLM\ANSIBLE
- failed_when: false
diff --git a/test/integration/targets/win_regedit/tasks/create_tests.yml b/test/integration/targets/win_regedit/tasks/create_tests.yml
deleted file mode 100644
index e8cc536774..0000000000
--- a/test/integration/targets/win_regedit/tasks/create_tests.yml
+++ /dev/null
@@ -1,228 +0,0 @@
-# repeatable tests for each key type
-# takes in the following variables
-# test_win_regedit_key_type: the type of key
-# test_win_regedit_key_expected_type: the expected key type
-# test_win_regedit_key_data1: the data to create first
-# test_win_regedit_key_data2: the data to change tp
-# test_win_regedit_key_expected_value_null: the expected value for a null key
-# test_win_regedit_key_expected_value1: the expected value for the data1
-# test_win_regedit_key_expected_value2: the expected value for the data2
----
-- name: create a null {{test_win_regedit_key_type}} check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: empty_{{test_win_regedit_key_type}}
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: null_check
- check_mode: yes
-
-- name: get actual on null {{test_win_regedit_key_type}} check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: empty_{{test_win_regedit_key_type}}
- register: null_actual_check
-
-- name: assert create a null {{test_win_regedit_key_type}} check
- assert:
- that:
- - null_check is changed
- - null_check.data_changed == False
- - null_check.data_type_changed == False
- - null_actual_check.exists == False
-
-- name: create a null {{test_win_regedit_key_type}}
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: empty_{{test_win_regedit_key_type}}
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: null_create
-
-- name: get actual on null {{test_win_regedit_key_type}}
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: empty_{{test_win_regedit_key_type}}
- register: null_create_actual
-
-- name: assert create a null {{test_win_regedit_key_type}}
- assert:
- that:
- - null_create is changed
- - null_create.data_changed == False
- - null_create.data_type_changed == False
- - null_create_actual.exists == True
- - null_create_actual.raw_value == test_win_regedit_key_expected_value_null
- - null_create_actual.type == test_win_regedit_key_expected_type
- when: test_win_regedit_key_type not in ['dword', 'qword']
-
-# dword and qword are different, need to convert the expected value null to an int
-- name: assert create a null {{test_win_regedit_key_type}} for dword and qword
- assert:
- that:
- - null_create is changed
- - null_create.data_changed == False
- - null_create.data_type_changed == False
- - null_create_actual.exists == True
- - null_create_actual.raw_value == test_win_regedit_key_expected_value_null|int
- - null_create_actual.type == test_win_regedit_key_expected_type
- when: test_win_regedit_key_type in ['dword', 'qword']
-
-- name: create a null {{test_win_regedit_key_type}} again
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: empty_{{test_win_regedit_key_type}}
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: null_create_again
-
-- name: assert create a null {{test_win_regedit_key_type}} again
- assert:
- that:
- - null_create_again is not changed
-
-- name: create a {{test_win_regedit_key_type}} check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data1}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: data_create_check
- check_mode: yes
-
-- name: get actual on {{test_win_regedit_key_type}} check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- register: data_create_actual_check
-
-- name: assert create a {{test_win_regedit_key_type}} check
- assert:
- that:
- - data_create_check is changed
- - data_create_check.data_changed == False
- - data_create_check.data_type_changed == False
- - data_create_actual_check.exists == False
-
-- name: create a {{test_win_regedit_key_type}}
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data1}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: data_create
-
-- name: get actual on {{test_win_regedit_key_type}}
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- register: data_create_actual
-
-- name: assert create a {{test_win_regedit_key_type}}
- assert:
- that:
- - data_create is changed
- - data_create.data_changed == False
- - data_create.data_type_changed == False
- - data_create_actual.exists == True
- - data_create_actual.raw_value == test_win_regedit_key_expected_value1
- - data_create_actual.type == test_win_regedit_key_expected_type
- when: test_win_regedit_key_type not in ['dword', 'qword']
-
-- name: assert create a {{test_win_regedit_key_type}} for dword or qword
- assert:
- that:
- - data_create is changed
- - data_create.data_changed == False
- - data_create.data_type_changed == False
- - data_create_actual.exists == True
- - data_create_actual.raw_value == test_win_regedit_key_expected_value1|int
- - data_create_actual.type == test_win_regedit_key_expected_type
- when: test_win_regedit_key_type in ['dword', 'qword']
-
-- name: create a {{test_win_regedit_key_type}} again
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data1}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: data_create_again
-
-- name: assert create a {{test_win_regedit_key_type}} again
- assert:
- that:
- - data_create_again is not changed
-
-- name: change existing {{test_win_regedit_key_type}} data check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data2}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: change_data_check
- check_mode: yes
-
-- name: get actual of change existing {{test_win_regedit_key_type}} data check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- register: change_data_actual_check
-
-- name: assert change existing {{test_win_regedit_key_type}} data check
- assert:
- that:
- - change_data_check is changed
- - change_data_check.data_changed == True
- - change_data_check.data_type_changed == False
- - change_data_actual_check == data_create_actual
-
-- name: change existing {{test_win_regedit_key_type}} data
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data2}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: change_data
-
-- name: get actual of change existing {{test_win_regedit_key_type}} data
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- register: change_data_actual
-
-- name: assert change existing {{test_win_regedit_key_type}} data
- assert:
- that:
- - change_data is changed
- - change_data.data_changed == True
- - change_data.data_type_changed == False
- - change_data_actual.raw_value == test_win_regedit_key_expected_value2
- when: test_win_regedit_key_type not in ['dword', 'qword']
-
-- name: assert change existing {{test_win_regedit_key_type}} data for dword or qword
- assert:
- that:
- - change_data is changed
- - change_data.data_changed == True
- - change_data.data_type_changed == False
- - change_data_actual.raw_value == test_win_regedit_key_expected_value2|int
- when: test_win_regedit_key_type in ['dword', 'qword']
-
-- name: change existing {{test_win_regedit_key_type}} data again
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_{{test_win_regedit_key_type}}
- data: '{{test_win_regedit_key_data2}}'
- type: '{{test_win_regedit_key_type}}'
- state: present
- register: change_data_again
-
-- name: assert change existing {{test_win_regedit_key_type}} data again
- assert:
- that:
- - change_data_again is not changed
diff --git a/test/integration/targets/win_regedit/tasks/main.yml b/test/integration/targets/win_regedit/tasks/main.yml
deleted file mode 100644
index 9b55ed332a..0000000000
--- a/test/integration/targets/win_regedit/tasks/main.yml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-- name: make sure we start on a blank state
- include_tasks: cleanup.yml
-
-- block:
- - name: run tests for each property type
- include_tasks: create_tests.yml
- vars:
- test_win_regedit_key_type: '{{item.type}}'
- test_win_regedit_key_expected_type: '{{item.reg_type}}'
- test_win_regedit_key_data1: '{{item.data1}}'
- test_win_regedit_key_data2: '{{item.data2}}'
- test_win_regedit_key_expected_value_null: '{{item.value_null}}'
- test_win_regedit_key_expected_value1: '{{item.value1}}'
- test_win_regedit_key_expected_value2: '{{item.value2}}'
- loop:
- - type: dword
- reg_type: REG_DWORD
- data1: 1337 # decimal format
- data2: 0xffffffff # hex format and larger number
- value_null: 0
- value1: 1337
- value2: 4294967295
-
- - type: qword
- reg_type: REG_QWORD
- data1: 18446744073709551615 # larger decimal format
- data2: 0x1ffffffff # hex format and larger number
- value_null: 0
- value1: 18446744073709551615
- value2: 8589934591
-
- - type: string
- reg_type: REG_SZ
- data1: hello world
- data2: new hello world
- value_null: ""
- value1: hello world
- value2: new hello world
-
- - type: expandstring
- reg_type: REG_EXPAND_SZ
- data1: '%windir%\test'
- data2: '%AppData%\local'
- value_null: ""
- value1: '%windir%\test'
- value2: '%AppData%\local'
-
- - type: multistring
- reg_type: REG_MULTI_SZ
- data1: 'entry1' # test single entry as multi string
- data2: ['entry1', 2]
- value_null: []
- value1: ['entry1']
- value2: ['entry1', '2']
-
- - type: binary
- reg_type: REG_BINARY
- data1: hex:00,01,ee,ff # testing hex string format with hex: in front
- data2: [0xff, 0xee, 0x01, 0x00] # testing using just raw hex values
- value_null: []
- value1: ["0x00", "0x01", "0xee", "0xff"]
- value2: ["0xff", "0xee", "0x01", "0x00"]
-
- - type: none
- reg_type: REG_NONE
- data1: aa,bb,be,ef # testing hex string format with hex: in front
- data2: [0x01, 0x02]
- value_null: []
- value1: ["0xaa", "0xbb", "0xbe", "0xef"]
- value2: ["0x01", "0x02"]
-
- - name: run remaining tests
- include_tasks: tests.yml
-
- always:
- - name: make sure testing keys are removed after test
- include_tasks: cleanup.yml
diff --git a/test/integration/targets/win_regedit/tasks/tests.yml b/test/integration/targets/win_regedit/tasks/tests.yml
deleted file mode 100644
index d633e5333b..0000000000
--- a/test/integration/targets/win_regedit/tasks/tests.yml
+++ /dev/null
@@ -1,737 +0,0 @@
----
-- name: check warning is fired if path with / as separators is used
- win_regedit:
- path: HKLM:\SOFTWARE/Microsoft
- state: present
- register: forward_separator_warn
-
-- name: assert warning is fired if / is used as a separator
- assert:
- that:
- - forward_separator_warn.deprecations|length == 1
- - forward_separator_warn.deprecations[0].msg == "path is not using '\\' as a separator, support for '/' as a separator will be removed in a future Ansible version"
- - forward_separator_warn.deprecations[0].version == 2.12
-
-- name: fail run win_regedit with larger dword
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: test
- data: 0xffffffff1
- type: dword
- state: present
- register: large_dword
- failed_when: large_dword.msg != 'data cannot be larger than 0xffffffff when type is dword'
-
-- name: fail run win_regedit with larger qword
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: test
- data: 0xffffffffffffffff1
- type: qword
- state: present
- register: large_qword
- failed_when: large_qword.msg != 'data cannot be larger than 0xffffffffffffffff when type is qword'
-
-- name: run win_regedit with invalid path
- win_regedit:
- path: ABCD:\efg
- register: invalid_path
- failed_when: "invalid_path.msg != 'path: ABCD:\\efg is not a valid powershell path, see module documentation for examples.'"
-
-- name: change string to binary check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_string
- data: hex:00,01
- type: binary
- state: present
- register: change_string_binary_check
- check_mode: yes
-
-- name: get actual change string to binary check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_string
- register: change_string_binary_actual_check
-
-- name: assert change string to binary check
- assert:
- that:
- - change_string_binary_check is changed
- - change_string_binary_check.data_changed == True
- - change_string_binary_check.data_type_changed == True
- - change_string_binary_actual_check.type == 'REG_SZ'
- - change_string_binary_actual_check.raw_value == "new hello world"
-
-- name: change string to binary
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_string
- data: hex:00,01
- type: binary
- state: present
- register: change_string_binary
-
-- name: get actual change string to binary
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_string
- register: change_string_binary_actual
-
-- name: assert change string to binary check
- assert:
- that:
- - change_string_binary is changed
- - change_string_binary.data_changed == True
- - change_string_binary.data_type_changed == True
- - change_string_binary_actual.type == 'REG_BINARY'
- - change_string_binary_actual.raw_value == ["0x00", "0x01"]
-
-- name: modify the (Default) key property check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- data: default value
- state: present
- register: modify_default_check
- check_mode: yes
-
-- name: get actual modify the (Default) key property check
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- name: ''
- register: modify_default_actual_check
-
-- name: assert modify the (Default) key property check
- assert:
- that:
- - modify_default_check is changed
- - not modify_default_actual_check.exists
-
-- name: modify the (Default) key property
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- data: default value
- state: present
- register: modify_default
-
-- name: get actual modify the (Default) key property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- name: ''
- register: modify_default_actual
-
-- name: assert modify the (Default) key property
- assert:
- that:
- - modify_default is changed
- - modify_default_actual.value == "default value"
-
-- name: create an actual property called (Default)
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: (Default)
- data: custom default value
- type: expandstring
- state: present
- register: create_specific_default_check
- check_mode: yes
-
-- name: get actual value for (Default) property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: create_specific_default_actual_check
-
-- name: assert create specific property called (Default) check
- assert:
- that:
- - create_specific_default_check is changed
- - create_specific_default_actual_check.properties[""].value == "default value"
- - not "(Default)" in create_specific_default_actual_check.properties
-
-- name: create an actual property called (Default)
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: (Default)
- data: custom default value
- type: expandstring
- state: present
- register: create_specific_default
-
-- name: get actual value for (Default) property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: create_specific_default_actual
-
-- name: assert create specific property called (Default)
- assert:
- that:
- - create_specific_default is changed
- - create_specific_default_actual.properties[""].value == "default value"
- - create_specific_default_actual.properties["(Default)"].value == "custom default value"
-
-- name: delete property check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_binary
- state: absent
- register: delete_property_check
- check_mode: yes
-
-- name: get actual of delete property check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_binary
- register: delete_property_actual_check
-
-- name: assert delete property check
- assert:
- that:
- - delete_property_check is changed
- - delete_property_actual_check.exists == True
-
-- name: delete property
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_binary
- state: absent
- register: delete_property
-
-- name: get actual of delete property
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- name: data_binary
- register: delete_property_actual
-
-- name: assert delete property
- assert:
- that:
- - delete_property is changed
- - delete_property_actual.exists == False
-
-- name: delete property again
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: data_binary
- state: absent
- register: delete_property_again
-
-- name: assert delete property again
- assert:
- that:
- - delete_property_again is not changed
-
-- name: delete the key's (Default) property check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- state: absent
- delete_key: no
- register: delete_default_check
- check_mode: yes
-
-- name: get actual of key's (Default) property check
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: delete_default_actual_check
-
-- name: assert delete the key's (Default) property check
- assert:
- that:
- - delete_default_check is changed
- - delete_default_actual_check.properties[""].value == "default value"
- - delete_default_actual_check.properties["(Default)"].value == "custom default value"
-
-- name: delete the key's (Default) property
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- state: absent
- delete_key: no
- register: delete_default
-
-- name: get actual of key's (Default) property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: delete_default_actual
-
-- name: assert delete the key's (Default) property
- assert:
- that:
- - delete_default is changed
- - not "" in delete_default_actual.properties
- - delete_default_actual.properties["(Default)"].value == "custom default value"
-
-- name: recreate the key's (Default) property for next test
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- data: default value
-
-- name: delete the custom (Default) property check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: (Default)
- state: absent
- delete_key: no
- register: delete_custom_default_check
- check_mode: yes
-
-- name: get actual of key's (Default) property check
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: delete_custom_default_actual_check
-
-- name: assert delete the custom (Default) property check
- assert:
- that:
- - delete_custom_default_check is changed
- - delete_custom_default_actual_check.properties[""].value == "default value"
- - delete_custom_default_actual_check.properties["(Default)"].value == "custom default value"
-
-- name: delete the custom (Default) property
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- name: (Default)
- state: absent
- delete_key: no
- register: delete_custom_default
-
-- name: get actual of key's (Default) property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}'
- register: delete_custom_default_actual
-
-- name: assert delete the custom (Default) property
- assert:
- that:
- - delete_custom_default is changed
- - delete_custom_default_actual.properties[""].value == "default value"
- - not "(Default)" in delete_custom_default_actual.properties
-
-- name: add some nested keys for later deletion
- win_regedit:
- path: '{{test_win_regedit_local_key}}\{{item}}'
- state: present
- loop:
- - nest1
- - nest2
- - nest1\nested
-
-- name: delete key and it's sub keys check
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- state: absent
- delete_key: yes
- register: delete_key_check
- check_mode: yes
-
-- name: get actual of delete key and it's sub keys check
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- register: delete_key_actual_check
-
-- name: assert delete key and it's sub keys check
- assert:
- that:
- - delete_key_check is changed
- - delete_key_actual_check.exists
- - delete_key_actual_check.sub_keys == ["nest1", "nest2"]
-
-- name: delete key and it's sub keys
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- state: absent
- delete_key: yes
- register: delete_key
-
-- name: get actual of delete key and it's sub keys
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}'
- register: delete_key_actual
-
-- name: assert delete key and it's sub keys
- assert:
- that:
- - delete_key is changed
- - delete_key_actual.exists == False
-
-- name: delete key and it's sub keys again
- win_regedit:
- path: '{{test_win_regedit_local_key}}'
- state: absent
- delete_key: yes
- register: delete_key_again
-
-- name: assert delete key and it's sub keys again
- assert:
- that:
- - delete_key_again is not changed
-
-- name: create a new key without specifying the property
- win_regedit:
- path: '{{ test_win_regedit_local_key }}\new'
- state: present
- register: create_key_no_prop
-
-- name: get result of create a new key without specifying the property
- win_reg_stat:
- path: '{{ test_win_regedit_local_key }}\new'
- register: create_key_no_prop_actual
-
-- name: assert create a new key without specifying the property
- assert:
- that:
- - create_key_no_prop is changed
- - not create_key_no_prop.data_changed
- - not create_key_no_prop.data_type_changed
- - create_key_no_prop_actual.exists
- - create_key_no_prop_actual.properties == {}
-
-- name: create key in HKEY_CLASSES_ROOT check
- win_regedit:
- path: '{{test_win_regedit_classes_key}}'
- name: test
- data: test
- type: string
- state: present
- register: create_hkcr_key_check
- check_mode: yes
-
-- name: get actual of create key in HKEY_CLASSES_ROOT check
- win_reg_stat:
- path: '{{test_win_regedit_classes_key}}'
- register: create_hkcr_key_actual_check
-
-- name: assert create key in HKEY_CLASSES_ROOT check
- assert:
- that:
- - create_hkcr_key_check is changed
- - create_hkcr_key_actual_check.exists == False
-
-- name: create key in HKEY_CLASSES_ROOT
- win_regedit:
- path: '{{test_win_regedit_classes_key}}'
- name: test
- data: test
- type: string
- state: present
- register: create_hkcr_key
-
-- name: get actual of create key in HKEY_CLASSES_ROOT
- win_reg_stat:
- path: '{{test_win_regedit_classes_key}}'
- register: create_hkcr_key_actual
-
-- name: assert create key in HKEY_CLASSES_ROOT
- assert:
- that:
- - create_hkcr_key is changed
- - create_hkcr_key_actual.exists == True
- - create_hkcr_key_actual.properties.test is defined
-
-- name: create key in HKEY_CLASSES_ROOT again
- win_regedit:
- path: '{{test_win_regedit_classes_key}}'
- name: test
- data: test
- type: string
- state: present
- register: create_hkcr_key_again
-
-- name: assert create key in HKEY_CLASSES_ROOT again
- assert:
- that:
- - create_hkcr_key_again is not changed
-
-# https://github.com/ansible/ansible/issues/31782
-- name: create property like a json string
- win_regedit:
- path: '{{test_win_regedit_local_key}}\NewKey'
- name: '{7f51bda7-bcea-465a-9eb6-5a2bcd9cb52f}'
- data: test data
- type: string
- state: present
- register: create_prop_with_json
-
-- name: get result of create property like a json string
- win_reg_stat:
- path: '{{test_win_regedit_local_key}}\NewKey'
- name: '{7f51bda7-bcea-465a-9eb6-5a2bcd9cb52f}'
- register: create_prop_with_json_result
-
-- name: assert results of create property like a json string
- assert:
- that:
- - create_prop_with_json is changed
- - create_prop_with_json_result.exists == True
- - create_prop_with_json_result.value == 'test data'
-
-- name: create property like a json string (idempotent)
- win_regedit:
- path: '{{test_win_regedit_local_key}}\NewKey'
- name: '{7f51bda7-bcea-465a-9eb6-5a2bcd9cb52f}'
- data: test data
- type: string
- state: present
- register: create_prop_with_json_again
-
-- name: assert results of create property like a json string (idempotent)
- assert:
- that:
- - create_prop_with_json_again is not changed
-
-- name: create new key in loaded hive (check mode)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_key_in_hive_check
- check_mode: yes
-
-- name: get result of create new key in loaded hive (check mode)
- win_shell: |
- $ErrorActionPreference = "Stop"
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- Test-Path -Path HKLM:\ANSIBLE\NewKey
- [GC]::Collect()
- [GC]::WaitForPendingFinalizers()
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: new_key_in_hive_result_check
-
-- name: assert result of create new key in loaded hive (check mode)
- assert:
- that:
- - new_key_in_hive_check is changed
- - new_key_in_hive_result_check.stdout == "False\r\n"
-
-- name: create new key in loaded hive
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_key_in_hive
-
-- name: get result of create new key in loaded hive
- win_shell: |
- $ErrorActionPreference = "Stop"
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- Test-Path -Path HKLM:\ANSIBLE\NewKey
- [GC]::Collect()
- [GC]::WaitForPendingFinalizers()
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: new_key_in_hive_result
-
-- name: assert result of create new key in loaded hive
- assert:
- that:
- - new_key_in_hive is changed
- - new_key_in_hive_result.stdout == "True\r\n"
-
-- name: create new key in loaded hive (idempotent)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_key_in_hive_again
-
-- name: assert result of create new key in loaded hive (idempotent)
- assert:
- that:
- - new_key_in_hive_again is not changed
-
-- name: set hive key property (check mode)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- data: string
- type: string
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_prop_in_hive_check
- check_mode: yes
-
-- name: get result of set hive key property (check mode)
- win_shell: |
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- $prop = Get-ItemProperty -Path HKLM:\ANSIBLE\NewKey -Name TestProp -ErrorAction SilentlyContinue
- if ($prop) {
- $prop.TestProp
- }
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: new_prop_in_hive_result_check
-
-- name: assert result of set hive key property (check mode)
- assert:
- that:
- - new_prop_in_hive_check is changed
- - new_prop_in_hive_result_check.stdout == ""
-
-- name: set hive key property
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- data: string
- type: string
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_prop_in_hive
-
-- name: get result of set hive key property
- win_shell: |
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- $prop = Get-ItemProperty -Path HKLM:\ANSIBLE\NewKey -Name TestProp -ErrorAction SilentlyContinue
- if ($prop) {
- $prop.TestProp
- }
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: new_prop_in_hive_result
-
-- name: assert result of set hive key property
- assert:
- that:
- - new_prop_in_hive is changed
- - new_prop_in_hive_result.stdout == "string\r\n"
-
-- name: set hive key property (idempotent)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- data: string
- type: string
- state: present
- hive: C:\Users\Default\NTUSER.dat
- register: new_prop_in_hive_again
-
-- name: assert result of set hive key property (idempotent)
- assert:
- that:
- - new_prop_in_hive_again is not changed
-
-- name: remove hive key property (check mode)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- state: absent
- hive: C:\Users\Default\NTUSER.dat
- register: remove_prop_in_hive_check
- check_mode: yes
-
-- name: get result of remove hive key property (check mode)
- win_shell: |
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- $prop = Get-ItemProperty -Path HKLM:\ANSIBLE\NewKey -Name TestProp -ErrorAction SilentlyContinue
- if ($prop) {
- $prop.TestProp
- }
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: remove_prop_in_hive_result_check
-
-- name: assert result of remove hive key property (check mode)
- assert:
- that:
- - remove_prop_in_hive_check is changed
- - remove_prop_in_hive_result_check.stdout == "string\r\n"
-
-- name: remove hive key property
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- state: absent
- hive: C:\Users\Default\NTUSER.dat
- register: remove_prop_in_hive
-
-- name: get result of remove hive key property
- win_shell: |
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- $prop = Get-ItemProperty -Path HKLM:\ANSIBLE\NewKey -Name TestProp -ErrorAction SilentlyContinue
- if ($prop) {
- $prop.TestProp
- }
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: remove_prop_in_hive_result
-
-- name: assert result of remove hive key property
- assert:
- that:
- - remove_prop_in_hive is changed
- - remove_prop_in_hive_result.stdout == ""
-
-- name: remove hive key property (idempotent)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- name: TestProp
- state: absent
- hive: C:\Users\Default\NTUSER.dat
- register: remove_prop_in_hive_again
-
-- name: assert result of set hive key property (idempotent)
- assert:
- that:
- - remove_prop_in_hive_again is not changed
-
-- name: remove key in loaded hive (check mode)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: absent
- delete_key: yes
- hive: C:\Users\Default\NTUSER.dat
- register: remove_key_in_hive_check
- check_mode: yes
-
-- name: get result of remove key in loaded hive (check mode)
- win_shell: |
- $ErrorActionPreference = "Stop"
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- Test-Path -Path HKLM:\ANSIBLE\NewKey
- [GC]::Collect()
- [GC]::WaitForPendingFinalizers()
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: remove_key_in_hive_result_check
-
-- name: assert result of removekey in loaded hive (check mode)
- assert:
- that:
- - remove_key_in_hive_check is changed
- - remove_key_in_hive_result_check.stdout == "True\r\n"
-
-- name: remove key in loaded hive
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: absent
- delete_key: yes
- hive: C:\Users\Default\NTUSER.dat
- register: remove_key_in_hive
-
-- name: get result of remove key in loaded hive
- win_shell: |
- $ErrorActionPreference = "Stop"
- &reg.exe load HKLM\ANSIBLE C:\Users\Default\NTUSER.dat > $null
- Test-Path -Path HKLM:\ANSIBLE\NewKey
- [GC]::Collect()
- [GC]::WaitForPendingFinalizers()
- &reg.exe unload HKLM\ANSIBLE > $null
- exit 0
- register: remove_key_in_hive_result
-
-- name: assert result of remove key in loaded hive
- assert:
- that:
- - remove_key_in_hive is changed
- - remove_key_in_hive_result.stdout == "False\r\n"
-
-- name: remove key in loaded hive (idempotent)
- win_regedit:
- path: '{{test_win_regedit_hive_key}}'
- state: absent
- delete_key: yes
- hive: C:\Users\Default\NTUSER.dat
- register: remove_key_in_hive_again
-
-- name: assert result of remove key in loaded hive (idempotent)
- assert:
- that:
- - remove_key_in_hive_again is not changed
diff --git a/test/integration/targets/win_service/aliases b/test/integration/targets/win_service/aliases
deleted file mode 100644
index 71fee86193..0000000000
--- a/test/integration/targets/win_service/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group7
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_service/defaults/main.yml b/test/integration/targets/win_service/defaults/main.yml
deleted file mode 100644
index 51567c7e06..0000000000
--- a/test/integration/targets/win_service/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-test_win_service_binary_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_service/SleepService.exe
-test_win_service_dir: C:\ansible testing\[win_service]
-test_win_service_path: '{{ test_win_service_dir }}\SleepService.exe'
-test_win_service_name: TestService [*abc]
-test_win_service_display_name: Test Service
-test_win_service_description: Test Service description
diff --git a/test/integration/targets/win_service/files/Program.cs b/test/integration/targets/win_service/files/Program.cs
deleted file mode 100644
index d566cb8376..0000000000
--- a/test/integration/targets/win_service/files/Program.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.ServiceProcess;
-
-namespace SleepService
-{
- internal static class Program
- {
- private static void Main(string[] args)
- {
- ServiceBase.Run(new ServiceBase[1]
- {
- (ServiceBase) new SleepService(args)
- });
- }
- }
-}
-
diff --git a/test/integration/targets/win_service/files/SleepService.cs b/test/integration/targets/win_service/files/SleepService.cs
deleted file mode 100644
index c82d7e3314..0000000000
--- a/test/integration/targets/win_service/files/SleepService.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Management;
-using System.ServiceProcess;
-
-namespace SleepService
-{
- public class SleepService : ServiceBase
- {
- private IContainer components = null;
- private string[] serviceArgs;
- private string displayName;
-
- public SleepService(string[] args)
- {
- CanPauseAndContinue = true;
- CanShutdown = true;
- CanStop = true;
- AutoLog = false;
- serviceArgs = args;
- InitializeComponent();
-
- string eventSource = "Ansible Test";
- if (!EventLog.SourceExists(eventSource))
- EventLog.CreateEventSource(eventSource, "Application");
- EventLog.Source = eventSource;
- EventLog.Log = "Application";
- }
-
- private string GetServiceName()
- {
- using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = new ManagementObjectSearcher(string.Format("SELECT * FROM Win32_Service WHERE ProcessId = {0}", (object)Process.GetCurrentProcess().Id)).Get().GetEnumerator())
- {
- if (enumerator.MoveNext())
- return enumerator.Current["Name"].ToString();
- }
- return ServiceName;
- }
-
- protected override void OnContinue()
- {
- EventLog.WriteEntry(string.Format("{0} OnContinue", displayName));
- }
-
- protected override void OnCustomCommand(int command)
- {
- EventLog.WriteEntry(string.Format("{0} OnCustomCommand {1}", displayName, command.ToString()));
- }
-
- protected override void OnPause()
- {
- EventLog.WriteEntry(string.Format("{0} OnPause", displayName));
- }
-
- protected override void OnStart(string[] args)
- {
- displayName = this.GetServiceName();
- EventLog.WriteEntry(string.Format("{0} OnStart Args:\n{1}", displayName, string.Join("\n", serviceArgs)));
- }
-
- protected override void OnShutdown()
- {
- EventLog.WriteEntry(string.Format("{0} OnShutdown", displayName));
- }
-
- protected override void OnStop()
- {
- EventLog.WriteEntry(string.Format("{0} OnStop", displayName));
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing && components != null)
- components.Dispose();
- base.Dispose(disposing);
- }
-
- private void InitializeComponent()
- {
- components = new Container();
- ServiceName = nameof(SleepService);
- }
- }
-}
-
diff --git a/test/integration/targets/win_service/tasks/main.yml b/test/integration/targets/win_service/tasks/main.yml
deleted file mode 100644
index 5d7a0c2bc1..0000000000
--- a/test/integration/targets/win_service/tasks/main.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-# test code for the win_service module
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: create test directory
- win_file:
- path: '{{ test_win_service_dir }}'
- state: directory
-
-# This binary has been pre-compiled with the code in the files directory of this role
-- name: download service executable
- win_get_url:
- url: '{{ test_win_service_binary_url }}'
- dest: '{{ test_win_service_path }}'
-
-- name: remove the dummy test services if it is left over from previous tests
- win_service:
- name: '{{ item }}'
- force_dependent_services: True
- state: absent
- with_items:
- - '{{ test_win_service_name }}'
- - TestServiceParent2
- - TestServiceDependency
-
-- block:
- - include_tasks: tests.yml
-
- always:
- - name: remove test services
- win_service:
- name: '{{ item }}'
- force_dependent_services: True
- state: absent
- with_items:
- - '{{ test_win_service_name }}'
- - TestServiceParent2
- - TestServiceDependency
-
- - name: remove test directory
- win_file:
- path: '{{ test_win_service_dir }}'
- state: absent
diff --git a/test/integration/targets/win_service/tasks/tests.yml b/test/integration/targets/win_service/tasks/tests.yml
deleted file mode 100644
index 05ada8094b..0000000000
--- a/test/integration/targets/win_service/tasks/tests.yml
+++ /dev/null
@@ -1,912 +0,0 @@
----
-- name: create new dummy test service
- win_service:
- name: "{{test_win_service_name}}"
- path: "{{test_win_service_path}}"
- display_name: "{{test_win_service_display_name}}"
- description: "{{test_win_service_description}}"
- register: win_service_added
-
-- name: check that creating a new service succeeds with a change
- assert:
- that:
- - win_service_added is changed
- - win_service_added.name == test_win_service_name
- - win_service_added.can_pause_and_continue == False
- - win_service_added.display_name == test_win_service_display_name
- - win_service_added.description == test_win_service_description
- - win_service_added.path == test_win_service_path
- - win_service_added.state == 'stopped'
- - win_service_added.start_mode == 'auto'
- - win_service_added.username == 'LocalSystem'
- - win_service_added.desktop_interact == False
- - win_service_added.dependencies == []
- - win_service_added.depended_by == []
- - win_service_added.exists == True
-
-- name: test win_service module with short name
- win_service:
- name: "{{test_win_service_name}}"
- register: win_service_name
-
-- name: check win_service result with short name
- assert:
- that:
- - win_service_name is not changed
- - win_service_name.name == test_win_service_name
- - win_service_name.can_pause_and_continue == False
- - win_service_name.display_name == test_win_service_display_name
- - win_service_name.start_mode == 'auto'
- - win_service_name.state == 'stopped'
- - win_service_name.description == test_win_service_description
- - win_service_name.exists == True
- - win_service_name.path == test_win_service_path
- - win_service_name.username == 'LocalSystem'
- - win_service_name.desktop_interact == False
- - win_service_name.dependencies == []
- - win_service_name.depended_by == []
-
-- name: test win_service module with display name
- win_service:
- name: "{{test_win_service_display_name}}"
- register: win_service_display_name
-
-- name: check win_service result with display name
- assert:
- that:
- - win_service_display_name is not changed
- - win_service_display_name.name == test_win_service_name
- - win_service_display_name.can_pause_and_continue == False
- - win_service_display_name.display_name == test_win_service_display_name
- - win_service_display_name.start_mode == 'auto'
- - win_service_display_name.state == 'stopped'
- - win_service_display_name.description == test_win_service_description
- - win_service_display_name.exists == True
- - win_service_display_name.path == test_win_service_path
- - win_service_display_name.username == 'LocalSystem'
- - win_service_display_name.desktop_interact == False
- - win_service_display_name.dependencies == []
- - win_service_display_name.depended_by == []
-
-- name: test win_service module with invalid name
- win_service:
- name: iamnotaservice
- register: win_service_invalid
-
-- name: check win_service result with invalid name
- assert:
- that:
- - win_service_invalid is not changed
- - win_service_invalid.exists == False
-
-- name: test win_service module with invalid name and absent state
- win_service:
- name: iamnotaservice
- state: absent
- register: win_service_invalid_with_absent
-
-- name: check win_service result with invalid name and absent state
- assert:
- that:
- - win_service_invalid_with_absent is not changed
- - win_service_invalid_with_absent.exists == False
-
-- name: test win_service module with invalid name and startup
- win_service:
- name: iamnotaservice
- state: started
- register: win_service_invalid_with_action
- failed_when: win_service_invalid_with_action.msg != "Service \'iamnotaservice\' is not installed, need to set \'path\' to create a new service"
-
-- name: make sure the service is stopped and disabled for next tests
- win_service:
- name: "{{test_win_service_name}}"
- state: stopped
- start_mode: disabled
- register: win_service_stopped_disabled
-
-- name: try to start the disabled service
- win_service:
- name: "{{test_win_service_name}}"
- state: started
- register: win_service_start_disabled
- failed_when: "'Cannot start service ' + test_win_service_name + ' on computer' not in win_service_start_disabled.msg"
-
-- name: enable the service for manual startup
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: manual
- register: win_service_manual_start_mode
-
-- name: check that enabling the service for manual startup succeeded
- assert:
- that:
- - win_service_manual_start_mode is changed
- - win_service_manual_start_mode.start_mode == 'manual'
- - win_service_manual_start_mode.state == 'stopped'
-
-- name: enable the service for manual startup again
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: manual
- register: win_service_manual_start_mode_again
-
-- name: check that enabling service for manual startup again didn't change anything
- assert:
- that:
- - win_service_manual_start_mode_again is not changed
- - win_service_manual_start_mode_again.start_mode == 'manual'
- - win_service_manual_start_mode_again.state == 'stopped'
-
-- name: enable the service for delayed startup from non automatic
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: delayed
- register: win_service_delayed_start_mode
-
-- name: check that that enabling the service for delayed startup succeeded
- assert:
- that:
- - win_service_delayed_start_mode is changed
- - win_service_delayed_start_mode.start_mode == 'delayed'
- - win_service_delayed_start_mode.state == 'stopped'
-
-- name: enable the service for delayed startup from non automatic again
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: delayed
- register: win_service_delayed_start_mode_again
-
-- name: check that enabling the service for delayed startup again no changes
- assert:
- that:
- - win_service_delayed_start_mode_again is not changed
- - win_service_delayed_start_mode_again.start_mode == 'delayed'
- - win_service_delayed_start_mode_again.state == 'stopped'
-
-- name: enable the service for automatic startup
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: auto
- register: win_service_auto_start_mode
-
-- name: check that enabling the service for auto startup succeeded
- assert:
- that:
- - win_service_auto_start_mode is changed
- - win_service_auto_start_mode.start_mode == 'auto'
- - win_service_auto_start_mode.state == 'stopped'
-
-- name: enable the service for automatic startup again
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: auto
- register: win_service_auto_start_mode_again
-
-- name: check that enabling the service for auto startup again no changes
- assert:
- that:
- - win_service_auto_start_mode_again is not changed
- - win_service_auto_start_mode_again.start_mode == 'auto'
- - win_service_auto_start_mode_again.state == 'stopped'
-
-- name: enable the service for delayed startup from automatic
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: delayed
- register: win_service_delayed_start_mode_from_auto
-
-- name: check that enabling the service for delayed startup from auto succeeded
- assert:
- that:
- - win_service_delayed_start_mode_from_auto is changed
- - win_service_delayed_start_mode_from_auto.start_mode == 'delayed'
- - win_service_delayed_start_mode_from_auto.state == 'stopped'
-
-- name: enable the service for delayed startup from automatic again
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: delayed
- register: win_service_delayed_start_mode_from_auto_again
-
-- name: check that enabling the service for delayed startup from auto succeeded again no change
- assert:
- that:
- - win_service_delayed_start_mode_from_auto_again is not changed
- - win_service_delayed_start_mode_from_auto_again.start_mode == 'delayed'
- - win_service_delayed_start_mode_from_auto_again.state == 'stopped'
-
-- name: start the service
- win_service:
- name: "{{test_win_service_name}}"
- state: started
- register: win_service_start
-
-- name: check that starting the service succeeds with changes
- assert:
- that:
- - win_service_start is changed
- - win_service_start.state == 'running'
-
-- name: start the service again
- win_service:
- name: "{{test_win_service_name}}"
- state: started
- register: win_service_start_again
-
-- name: check that starting the service succeeds again with no changes
- assert:
- that:
- - win_service_start_again is not changed
- - win_service_start_again.state == 'running'
-
-- name: restart the service
- win_service:
- name: "{{test_win_service_name}}"
- state: restarted
- register: win_service_restart
-
-- name: check that restarting the service succeeds with changes
- assert:
- that:
- - win_service_restart is changed
- - win_service_restart.state =='running'
-
-- name: restart the service again
- win_service:
- name: "{{test_win_service_name}}"
- state: restarted
- register: win_service_restart_again
-
-- name: check that restarting the service again succeeds with changes
- assert:
- that:
- - win_service_restart_again is changed
- - win_service_restart_again.state =='running'
-
-- name: disable the service while running
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: disabled
- register: win_service_disabled_while_running
-
-- name: check that disabling the service succeeds, service is still running
- assert:
- that:
- - win_service_disabled_while_running is changed
- - win_service_disabled_while_running.start_mode == 'disabled'
- - win_service_disabled_while_running.state == 'running'
-
-- name: disable the service while running again
- win_service:
- name: "{{test_win_service_name}}"
- start_mode: disabled
- register: win_service_disabled_while_running_again
-
-- name: check that disabling the service again succeeds, service is still running but with no changes
- assert:
- that:
- - win_service_disabled_while_running_again is not changed
- - win_service_disabled_while_running_again.start_mode == 'disabled'
- - win_service_disabled_while_running_again.state == 'running'
-
-- name: stop the service
- win_service:
- name: "{{test_win_service_name}}"
- state: stopped
- register: win_service_stopped
-
-- name: check that stopping the service succeeds with changes
- assert:
- that:
- - win_service_stopped is changed
- - win_service_stopped.state == 'stopped'
-
-- name: stop the service again
- win_service:
- name: "{{test_win_service_name}}"
- state: stopped
- register: win_service_stopped_again
-
-- name: check that stopping the service again succeeds with no changes
- assert:
- that:
- - win_service_stopped_again is not changed
- - win_service_stopped_again.state == 'stopped'
-
-- name: set password without username
- win_service:
- name: "{{test_win_service_name}}"
- password: password
- register: win_service_change_password_without_user
- failed_when: win_service_change_password_without_user.msg != "The argument 'username' must be supplied with 'password'"
-
-- name: set service username to Network Service and desktop interact fail
- win_service:
- name: "{{test_win_service_name}}"
- username: NT AUTHORITY\NetworkService
- desktop_interact: True
- register: win_desktop_interact_not_local_system
- failed_when: win_desktop_interact_not_local_system.msg != "Can only set 'desktop_interact' to true when 'username' equals 'LocalSystem'"
-
-- name: set service username to Network Service
- win_service:
- name: "{{test_win_service_name}}"
- username: NT AUTHORITY\NetworkService
- register: win_service_change_password_network_service
-
-- name: check that the service user has been set to Network Service
- assert:
- that:
- - win_service_change_password_network_service is changed
- - win_service_change_password_network_service.username == 'NT AUTHORITY\\NETWORK SERVICE'
- - win_service_change_password_network_service.desktop_interact == False
-
-- name: set service username to Network Service again
- win_service:
- name: "{{test_win_service_name}}"
- username: NT AUTHORITY\NetworkService
- register: win_service_change_password_network_service_again
-
-- name: check that the service user has been set to Network Service and nothing changed
- assert:
- that:
- - win_service_change_password_network_service_again is not changed
- - win_service_change_password_network_service_again.username == 'NT AUTHORITY\\NETWORK SERVICE'
- - win_service_change_password_network_service_again.desktop_interact == False
-
-- name: set service username to interact with desktop with existing user to fail
- win_service:
- name: "{{test_win_service_name}}"
- desktop_interact: True
- register: win_service_desktop_interact_current_user_fail
- failed_when: win_service_desktop_interact_current_user_fail.msg != "Can only set desktop_interact to true when service is run with/or 'username' equals 'LocalSystem'"
-
-- name: set service username to Local Service
- win_service:
- name: "{{test_win_service_name}}"
- username: NT AUTHORITY\LocalService
- register: win_service_change_password_local_service
-
-- name: check that the service user has been set to Local Service
- assert:
- that:
- - win_service_change_password_local_service is changed
- - win_service_change_password_local_service.username == 'NT AUTHORITY\\LOCAL SERVICE'
- - win_service_change_password_local_service.desktop_interact == False
-
-- name: set service username to Local Service again
- win_service:
- name: "{{test_win_service_name}}"
- username: NT AUTHORITY\LocalService
- register: win_service_change_password_local_service_again
-
-- name: check that the service user has been set to Local Service and nothing changed
- assert:
- that:
- - win_service_change_password_local_service_again is not changed
- - win_service_change_password_local_service_again.username == 'NT AUTHORITY\\LOCAL SERVICE'
- - win_service_change_password_local_service_again.desktop_interact == False
-
-- name: set service username to Local System
- win_service:
- name: "{{test_win_service_name}}"
- username: LocalSystem
- register: win_service_change_password_local_system
-
-- name: check that the service user has been set to Local System
- assert:
- that:
- - win_service_change_password_local_system is changed
- - win_service_change_password_local_system.username == 'LocalSystem'
- - win_service_change_password_local_system.desktop_interact == False
-
-- name: set service username to Local System again
- win_service:
- name: "{{test_win_service_name}}"
- username: LocalSystem
- register: win_service_change_password_local_system_again
-
-- name: check that the service user has been set to Local System and nothing changed
- assert:
- that:
- - win_service_change_password_local_system_again is not changed
- - win_service_change_password_local_system_again.username == 'LocalSystem'
- - win_service_change_password_local_system_again.desktop_interact == False
-
-- name: set service username to Local System with desktop interaction
- win_service:
- name: "{{test_win_service_name}}"
- username: SYSTEM # tests that you can also set it this way
- desktop_interact: True
- register: win_service_local_system_desktop
-
-- name: check that the service has been set to Local System with desktop interaction
- assert:
- that:
- - win_service_local_system_desktop is changed
- - win_service_local_system_desktop.username == 'LocalSystem'
- - win_service_local_system_desktop.desktop_interact == True
-
-- name: set service username to Local System with desktop interaction again
- win_service:
- name: "{{test_win_service_name}}"
- username: SYSTEM
- desktop_interact: True
- register: win_service_local_system_desktop_again
-
-- name: check that the service has been set to Local System with desktop interaction again
- assert:
- that:
- - win_service_local_system_desktop_again is not changed
- - win_service_local_system_desktop_again.username == 'LocalSystem'
- - win_service_local_system_desktop_again.desktop_interact == True
-
-- name: set desktop interaction to disabled
- win_service:
- name: "{{test_win_service_name}}"
- desktop_interact: False
- register: win_service_desktop_disable
-
-- name: check that desktop interaction has been disabled
- assert:
- that:
- - win_service_desktop_disable is changed
- - win_service_desktop_disable.username == 'LocalSystem'
- - win_service_desktop_disable.desktop_interact == False
-
-- name: set desktop interaction to disabled again
- win_service:
- name: "{{test_win_service_name}}"
- desktop_interact: False
- register: win_service_desktop_disable_again
-
-- name: check that desktop interaction has been disabled again
- assert:
- that:
- - win_service_desktop_disable_again is not changed
- - win_service_desktop_disable_again.username == 'LocalSystem'
- - win_service_desktop_disable_again.desktop_interact == False
-
-- name: set desktop interaction to enabled with current user as LocalSystem
- win_service:
- name: "{{test_win_service_name}}"
- desktop_interact: True
- register: win_service_desktop_enable
-
-- name: check that desktop iteraction has been enabled
- assert:
- that:
- - win_service_desktop_enable is changed
- - win_service_desktop_enable.username == 'LocalSystem'
- - win_service_desktop_enable.desktop_interact == True
-
-- name: set desktop interaction to enabled with current user as LocalSystem again
- win_service:
- name: "{{test_win_service_name}}"
- desktop_interact: True
- register: win_service_desktop_enable_again
-
-- name: check that desktop iteraction has been enabled again
- assert:
- that:
- - win_service_desktop_enable_again is not changed
- - win_service_desktop_enable_again.username == 'LocalSystem'
- - win_service_desktop_enable_again.desktop_interact == True
-
-- name: set service username to current user
- win_service:
- name: "{{test_win_service_name}}"
- username: "{{ansible_user}}"
- password: "{{ansible_password}}"
- register: win_service_change_password_current_user
-
-- name: check that the service user has been set to current user
- assert:
- that:
- - win_service_change_password_current_user is changed
- - win_service_change_password_current_user.username|lower == '.\\{{ansible_user|lower}}'
- - win_service_change_password_current_user.desktop_interact == False
-
-- name: set service username to current user again
- win_service:
- name: "{{test_win_service_name}}"
- username: "{{ansible_user}}"
- password: "{{ansible_password}}"
- register: win_service_change_password_current_user_again
-
-- name: check that the service user has been set to current user and nothing changed
- assert:
- that:
- - win_service_change_password_current_user_again is not changed
- - win_service_change_password_current_user_again.username|lower == '.\\{{ansible_user|lower}}'
- - win_service_change_password_current_user_again.desktop_interact == False
-
-- name: set service display name
- win_service:
- name: "{{test_win_service_name}}"
- display_name: Test Service New
- register: win_service_display_name
-
-- name: check that the service display name has been changed
- assert:
- that:
- - win_service_display_name is changed
- - win_service_display_name.display_name == 'Test Service New'
-
-- name: set service display name again
- win_service:
- name: "{{test_win_service_name}}"
- display_name: Test Service New
- register: win_service_display_name_again
-
-- name: check that the service display name has been changed again
- assert:
- that:
- - win_service_display_name_again is not changed
- - win_service_display_name_again.display_name == 'Test Service New'
-
-- name: set service description
- win_service:
- name: "{{test_win_service_name}}"
- description: New Description
- register: win_service_description
-
-- name: check that the service description has been changed
- assert:
- that:
- - win_service_description is changed
- - win_service_description.description == 'New Description'
-
-- name: set service description again
- win_service:
- name: "{{test_win_service_name}}"
- description: New Description
- register: win_service_description_again
-
-- name: check that the service description has been changed again
- assert:
- that:
- - win_service_description_again is not changed
- - win_service_description_again.description == 'New Description'
-
-- name: set service path
- win_service:
- name: "{{test_win_service_name}}"
- path: C:\temp\test.exe
- register: win_service_path
-
-- name: check that the service path has been changed
- assert:
- that:
- - win_service_path is changed
- - win_service_path.path == 'C:\\temp\\test.exe'
-
-- name: set service path again
- win_service:
- name: "{{test_win_service_name}}"
- path: C:\temp\test.exe
- register: win_service_path_again
-
-- name: check that the service path has been changed again
- assert:
- that:
- - win_service_path_again is not changed
- - win_service_path_again.path == 'C:\\temp\\test.exe'
-
-- name: set service path with quotes and env var
- win_service:
- name: "{{test_win_service_name}}"
- path: '"%TEST_SERVICE_PATH%\test.exe"'
- register: win_service_env_quote_path
- environment:
- TEST_SERVICE_PATH: C:\temp
-
-- name: check that the quoted service path has been changed
- assert:
- that:
- - win_service_env_quote_path is changed
- - win_service_env_quote_path.path == '"C:\\temp\\test.exe"'
-
-- name: set service path with quotes and env var again
- win_service:
- name: "{{test_win_service_name}}"
- path: '"%TEST_SERVICE_PATH%\test.exe"'
- register: win_service_env_quote_path_again
- environment:
- TEST_SERVICE_PATH: C:\temp
-
-- name: check that the quoted service path has been changed again
- assert:
- that:
- - win_service_env_quote_path_again is not changed
- - win_service_env_quote_path_again.path == '"C:\\temp\\test.exe"'
-
-- name: revert original service path back to normal
- win_service:
- name: "{{test_win_service_name}}"
- path: "{{test_win_service_path}}"
-
-- name: create new second dependency parent service
- win_service:
- name: TestServiceParent2
- display_name: Test Service Parent 2
- path: "{{test_win_service_path}}"
-
-- name: create new dependency service
- win_service:
- name: TestServiceDependency
- display_name: Test Service Dependency
- path: "{{test_win_service_path}}"
- dependencies: "{{test_win_service_name}}"
- register: win_service_dependency_string
-
-- name: check that the service with a dependency has been created
- assert:
- that:
- - win_service_dependency_string is changed
- - win_service_dependency_string.dependencies == ['{{test_win_service_name}}']
-
-- name: create new dependencys service again
- win_service:
- name: TestServiceDependency
- dependencies: "{{test_win_service_name}}"
- register: win_service_dependency_string_again
-
-- name: check that the service with a dependency has been created again
- assert:
- that:
- - win_service_dependency_string_again is not changed
- - win_service_dependency_string_again.dependencies == ['{{test_win_service_name}}']
-
-- name: add another dependency to service
- win_service:
- name: TestServiceDependency
- dependencies: ['TestServiceParent2']
- dependency_action: add
- register: win_service_dependency_add
-
-- name: check that the service with a dependency has been added
- assert:
- that:
- - win_service_dependency_add is changed
- - win_service_dependency_add.dependencies == ['TestServiceParent2', '{{test_win_service_name}}']
-
-- name: add another dependency to service again
- win_service:
- name: TestServiceDependency
- dependencies: ['TestServiceParent2']
- dependency_action: add
- register: win_service_dependency_add_again
-
-- name: check that the service with a dependency has been added again
- assert:
- that:
- - win_service_dependency_add_again is not changed
- - win_service_dependency_add_again.dependencies == ['TestServiceParent2', '{{test_win_service_name}}']
-
-- name: remove another dependency to service
- win_service:
- name: TestServiceDependency
- dependencies: ['TestServiceParent2']
- dependency_action: remove
- register: win_service_dependency_add
-
-- name: check that the service with a dependency has been remove
- assert:
- that:
- - win_service_dependency_add is changed
- - win_service_dependency_add.dependencies == ['{{test_win_service_name}}']
-
-- name: remove another dependency to service again
- win_service:
- name: TestServiceDependency
- dependencies: ['TestServiceParent2']
- dependency_action: remove
- register: win_service_dependency_add_again
-
-- name: check that the service with a dependency has been removed again
- assert:
- that:
- - win_service_dependency_add_again is not changed
- - win_service_dependency_add_again.dependencies == ['{{test_win_service_name}}']
-
-- name: set dependency with a list
- win_service:
- name: TestServiceDependency
- dependencies: ['{{test_win_service_name}}', 'TestServiceParent2']
- dependency_action: set
- register: win_service_dependency_set_list
-
-- name: check that the service with dependencies has been set
- assert:
- that:
- - win_service_dependency_set_list is changed
- - win_service_dependency_set_list.dependencies == ['TestServiceParent2', '{{test_win_service_name}}']
-
-- name: make sure all services are stopped, set to LocalSystem and set to auto start before next test
- win_service:
- name: "{{item}}"
- force_dependent_services: True
- state: stopped
- start_mode: auto
- username: LocalSystem
- password: ""
- with_items:
- - '{{test_win_service_name}}'
- - TestServiceParent2
- - TestServiceDependency
-
-- name: start up dependency service
- win_service:
- name: TestServiceDependency
- state: started
-
-- name: wait 5 seconds for service to propagate service startup
- pause:
- seconds: 5
-
-- name: get stat of 1st parent service
- win_service:
- name: "{{test_win_service_name}}"
- register: win_service_parent1_stat
-
-- name: get stat of 2nd parent service
- win_service:
- name: TestServiceParent2
- register: win_service_parent2_stat
-
-- name: get stat of dependent service
- win_service:
- name: TestServiceDependency
- register: win_service_dependent_stat
-
-- name: check that the dependency services started correctly and have the correct stats
- assert:
- that:
- - win_service_parent1_stat.state == 'running'
- - win_service_parent2_stat.state == 'running'
- - win_service_dependent_stat.state == 'running'
- - win_service_parent1_stat.depended_by == ['TestServiceDependency']
- - win_service_parent2_stat.depended_by == ['TestServiceDependency']
-
-- name: fail to remove service with dependencies
- win_service:
- name: "{{test_win_service_name}}"
- state: absent
- register: win_service_removed_failed
- failed_when: win_service_removed_failed.msg != "Cannot stop service 'Test Service New (" + test_win_service_name + ")' because it has dependent services. It can only be stopped if the Force flag is set."
-
-- name: remove the service while ignoring dependencies
- win_service:
- name: "{{test_win_service_name}}"
- force_dependent_services: True
- state: absent
- register: win_service_removed
-
-- name: check that removing the service while ignoring dependencies succeeds with changes
- assert:
- that:
- - win_service_removed is changed
- - win_service_removed.exists == False
- - win_service_removed.description is not defined
- - win_service_removed.display_name is not defined
- - win_service_removed.name is not defined
- - win_service_removed.path is not defined
- - win_service_removed.start_mode is not defined
- - win_service_removed.state is not defined
- - win_service_removed.username is not defined
-
-- name: create new pausable dummy test service
- win_service:
- name: "{{test_win_service_name}}"
- path: "{{test_win_service_path}}"
- display_name: "{{test_win_service_display_name}}"
- description: "{{test_win_service_description}}"
- state: started
- register: stat_pausable_service
-
-- name: assert get details on a pausable service
- assert:
- that:
- - stat_pausable_service.can_pause_and_continue == True
-
-- name: pause a service check
- win_service:
- name: '{{test_win_service_name}}'
- state: paused
- register: win_service_paused_check
- check_mode: yes
-
-- name: assert pause a service check
- assert:
- that:
- - win_service_paused_check is changed
- - win_service_paused_check.state == 'running'
-
-- name: pause a service
- win_service:
- name: '{{test_win_service_name}}'
- state: paused
- register: win_service_paused
-
-- name: assert pause a service
- assert:
- that:
- - win_service_paused is changed
- - win_service_paused.state == 'paused'
-
-- name: pause a service again
- win_service:
- name: '{{test_win_service_name}}'
- state: paused
- register: win_service_paused_again
-
-- name: assert pause a service again
- assert:
- that:
- - win_service_paused_again is not changed
-
-- name: start a paused service check
- win_service:
- name: '{{test_win_service_name}}'
- state: started
- register: start_paused_service_check
- check_mode: yes
-
-- name: assert start a paused service check
- assert:
- that:
- - start_paused_service_check is changed
- - start_paused_service_check.state == 'paused'
-
-- name: start a paused service
- win_service:
- name: '{{test_win_service_name}}'
- state: started
- register: start_paused_service
-
-- name: assert start a paused service
- assert:
- that:
- - start_paused_service is changed
- - start_paused_service.state == 'running'
-
-- name: pause service for next test
- win_service:
- name: '{{test_win_service_name}}'
- state: paused
-
-- name: stop a paused service check
- win_service:
- name: '{{test_win_service_name}}'
- state: stopped
- force_dependent_services: True
- register: stop_paused_service_check
- check_mode: yes
-
-- name: assert stop a paused service check
- assert:
- that:
- - stop_paused_service_check is changed
- - stop_paused_service_check.state == 'paused'
-
-- name: stop a paused service
- win_service:
- name: '{{test_win_service_name}}'
- state: stopped
- force_dependent_services: True
- register: stop_paused_service
-
-- name: assert stop a paused service
- assert:
- that:
- - stop_paused_service is changed
- - stop_paused_service.state == 'stopped'
-
-- name: fail to pause a stopped service check
- win_service:
- name: '{{test_win_service_name}}'
- state: paused
- register: fail_pause_stopped_service
- failed_when: "fail_pause_stopped_service.msg != 'failed to pause service ' + test_win_service_name + ': The service does not support pausing'"
diff --git a/test/integration/targets/win_service_info/aliases b/test/integration/targets/win_service_info/aliases
deleted file mode 100644
index 71fee86193..0000000000
--- a/test/integration/targets/win_service_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group7
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_service_info/defaults/main.yml b/test/integration/targets/win_service_info/defaults/main.yml
deleted file mode 100644
index 0da553d9b2..0000000000
--- a/test/integration/targets/win_service_info/defaults/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-test_path: '{{ remote_tmp_dir }}\win_service_info .ÅÑŚÌβŁÈ [$!@^&test(;)]'
-service_url: https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/win_service/SleepService.exe
-
-service_name1: ansible_service_info_test
-service_name2: ansible_service_info_test2
-service_name3: ansible_service_info_other
-service_names:
-- '{{ service_name1 }}'
-- '{{ service_name2 }}'
-- '{{ service_name3 }}'
diff --git a/test/integration/targets/win_service_info/handlers/main.yml b/test/integration/targets/win_service_info/handlers/main.yml
deleted file mode 100644
index ee2d93eb19..0000000000
--- a/test/integration/targets/win_service_info/handlers/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: remove test service
- win_service:
- name: '{{ item }}'
- state: absent
- loop: '{{ service_names }}'
diff --git a/test/integration/targets/win_service_info/meta/main.yml b/test/integration/targets/win_service_info/meta/main.yml
deleted file mode 100644
index 9f37e96cd9..0000000000
--- a/test/integration/targets/win_service_info/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- setup_remote_tmp_dir
diff --git a/test/integration/targets/win_service_info/tasks/main.yml b/test/integration/targets/win_service_info/tasks/main.yml
deleted file mode 100644
index d393322236..0000000000
--- a/test/integration/targets/win_service_info/tasks/main.yml
+++ /dev/null
@@ -1,206 +0,0 @@
----
-- name: ensure test directory exists
- win_file:
- path: '{{ test_path }}'
- state: directory
-
-- name: download test binary for services
- win_get_url:
- url: '{{ service_url }}'
- dest: '{{ test_path }}\SleepService.exe'
-
-- name: create test service
- win_service:
- name: '{{ item }}'
- path: '"{{ test_path }}\SleepService.exe"'
- state: stopped
- loop: '{{ service_names }}'
- notify: remove test service
-
-- name: test we can get info for all services
- win_service_info:
- register: all_actual
- check_mode: yes # tests that this will run in check mode
-
-- name: assert test we can get info for all services
- assert:
- that:
- - not all_actual is changed
- - all_actual.exists
- - all_actual.services | length > 0
-
-- name: test info on a missing service
- win_service_info:
- name: ansible_service_info_missing
- register: missing_service
-
-- name: assert test info on a missing service
- assert:
- that:
- - not missing_service is changed
- - not missing_service.exists
-
-- name: test info on a single service
- win_service_info:
- name: '{{ service_name1 }}'
- register: specific_service
-
-- name: assert test info on single service
- assert:
- that:
- - not specific_service is changed
- - specific_service.exists
- - specific_service.services | length == 1
- - specific_service.services[0].checkpoint == 0
- - specific_service.services[0].controls_accepted == []
- - specific_service.services[0].dependencies == []
- - specific_service.services[0].dependency_of == []
- - specific_service.services[0].description == None
- - specific_service.services[0].desktop_interact == False
- - specific_service.services[0].display_name == service_name1
- - specific_service.services[0].error_control == 'normal'
- - specific_service.services[0].failure_actions == []
- - specific_service.services[0].failure_actions_on_non_crash_failure == False
- - specific_service.services[0].failure_command == None
- - specific_service.services[0].failure_reboot_msg == None
- - specific_service.services[0].failure_reset_period_sec == 0
- - specific_service.services[0].launch_protection == 'none'
- - specific_service.services[0].load_order_group == ""
- - specific_service.services[0].name == service_name1
- - specific_service.services[0].path == '"' ~ test_path + '\\SleepService.exe"'
- - specific_service.services[0].pre_shutdown_timeout_ms is defined # Looks like the default for New-Service differs per OS version
- - specific_service.services[0].preferred_node == None
- - specific_service.services[0].process_id == 0
- - specific_service.services[0].required_privileges == []
- - specific_service.services[0].service_exit_code == 0
- - specific_service.services[0].service_flags == []
- - specific_service.services[0].service_type == 'win32_own_process'
- - specific_service.services[0].sid_info == 'none'
- - specific_service.services[0].start_mode == 'auto'
- - specific_service.services[0].state == 'stopped'
- - specific_service.services[0].triggers == []
- - specific_service.services[0].username == 'NT AUTHORITY\SYSTEM'
- - specific_service.services[0].wait_hint_ms == 0
- - specific_service.services[0].win32_exit_code == 1077
-
-- name: test info on services matching wildcard
- win_service_info:
- name: ansible_service_info_t* # should match service_name 1 and 2, but not 3
- register: wildcard_service
-
-- name: assert test info on services matching wildcard
- assert:
- that:
- - not wildcard_service is changed
- - wildcard_service.exists
- - wildcard_service.services | length == 2
- - wildcard_service.services[0].name == service_name1
- - wildcard_service.services[1].name == service_name2
-
-- name: modify service1 to depend on service 2
- win_service:
- name: '{{ service_name1 }}'
- state: stopped
- dependencies:
- - '{{ service_name2 }}'
-
-- name: edit basic settings for service 2
- win_service:
- dependencies:
- - '{{ service_name3 }}'
- description: Service description
- display_name: Ansible Service Display Name
- name: '{{ service_name2 }}'
- state: stopped
-
-# TODO: move this back into the above once win_service supports them
-- name: edit complex settings for service 2
- win_command: sc.exe {{ item.action }} {{ service_name2 }} {{ item.args }}
- with_items:
- - action: config
- args: type= share type= interact error= ignore group= "My group" start= delayed-auto
- - action: failure
- args: reset= 86400 reboot= "Reboot msg" command= "Command line" actions= run/500/run/600/restart/700/reboot/800
- - action: failureflag
- args: 1
- - action: sidtype
- args: unrestricted
- - action: privs
- args: SeBackupPrivilege/SeRestorePrivilege
- - action: triggerinfo
- args: start/namedpipe/abc start/namedpipe/def start/custom/0e0682e2-9951-4e6d-a36a-a0047e616f28/11223344/aabbccdd start/strcustom/c2961e88-c1f4-4d97-b581-219c852e1c7d/11223344/aabbccdd start/portopen/1234;tcp;imagepath;servicename
-
-- name: get info of advanced service using display name
- win_service_info:
- name: Ansible Service Display Name
- register: adv_service
-
-- name: assert get info of advanced service using display_name
- assert:
- that:
- - not adv_service is changed
- - adv_service.exists
- - adv_service.services | length == 1
- - adv_service.services[0].dependencies == [service_name3]
- - adv_service.services[0].dependency_of == [service_name1]
- - adv_service.services[0].description == 'Service description'
- - adv_service.services[0].desktop_interact == True
- - adv_service.services[0].error_control == 'ignore'
- - adv_service.services[0].failure_actions | length == 4
- - adv_service.services[0].failure_actions[0].delay_ms == 500
- - adv_service.services[0].failure_actions[0].type == 'run_command'
- - adv_service.services[0].failure_actions[1].delay_ms == 600
- - adv_service.services[0].failure_actions[1].type == 'run_command'
- - adv_service.services[0].failure_actions[2].delay_ms == 700
- - adv_service.services[0].failure_actions[2].type == 'restart'
- - adv_service.services[0].failure_actions[3].delay_ms == 800
- - adv_service.services[0].failure_actions[3].type == 'reboot'
- - adv_service.services[0].failure_actions_on_non_crash_failure == True
- - adv_service.services[0].failure_command == 'Command line'
- - adv_service.services[0].failure_reboot_msg == 'Reboot msg'
- - adv_service.services[0].failure_reset_period_sec == 86400
- - adv_service.services[0].load_order_group == 'My group'
- - adv_service.services[0].required_privileges == ['SeBackupPrivilege', 'SeRestorePrivilege']
- - adv_service.services[0].service_type == 'win32_share_process'
- - adv_service.services[0].sid_info == 'unrestricted'
- - adv_service.services[0].start_mode == 'delayed'
- - adv_service.services[0].triggers | length == 5
- - adv_service.services[0].triggers[0].action == 'start_service'
- - adv_service.services[0].triggers[0].data_items | length == 1
- - adv_service.services[0].triggers[0].data_items[0].data == 'abc'
- - adv_service.services[0].triggers[0].data_items[0].type == 'string'
- - adv_service.services[0].triggers[0].sub_type == 'named_pipe_event'
- - adv_service.services[0].triggers[0].sub_type_guid == '1f81d131-3fac-4537-9e0c-7e7b0c2f4b55'
- - adv_service.services[0].triggers[0].type == 'network_endpoint'
- - adv_service.services[0].triggers[1].action == 'start_service'
- - adv_service.services[0].triggers[1].data_items | length == 1
- - adv_service.services[0].triggers[1].data_items[0].data == 'def'
- - adv_service.services[0].triggers[1].data_items[0].type == 'string'
- - adv_service.services[0].triggers[1].sub_type == 'named_pipe_event'
- - adv_service.services[0].triggers[1].sub_type_guid == '1f81d131-3fac-4537-9e0c-7e7b0c2f4b55'
- - adv_service.services[0].triggers[1].type == 'network_endpoint'
- - adv_service.services[0].triggers[2].action == 'start_service'
- - adv_service.services[0].triggers[2].data_items | length == 2
- - adv_service.services[0].triggers[2].data_items[0].data == 'ESIzRA=='
- - adv_service.services[0].triggers[2].data_items[0].type == 'binary'
- - adv_service.services[0].triggers[2].data_items[1].data == 'qrvM3Q=='
- - adv_service.services[0].triggers[2].data_items[1].type == 'binary'
- - adv_service.services[0].triggers[2].sub_type == 'custom'
- - adv_service.services[0].triggers[2].sub_type_guid == '0e0682e2-9951-4e6d-a36a-a0047e616f28'
- - adv_service.services[0].triggers[2].type == 'custom'
- - adv_service.services[0].triggers[3].action == 'start_service'
- - adv_service.services[0].triggers[3].data_items | length == 2
- - adv_service.services[0].triggers[3].data_items[0].data == '11223344'
- - adv_service.services[0].triggers[3].data_items[0].type == 'string'
- - adv_service.services[0].triggers[3].data_items[1].data == 'aabbccdd'
- - adv_service.services[0].triggers[3].data_items[1].type == 'string'
- - adv_service.services[0].triggers[3].sub_type == 'custom'
- - adv_service.services[0].triggers[3].sub_type_guid == 'c2961e88-c1f4-4d97-b581-219c852e1c7d'
- - adv_service.services[0].triggers[3].type == 'custom'
- - adv_service.services[0].triggers[4].action == 'start_service'
- - adv_service.services[0].triggers[4].data_items | length == 1
- - adv_service.services[0].triggers[4].data_items[0].data == ['1234', 'tcp', 'imagepath', 'servicename']
- - adv_service.services[0].triggers[4].data_items[0].type == 'string'
- - adv_service.services[0].triggers[4].sub_type == 'firewall_port_open'
- - adv_service.services[0].triggers[4].sub_type_guid == 'b7569e07-8421-4ee0-ad10-86915afdad09'
- - adv_service.services[0].triggers[4].type == 'firewall_port_event'
diff --git a/test/integration/targets/win_setup/aliases b/test/integration/targets/win_setup/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_setup/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_setup/tasks/main.yml b/test/integration/targets/win_setup/tasks/main.yml
deleted file mode 100644
index a81a00f1ae..0000000000
--- a/test/integration/targets/win_setup/tasks/main.yml
+++ /dev/null
@@ -1,141 +0,0 @@
-# test code for the setup module when using winrm connection
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: test setup module
- action: setup
- register: setup_result
-
-- name: check windows setup result
- assert:
- that:
- - setup_result is not failed
- - setup_result is not changed
- - setup_result.ansible_facts
- - setup_result.ansible_facts.ansible_os_family == 'Windows'
- - setup_result.ansible_facts.ansible_date_time
- - setup_result.ansible_facts.ansible_date_time.date
- - setup_result.ansible_facts.ansible_date_time.year
- - setup_result.ansible_facts.ansible_date_time.month
- - setup_result.ansible_facts.ansible_date_time.day
- - setup_result.ansible_facts.ansible_date_time.hour is defined
- - setup_result.ansible_facts.ansible_date_time.minute is defined
- - setup_result.ansible_facts.ansible_date_time.iso8601
- - setup_result.ansible_facts.ansible_distribution
- - setup_result.ansible_facts.ansible_distribution_version
- - setup_result.ansible_facts.ansible_fqdn
- - setup_result.ansible_facts.ansible_hostname
- - setup_result.ansible_facts.ansible_ip_addresses
- - setup_result.ansible_facts.ansible_system
- - setup_result.ansible_facts.ansible_memtotal_mb
- - setup_result.ansible_facts.ansible_interfaces
- - setup_result.ansible_facts.ansible_interfaces[0]
- - setup_result.ansible_facts.ansible_interfaces[0].interface_name
- - setup_result.ansible_facts.ansible_interfaces[0].connection_name
- - setup_result.ansible_facts.ansible_interfaces[0].interface_index
- - setup_result.ansible_facts.ansible_architecture
- - setup_result.ansible_facts.ansible_os_name
- - setup_result.ansible_facts.ansible_powershell_version
- - setup_result.ansible_facts.gather_subset is defined
- - setup_result.ansible_facts.gather_subset[0] == 'all'
- - setup_result.ansible_facts.module_setup == true
-
-- name: check setup result only when using https
- assert:
- that:
- - "setup_result.ansible_facts.ansible_win_rm_certificate_expires"
- when: ansible_ssh_port|default(5986) != 5985
-
-- name: test gather_subset "!all"
- setup:
- gather_subset: '!all'
- register: setup_result
-
-- name: verify that some known "all" keys are missing (should just be "min" subset)
- assert:
- that:
- - setup_result is not failed
- - setup_result is not changed
- - setup_result.ansible_facts is defined
- - setup_result.ansible_facts.gather_subset[0] == '!all'
- - setup_result.ansible_facts.gather_subset is defined
- - setup_result.ansible_facts.ansible_ip_addresses is not defined
- - setup_result.ansible_facts.ansible_interfaces is not defined
-
-- name: test gather_subset "!all,!min" with list
- setup:
- gather_subset:
- - '!all'
- - '!min'
- register: setup_result
-
-- name: verify that only status keys are returned
- assert:
- that:
- - setup_result is not failed
- - setup_result is not changed
- - setup_result.ansible_facts is defined
- - setup_result.ansible_facts.gather_subset is defined
- - setup_result.ansible_facts.gather_subset[0] == '!all'
- - setup_result.ansible_facts.gather_subset[1] == '!min'
- - setup_result.ansible_facts.keys() | list | union(['gather_subset','module_setup']) | length == 2
-
-- name: test gather_subset "!all,!min,interfaces" with list
- setup:
- gather_subset:
- - '!all'
- - '!min'
- - interfaces
- register: setup_result
-
-- name: verify that only status keys and ansible_interfaces are returned
- assert:
- that:
- - setup_result is not failed
- - setup_result is not changed
- - setup_result.ansible_facts is defined
- - setup_result.ansible_facts.gather_subset is defined
- - setup_result.ansible_facts.gather_subset[0] == '!all'
- - setup_result.ansible_facts.gather_subset[1] == '!min'
- - setup_result.ansible_facts.gather_subset[2] == 'interfaces'
- - setup_result.ansible_facts.ansible_interfaces
- - setup_result.ansible_facts.ansible_interfaces[0]
- - setup_result.ansible_facts.ansible_interfaces[0].interface_name
- - setup_result.ansible_facts.ansible_interfaces[0].connection_name
- - setup_result.ansible_facts.ansible_interfaces[0].interface_index
- - setup_result.ansible_facts.keys() | list | union(['ansible_interfaces','gather_subset','module_setup']) | length == 3
-
-- name: test gather_subset "!all,!min,bogus" with list
- setup:
- gather_subset:
- - '!all'
- - '!min'
- - bogus
- register: setup_result
-
-- name: verify that only status keys are returned and that we got a warning
- assert:
- that:
- - setup_result is not failed
- - setup_result is not changed
- - setup_result.ansible_facts is defined
- - setup_result.ansible_facts.gather_subset is defined
- - setup_result.ansible_facts.gather_subset[0] == '!all'
- - setup_result.ansible_facts.gather_subset[1] == '!min'
- - setup_result.ansible_facts.keys() | list | union(['gather_subset','module_setup']) | length == 2
- - setup_result.warnings | length == 1
- - setup_result.warnings[0] | regex_search('bogus')
diff --git a/test/integration/targets/win_share/aliases b/test/integration/targets/win_share/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_share/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_share/defaults/main.yml b/test/integration/targets/win_share/defaults/main.yml
deleted file mode 100644
index 0b6c59a3dd..0000000000
--- a/test/integration/targets/win_share/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-test_win_share_path: C:\ansible\win_share
-test_win_share_name: test share
diff --git a/test/integration/targets/win_share/tasks/main.yml b/test/integration/targets/win_share/tasks/main.yml
deleted file mode 100644
index 12aef5ece0..0000000000
--- a/test/integration/targets/win_share/tasks/main.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-- name: check if -SmbShare cmdlets are available
- win_command: powershell.exe "Get-Command -Name Get-SmbShare"
- register: module_available
- failed_when: False
-
-- name: check that module fails with helpful message on older hosts
- win_share:
- name: test
- register: module_not_supported
- when: module_available.rc == 1
- failed_when: module_not_supported.msg != 'The current host does not support the -SmbShare cmdlets required by this module. Please run on Server 2012 or Windows 8 and later'
- check_mode: yes
-
-# Run the actual tests
-- block:
- # setup for tests
- - name: create testing folder
- win_file:
- path: "{{test_win_share_path}}"
- state: directory
-
- - name: ensure testing folder isn't shared as a baseline
- win_share:
- name: "{{test_win_share_name}}"
- state: absent
-
- - name: run tests on hosts that support it
- include_tasks: tests.yml
- when: module_available.rc == 0
-
- always:
- # cleanup
- - name: ensure testing folder isn't shared anymore
- win_share:
- name: "{{test_win_share_name}}"
- state: absent
-
- - name: remove testing folder
- win_file:
- path: "{{test_win_share_path}}"
- state: absent
- when: module_available.rc == 0
diff --git a/test/integration/targets/win_share/tasks/tests.yml b/test/integration/targets/win_share/tasks/tests.yml
deleted file mode 100644
index 543f7bae89..0000000000
--- a/test/integration/targets/win_share/tasks/tests.yml
+++ /dev/null
@@ -1,486 +0,0 @@
----
-- name: create share check
- win_share:
- name: "{{test_win_share_name}}"
- path: "{{test_win_share_path}}"
- state: present
- register: create_share_check
- check_mode: yes
-
-- name: check if share exists check
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: create_share_actual_check
-
-- name: assert create share check
- assert:
- that:
- - create_share_check is changed
- - create_share_actual_check.stdout_lines == []
-
-- name: create share
- win_share:
- name: "{{test_win_share_name}}"
- path: "{{test_win_share_path}}"
- state: present
- register: create_share
-
-- name: check if share exists
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: create_share_actual
-
-- name: assert create share
- assert:
- that:
- - create_share is changed
- - create_share_actual.stdout_lines != []
-
-- name: create share again
- win_share:
- name: "{{test_win_share_name}}"
- path: "{{test_win_share_path}}"
- state: present
- register: create_share_again
-
-- name: check if share exists again
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: create_share_actual_again
-
-- name: assert create share again
- assert:
- that:
- - create_share_again is not changed
- - create_share_actual_again.stdout_lines == create_share_actual.stdout_lines
-
-- name: set caching mode to Programs check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- caching_mode: Programs
- register: caching_mode_programs_check
- check_mode: yes
-
-- name: get actual caching mode check
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').CachingMode"
- register: caching_mode_programs_actual_check
-
-- name: assert caching mode to Programs check
- assert:
- that:
- - caching_mode_programs_check is changed
- - caching_mode_programs_actual_check.stdout == "Manual\r\n"
-
-- name: set caching mode to Programs
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- caching_mode: Programs
- register: caching_mode_programs
-
-- name: get actual caching mode
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').CachingMode"
- register: caching_mode_programs_actual
-
-- name: assert caching mode to Programs
- assert:
- that:
- - caching_mode_programs is changed
- - caching_mode_programs_actual.stdout == "Programs\r\n"
-
-- name: set caching mode to Programs again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- caching_mode: Programs
- register: caching_mode_programs_again
-
-- name: get actual caching mode again
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').CachingMode"
- register: caching_mode_programs_actual_again
-
-- name: assert caching mode to Programs again
- assert:
- that:
- - caching_mode_programs_again is not changed
- - caching_mode_programs_actual_again.stdout == "Programs\r\n"
-
-- name: set encryption on share check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- encrypt: True
- register: encrypt_on_check
- check_mode: yes
-
-- name: get actual encrypt mode check
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').EncryptData"
- register: encrypt_on_actual_check
-
-- name: assert set encryption on check
- assert:
- that:
- - encrypt_on_check is changed
- - encrypt_on_actual_check.stdout == "False\r\n"
-
-- name: set encryption on share
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- encrypt: True
- register: encrypt_on
-
-- name: get actual encrypt mode
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').EncryptData"
- register: encrypt_on_actual
-
-- name: assert set encryption on
- assert:
- that:
- - encrypt_on is changed
- - encrypt_on_actual.stdout == "True\r\n"
-
-- name: set encryption on share again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- encrypt: True
- register: encrypt_on_again
-
-- name: get actual encrypt mode again
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').EncryptData"
- register: encrypt_on_actual
-
-- name: assert set encryption on again
- assert:
- that:
- - encrypt_on_again is not changed
- - encrypt_on_actual.stdout == "True\r\n"
-
-- name: set description check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- description: description
- register: change_decription_check
- check_mode: yes
-
-- name: get actual description check
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').Description"
- register: change_description_actual_check
-
-- name: assert change description check
- assert:
- that:
- - change_decription_check is changed
- - change_description_actual_check.stdout == "\r\n"
-
-- name: set description
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- description: description
- register: change_decription
-
-- name: get actual description
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').Description"
- register: change_description_actual
-
-- name: assert change description
- assert:
- that:
- - change_decription is changed
- - change_description_actual.stdout == "description\r\n"
-
-- name: set description again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- description: description
- register: change_decription_again
-
-- name: get actual description again
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').Description"
- register: change_description_actual_again
-
-- name: assert change description again
- assert:
- that:
- - change_decription_again is not changed
- - change_description_actual_again.stdout == "description\r\n"
-
-- name: set allow list check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: True
- register: allow_list_check
- check_mode: yes
-
-- name: get actual allow listing check
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: allow_list_actual_check
-
-- name: assert allow list check
- assert:
- that:
- - allow_list_check is changed
- - allow_list_actual_check.stdout == "AccessBased\r\n"
-
-- name: set allow list
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: True
- register: allow_list
-
-- name: get actual allow listing
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: allow_list_actual
-
-- name: assert allow list
- assert:
- that:
- - allow_list is changed
- - allow_list_actual.stdout == "Unrestricted\r\n"
-
-- name: set allow list again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: True
- register: allow_list_again
-
-- name: get actual allow listing again
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: allow_list_actual_again
-
-- name: assert allow list check again
- assert:
- that:
- - allow_list_again is not changed
- - allow_list_actual_again.stdout == "Unrestricted\r\n"
-
-- name: set deny list check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: False
- register: deny_list_check
- check_mode: yes
-
-- name: get actual deny listing check
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: deny_list_actual_check
-
-- name: assert deny list check
- assert:
- that:
- - deny_list_check is changed
- - deny_list_actual_check.stdout == "Unrestricted\r\n"
-
-- name: set deny list
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: False
- register: deny_list
-
-- name: get actual deny listing
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: deny_list_actual
-
-- name: assert deny list
- assert:
- that:
- - deny_list is changed
- - deny_list_actual.stdout == "AccessBased\r\n"
-
-- name: set deny list again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- list: False
- register: deny_list_again
-
-- name: get actual deny listing again
- win_command: powershell.exe "(Get-SmbShare -Name '{{test_win_share_name}}').FolderEnumerationMode"
- register: deny_list_actual_again
-
-- name: assert deny list again
- assert:
- that:
- - deny_list_again is not changed
- - deny_list_actual_again.stdout == "AccessBased\r\n"
-
-- name: set ACLs on share check
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- full: Administrators
- change: Users
- read: Guests
- deny: Remote Desktop Users
- register: set_acl_check
- check_mode: yes
-
-- name: get actual share ACLs check
- win_shell: foreach ($acl in Get-SmbShareAccess -Name '{{test_win_share_name}}') { Write-Host "$($acl.AccessRight)|$($acl.AccessControlType)|$($acl.AccountName)" }
- register: set_acl_actual_check
-
-- name: assert set ACLs on share check
- assert:
- that:
- - set_acl_check is changed
- - set_acl_actual_check.stdout == "Full|Deny|Everyone\n"
-
-- name: set ACLs on share
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- full: Administrators
- change: Users
- read: Guests
- deny: Remote Desktop Users
- register: set_acl
-
-- name: get actual share ACLs
- win_shell: foreach ($acl in Get-SmbShareAccess -Name '{{test_win_share_name}}') { Write-Host "$($acl.AccessRight)|$($acl.AccessControlType)|$($acl.AccountName)" }
- register: set_acl_actual
-
-- name: assert set ACLs on share
- assert:
- that:
- - set_acl is changed
- - set_acl_actual.stdout_lines|length == 4
- - set_acl_actual.stdout_lines[0] == 'Full|Deny|BUILTIN\\Remote Desktop Users'
- - set_acl_actual.stdout_lines[1] == 'Read|Allow|BUILTIN\\Guests'
- - set_acl_actual.stdout_lines[2] == 'Change|Allow|BUILTIN\\Users'
- - set_acl_actual.stdout_lines[3] == 'Full|Allow|BUILTIN\\Administrators'
-
-- name: set ACLs on share again
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- full: Administrators
- change: Users
- read: Guests
- deny: Remote Desktop Users
- register: set_acl_again
-
-- name: get actual share ACLs again
- win_shell: foreach ($acl in Get-SmbShareAccess -Name '{{test_win_share_name}}') { Write-Host "$($acl.AccessRight)|$($acl.AccessControlType)|$($acl.AccountName)" }
- register: set_acl_actual_again
-
-- name: assert set ACLs on share again
- assert:
- that:
- - set_acl_again is not changed
- - set_acl_actual_again.stdout_lines|length == 4
- - set_acl_actual_again.stdout_lines[0] == 'Full|Deny|BUILTIN\\Remote Desktop Users'
- - set_acl_actual_again.stdout_lines[1] == 'Read|Allow|BUILTIN\\Guests'
- - set_acl_actual_again.stdout_lines[2] == 'Change|Allow|BUILTIN\\Users'
- - set_acl_actual_again.stdout_lines[3] == 'Full|Allow|BUILTIN\\Administrators'
-
-- name: Append ACLs on share
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- change: Remote Desktop Users
- rule_action: add
- register: append_acl
-
-- name: get actual share ACLs
- win_shell: foreach ($acl in Get-SmbShareAccess -Name '{{test_win_share_name}}') { Write-Host "$($acl.AccessRight)|$($acl.AccessControlType)|$($acl.AccountName)" }
- register: append_acl_actual
-
-- name: assert Append ACLs on share
- assert:
- that:
- - append_acl is changed
- - append_acl_actual.stdout_lines|length == 5
- - append_acl_actual.stdout_lines[0] == 'Full|Deny|BUILTIN\Remote Desktop Users'
- - append_acl_actual.stdout_lines[1] == 'Read|Allow|BUILTIN\\Guests'
- - append_acl_actual.stdout_lines[2] == 'Change|Allow|BUILTIN\\Users'
- - append_acl_actual.stdout_lines[3] == 'Full|Allow|BUILTIN\\Administrators'
- - append_acl_actual.stdout_lines[4] == 'Change|Allow|BUILTIN\\Remote Desktop Users'
-
-- name: Append ACLs on share (idempotent)
- win_share:
- name: "{{test_win_share_name}}"
- state: present
- path: "{{test_win_share_path}}"
- change: Remote Desktop Users
- rule_action: add
- register: append_acl_again
-
-- name: assert Append ACLs on share (idempotent)
- assert:
- that:
- - not append_acl_again is changed
-
-- name: remove share check
- win_share:
- name: "{{test_win_share_name}}"
- state: absent
- register: remove_share_check
- check_mode: yes
-
-- name: check if share is removed check
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: remove_share_actual_check
-
-- name: assert remove share check
- assert:
- that:
- - remove_share_check is changed
- - remove_share_actual_check.stdout_lines != []
-
-- name: remove share
- win_share:
- name: "{{test_win_share_name}}"
- state: absent
- register: remove_share
-
-- name: check if share is removed
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: remove_share_actual
-
-- name: assert remove share
- assert:
- that:
- - remove_share is changed
- - remove_share_actual.stdout_lines == []
-
-- name: remove share again
- win_share:
- name: "{{test_win_share_name}}"
- state: absent
- register: remove_share_again
-
-- name: check if share is removed again
- win_shell: Get-SmbShare | Where-Object { $_.Name -eq '{{test_win_share_name}}' }
- register: remove_share_actual_again
-
-- name: assert remove share again
- assert:
- that:
- - remove_share_again is not changed
- - remove_share_actual_again.stdout_lines == []
diff --git a/test/integration/targets/win_shell/aliases b/test/integration/targets/win_shell/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_shell/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_shell/tasks/main.yml b/test/integration/targets/win_shell/tasks/main.yml
deleted file mode 100644
index 38387a30ab..0000000000
--- a/test/integration/targets/win_shell/tasks/main.yml
+++ /dev/null
@@ -1,331 +0,0 @@
-- name: execute a powershell cmdlet
- win_shell: Write-Output "hello from Ansible"
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
- - shellout.cmd == 'Write-Output "hello from Ansible"'
- - shellout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.rc == 0
- - shellout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- # assertion disabled since it does not pass on Windows Server 2016
- # - shellout.stderr == ""
- - shellout.stdout == "hello from Ansible\r\n"
- - shellout.stdout_lines == ["hello from Ansible"]
-
-- name: execute a powershell cmdlet with multi-line output that uses environment with embedded quotes
- win_shell: Write-Output "hello from Ansible"; Write-Output "another line"; Write-Output "yet another line"; Write-Output "envvar was $env:taskvar"
- environment:
- taskvar: "o'doyle rules"
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
- - shellout.cmd == 'Write-Output "hello from Ansible"; Write-Output "another line"; Write-Output "yet another line"; Write-Output "envvar was $env:taskvar"'
- - shellout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.rc == 0
- - shellout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- # assertion disabled since it does not pass on Windows Server 2016
- # - shellout.stderr == ""
- - shellout.stdout == "hello from Ansible\r\nanother line\r\nyet another line\r\nenvvar was o'doyle rules\r\n"
- - shellout.stdout_lines == ["hello from Ansible","another line", "yet another line", "envvar was o'doyle rules"]
-
-- name: execute something nonexistent
- win_shell: bogus_command1234
- register: shellout
- ignore_errors: true
-
-- name: validate result
- assert:
- that:
- - shellout is failed
- - shellout.failed == true # check the failure key explicitly, since failed does magic with RC
- - shellout is changed
- - shellout.cmd == 'bogus_command1234'
- - shellout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.rc == 1
- - shellout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.stderr is search('not recognized')
- - shellout.stdout == ""
- - shellout.stdout_lines == []
-
-- name: execute something with error output
- win_shell: Write-Error "it broke"; Write-Output "some output"
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
- - shellout.cmd == 'Write-Error "it broke"; Write-Output "some output"'
- - shellout.delta is match('^\d:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.end is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.rc == 0
- - shellout.start is match('^(\d){4}\-(\d){2}\-(\d){2} (\d){2}:(\d){2}:(\d){2}.(\d){6}$')
- - shellout.stderr is search('it broke')
- - shellout.stdout == "some output\r\n"
- - shellout.stdout_lines == ["some output"]
-
-- name: ensure test file is absent
- win_file:
- path: c:\testfile.txt
- state: absent
-
-- name: run with creates, should create
- win_shell: echo $null >> c:\testfile.txt
- args:
- creates: c:\testfile.txt
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
-
-- name: run again with creates, should skip
- win_shell: echo $null >> c:\testfile.txt
- args:
- creates: c:\testfile.txt
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is skipped
- - shellout.msg is search('exists')
-
-- name: get path of pagefile
- win_shell: |
- $pagefile = $null
- $cs = Get-CimInstance -ClassName Win32_ComputerSystem
- if ($cs.AutomaticManagedPagefile) {
- $pagefile = "$($env:SystemRoot.Substring(0, 1)):\pagefile.sys"
- } else {
- $pf = Get-CimInstance -ClassName Win32_PageFileSetting
- if ($pf -ne $null) {
- $pagefile = $pf[0].Name
- }
- }
- $pagefile
- register: pagefile_path
-
-- name: test creates with hidden system file, should skip
- win_shell: echo test
- args:
- creates: '{{pagefile_path.stdout_lines[0]}}'
- register: shellout
- when: pagefile_path.stdout_lines|count != 0
-
-- name: validate result
- assert:
- that:
- - shellout is skipped
- - shellout.msg is search('exists')
- when: pagefile_path.stdout_lines|count != 0
-
-- name: ensure testfile is still present
- win_stat:
- path: c:\testfile.txt
- register: statout
-
-- name: validate result
- assert:
- that:
- - statout.stat.exists == true
-
-# https://github.com/ansible/ansible/issues/37967
-- name: test creates with file in missing directory
- win_shell: echo hi
- args:
- creates: c:\fakefolder\fakefolder2\fakefile.txt
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout.skipped is not defined
- - shellout.changed
-
-- name: run with removes, should remove
- win_shell: Remove-Item c:\testfile.txt
- args:
- removes: c:\testfile.txt
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
-
-- name: run again with removes, should skip
- win_shell: echo $null >> c:\testfile.txt
- args:
- removes: c:\testfile.txt
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is skipped
- - shellout.msg is search('does not exist')
-
-- name: run something with known nonzero exit code
- win_shell: exit 254
- register: shellout
- ignore_errors: true
-
-- name: validate result
- assert:
- that:
- - shellout is failed
- - shellout.failed == True # check the failure key explicitly, since failed does magic with RC
- - shellout.rc == 254
-
-- name: run something via cmd that will fail in powershell
- win_shell: echo line1 & echo.line2
- args:
- executable: cmd
- register: shellout
-
-- name: validate result
- assert:
- that:
- - shellout is successful
- - shellout is changed
- - shellout.rc == 0
- - shellout.stdout == "line1 \r\nline2\r\n"
- - shellout.stdout_lines == ["line1 ", "line2"]
- - shellout.stderr == ""
-
-- name: test with job to ensure that preamble-free InputEncoding is working
- win_shell: Start-Job { echo yo } | Receive-Job -Wait
- register: shellout
-
-- name: check job result
- assert:
- that:
- - shellout is successful
- - shellout.stdout_lines[0] == 'yo'
-
-- name: interleave large writes between stdout/stderr (check for buffer consumption deadlock)
- win_shell: $ba = New-Object byte[] 4096; (New-Object System.Random 32).NextBytes($ba); $text = [Convert]::ToBase64String($ba); Write-Output startout; Write-Error starterror; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Error $text; Write-Output $text; Write-Output doneout Write-Error doneerror
- register: shellout
-
-- name: ensure that the entirety of both streams were read
- assert:
- that:
- - shellout.stdout is search("startout")
- - shellout.stdout is search("doneout")
- - shellout.stderr is search("starterror")
- - shellout.stderr is search("doneerror")
-
-- name: run stdin test
- win_shell: '$string = [Console]::In.ReadToEnd(); Write-Output $string.Trim()'
- args:
- stdin: some input
- register: shellout
-
-- name: assert run stdin test
- assert:
- that:
- - shellout is changed
- - shellout.rc == 0
- - shellout.stderr == ""
- - shellout.stdout == "some input\r\n"
-
-- name: echo some non ascii characters
- win_shell: Write-Host über den Fußgängerübergang gehen
- register: nonascii_output
-
-- name: assert echo some non ascii characters
- assert:
- that:
- - nonascii_output is changed
- - nonascii_output.rc == 0
- - nonascii_output.stdout_lines|count == 1
- - nonascii_output.stdout_lines[0] == 'über den Fußgängerübergang gehen'
- - nonascii_output.stderr == ''
-
-- name: echo some non ascii characters with us-ascii output encoding
- win_shell: Write-Host über den Fußgängerübergang gehen
- args:
- output_encoding_override: us-ascii
- register: nonascii_output_us_ascii_encoding
-
-- name: assert echo some non ascii characters with us-ascii output encoding
- assert:
- that:
- - nonascii_output_us_ascii_encoding is changed
- - nonascii_output_us_ascii_encoding.rc == 0
- - nonascii_output_us_ascii_encoding.stdout_lines|count == 1
- - nonascii_output_us_ascii_encoding.stdout_lines[0] == '??ber den Fu??g??nger??bergang gehen'
- - nonascii_output_us_ascii_encoding.stderr == ''
-
-- name: execute powershell without no_profile
- win_shell: '[System.Environment]::CommandLine'
- register: no_profile
-
-- name: assert execute powershell with no_profile
- assert:
- that:
- - no_profile is successful
- - no_profile is changed
- - no_profile.cmd == "[System.Environment]::CommandLine"
- - no_profile.rc == 0
- - no_profile.stdout is match ('^"powershell.exe" -noninteractive -encodedcommand')
-
-- name: execute powershell with no_profile
- win_shell: '[System.Environment]::CommandLine'
- args:
- no_profile: yes
- register: no_profile
-
-- name: assert execute powershell with no_profile
- assert:
- that:
- - no_profile is successful
- - no_profile is changed
- - no_profile.cmd == "[System.Environment]::CommandLine"
- - no_profile.rc == 0
- - no_profile.stdout is match ('^"powershell.exe" -noprofile -noninteractive -encodedcommand')
-
-- name: create symbolic link with space in the path
- win_command: cmd.exe /c mklink /d "C:\ansible test link" C:\Windows\System32\WindowsPowerShell\v1.0
- args:
- creates: C:\ansible test link
-
-- block:
- - name: run with space in the executable path
- win_shell: '[System.Environment]::CommandLine'
- args:
- executable: C:\ansible test link\powershell
- register: space_exe
-
- - debug:
- var: space_exe.stdout|trim
-
- - name: assert run with space in the executable path
- assert:
- that:
- - space_exe is successful
- - space_exe is changed
- - space_exe.cmd == '[System.Environment]::CommandLine'
- - space_exe.rc == 0
- - space_exe.stdout|trim == '"C:\\ansible test link\\powershell.exe" /c [System.Environment]::CommandLine'
- always:
- - name: remove test symbolic link
- win_file:
- path: C:\ansible test link
- state: absent
diff --git a/test/integration/targets/win_slurp/aliases b/test/integration/targets/win_slurp/aliases
deleted file mode 100644
index 423ce39108..0000000000
--- a/test/integration/targets/win_slurp/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group2
diff --git a/test/integration/targets/win_slurp/defaults/main.yml b/test/integration/targets/win_slurp/defaults/main.yml
deleted file mode 100644
index a229fef968..0000000000
--- a/test/integration/targets/win_slurp/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_win_slurp_dir: C:\ansible\win_slurp .ÅÑŚÌβŁÈ [$!@^&test(;)] \ No newline at end of file
diff --git a/test/integration/targets/win_slurp/handlers/main.yml b/test/integration/targets/win_slurp/handlers/main.yml
deleted file mode 100644
index ced20a405c..0000000000
--- a/test/integration/targets/win_slurp/handlers/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: remove test directory
- win_file:
- path: '{{ test_win_slurp_dir }}'
- state: absent
diff --git a/test/integration/targets/win_slurp/tasks/main.yml b/test/integration/targets/win_slurp/tasks/main.yml
deleted file mode 100644
index 1956c8a899..0000000000
--- a/test/integration/targets/win_slurp/tasks/main.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-# test code for the slurp module when using winrm connection
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: create test directory
- win_file:
- path: '{{ test_win_slurp_dir }}'
- state: directory
- notify: remove test directory
-
-# removes reliance on win_copy, set back once win_copy supports glob like chars
-- name: create test file
- win_shell: |
- $file = '{{ test_win_slurp_dir }}\slurp.txt'
- if (Test-Path -LiteralPath $file) {
- Remove-Item -LiteralPath $file -Force
- }
- Set-Content -LiteralPath $file -Value 'Slurp this!'
-
-- name: test slurping an existing file
- slurp:
- src: '{{ test_win_slurp_dir }}\slurp.txt'
- register: slurp_existing
-
-- name: check slurp existing result
- assert:
- that:
- - "slurp_existing.content == 'U2x1cnAgdGhpcyENCg=='"
- - "slurp_existing.encoding == 'base64'"
- - "slurp_existing is not changed"
- - "slurp_existing is not failed"
-
-- name: test slurping a large binary file with path param and backslashes
- slurp:
- path: C:\Windows\explorer.exe
- register: slurp_path_backslashes
- no_log: true
-
-- name: check slurp result with path param and backslashes
- assert:
- that:
- - "slurp_path_backslashes.content"
- - "slurp_path_backslashes.encoding == 'base64'"
- - "slurp_path_backslashes is not changed"
- - "slurp_path_backslashes is not failed"
-
-- name: test slurping a non-existent file
- slurp:
- src: C:\this_file_should_not_exist.txt
- register: slurp_missing
- ignore_errors: true
-
-- name: check slurp missing result
- assert:
- that:
- - "slurp_missing is failed"
- - "slurp_missing.msg"
- - "slurp_missing is not changed"
-
-- name: test slurping a directory
- slurp:
- src: '{{ test_win_slurp_dir }}\missing'
- register: slurp_dir
- ignore_errors: true
-
-- name: check slurp directory result
- assert:
- that:
- - "slurp_dir is failed"
- - "slurp_dir.msg"
- - "slurp_dir is not changed"
-
-- name: test slurp with missing argument
- action: slurp
- register: slurp_no_args
- ignore_errors: true
-
-- name: check slurp with missing argument result
- assert:
- that:
- - "slurp_no_args is failed"
- - "slurp_no_args.msg"
- - "slurp_no_args is not changed"
diff --git a/test/integration/targets/win_stat/aliases b/test/integration/targets/win_stat/aliases
deleted file mode 100644
index 215e0b0692..0000000000
--- a/test/integration/targets/win_stat/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group4
diff --git a/test/integration/targets/win_stat/defaults/main.yml b/test/integration/targets/win_stat/defaults/main.yml
deleted file mode 100644
index 9facc62557..0000000000
--- a/test/integration/targets/win_stat/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-win_stat_dir: '{{win_output_dir}}\win_stat'
-win_stat_user: test-stat
diff --git a/test/integration/targets/win_stat/library/test_symlink_file.ps1 b/test/integration/targets/win_stat/library/test_symlink_file.ps1
deleted file mode 100644
index 39f1f46afc..0000000000
--- a/test/integration/targets/win_stat/library/test_symlink_file.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!powershell
-
-#Requires -Module Ansible.ModuleUtils.Legacy
-#Requires -Module Ansible.ModuleUtils.LinkUtil
-
-$params = Parse-Args $args
-
-$state = Get-AnsibleParam -obj $params -name "state" -type "str" -default "present" -validateset "absent","present"
-$src = Get-AnsibleParam -obj $params -name "src" -type "path" -failifempty $true
-$target = Get-AnsibleParam -obj $params -name "target" -type "path" -failifempty $($state -eq "present")
-
-$result = @{
- changed = $false
-}
-
-if ($state -eq "absent") {
- if (Test-Path -Path $src) {
- Load-LinkUtils
- Remove-Link -link_path $src
- $result.changed = $true
- }
-} else {
- if (-not (Test-Path -Path $src)) {
- Load-LinkUtils
- New-Link -link_path $src -link_target $target -link_type "link"
- $result.changed = $true
- }
-}
-
-Exit-Json -obj $result
diff --git a/test/integration/targets/win_stat/tasks/main.yml b/test/integration/targets/win_stat/tasks/main.yml
deleted file mode 100644
index a016cde655..0000000000
--- a/test/integration/targets/win_stat/tasks/main.yml
+++ /dev/null
@@ -1,115 +0,0 @@
-- name: make sure symlink file does not exist
- test_symlink_file:
- src: '{{win_stat_dir}}\file-link.txt'
- state: absent
-
-- name: remove win_stat testing directories for clean slate
- win_file:
- path: '{{win_stat_dir}}'
- state: absent
-
-# while most of the setup can be done with modules, it is quicker to do them
-# all in bulk than with with_items to save each round trip over WinRM
-- name: set test files and folders
- win_shell: |
- $ErrorActionPreference = "Stop"
- $directories = @(
- "folder",
- "folder space",
- "nested\nested",
- "shared",
- "hidden",
- "link-dest",
- "junction-dest"
- )
-
- foreach ($directory in $directories) {
- New-Item -Path "{{win_stat_dir}}\$directory" -ItemType Directory
- }
-
- $normal_content = "abc"
- $normal_files = @(
- "nested\file.ps1",
- "nested\hard-target.txt",
- "nested\read-only.ps1",
- "nested\archive.ps1",
- "nested\hidden.ps1",
- "nested\nested\file.ps1",
- "folder space\file.ps1",
- "link-dest\file.txt"
- )
- foreach ($file in $normal_files) {
- New-Item -Path "{{win_stat_dir}}\$file" -ItemType File
- [System.IO.File]::WriteAllText("{{win_stat_dir}}\$file", $normal_content)
- }
-
- $share_stat = Get-WmiObject -Class Win32_Share -Filter "name='folder-share'"
- if ($share_stat) {
- $share_stat.Delete()
- }
- $wmi = [wmiClass] 'Win32_Share'
- $wmi.Create("{{win_stat_dir}}\shared", "folder-share", 0)
-
- cmd.exe /c mklink /D "{{win_stat_dir}}\link" "{{win_stat_dir}}\link-dest"
- cmd.exe /c mklink /H "{{win_stat_dir}}\nested\hard-link.ps1" "{{win_stat_dir}}\nested\hard-target.txt"
- cmd.exe /c mklink /J "{{win_stat_dir}}\junction-link" "{{win_stat_dir}}\junction-dest"
- cmd.exe /c mklink /D "{{win_stat_dir}}\nested\nested\link-rel" "..\..\link-dest"
- cmd.exe /c mklink /D "{{win_stat_dir}}\outer-link" "{{win_stat_dir}}\nested\nested\link-rel"
-
- $date = Get-Date -Year 2016 -Month 11 -Day 1 -Hour 7 -Minute 10 -Second 5 -Millisecond 0
- Get-ChildItem -Path "{{win_stat_dir}}" -Recurse | ForEach-Object {
- $_.CreationTime = $date
- $_.LastAccessTime = $date
- $_.LastWriteTime = $date
- }
-
- $attributes = @{
- "hidden" = "Hidden"
- "nested\read-only.ps1" = "ReadOnly"
- "nested\archive.ps1" = "Archive"
- "nested\hidden.ps1" = "Hidden"
- }
-
- foreach ($attribute in $attributes.GetEnumerator()) {
- $item = Get-Item -Path "{{win_stat_dir}}\$($attribute.Name)"
- $file_attributes = $item.Attributes -split ','
- if ($file_attributes -notcontains $attribute.Value) {
- $file_attributes += $attribute.Value
- }
- $item.Attributes = $file_attributes -join ','
- }
-
- # weird issue, need to access the file in anyway to get the correct date stats
- Test-Path {{win_stat_dir}}\nested\hard-link.ps1
-
-# mklink.exe and win_file cannot do this right now so we need a custom module
-- name: create file symlink
- test_symlink_file:
- src: '{{win_stat_dir}}\file-link.txt'
- target: '{{win_stat_dir}}\nested\file.ps1'
- state: present
-
-- block:
- - include_tasks: tests.yml
-
- always:
- - name: make sure symlink file does not exist
- test_symlink_file:
- src: '{{win_stat_dir}}\file-link.txt'
- state: absent
-
- - name: remove testing folder
- win_file:
- path: '{{win_stat_dir}}'
- state: absent
-
- - name: ensure test user is deleted
- win_user:
- name: '{{win_stat_user}}'
- state: absent
-
- - name: ensure test user profile is deleted
- win_shell: rmdir /S /Q {{profile_dir_out.stdout_lines[0]}}
- args:
- executable: cmd.exe
- when: win_stat_user in profile_dir_out.stdout_lines[0]
diff --git a/test/integration/targets/win_stat/tasks/tests.yml b/test/integration/targets/win_stat/tasks/tests.yml
deleted file mode 100644
index 2d690b9823..0000000000
--- a/test/integration/targets/win_stat/tasks/tests.yml
+++ /dev/null
@@ -1,646 +0,0 @@
----
-- name: test win_stat module on file
- win_stat:
- path: '{{win_stat_dir}}\nested\file.ps1'
- register: stat_file
-
-- name: check actual for file
- assert:
- that:
- - stat_file.stat.attributes == 'Archive'
- - stat_file.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_file.stat.creationtime == 1477984205
- - stat_file.stat.exists == True
- - stat_file.stat.extension == '.ps1'
- - stat_file.stat.filename == 'file.ps1'
- - stat_file.stat.hlnk_targets == []
- - stat_file.stat.isarchive == True
- - stat_file.stat.isdir == False
- - stat_file.stat.ishidden == False
- - stat_file.stat.isjunction == False
- - stat_file.stat.islnk == False
- - stat_file.stat.isreadonly == False
- - stat_file.stat.isreg == True
- - stat_file.stat.isshared == False
- - stat_file.stat.lastaccesstime == 1477984205
- - stat_file.stat.lastwritetime == 1477984205
- - stat_file.stat.nlink == 1
- - stat_file.stat.owner == 'BUILTIN\Administrators'
- - stat_file.stat.path == win_stat_dir + '\\nested\\file.ps1'
- - stat_file.stat.size == 3
-
-- name: test win_stat module on file with sha256
- win_stat:
- path: '{{win_stat_dir}}\nested\file.ps1'
- checksum_algorithm: sha256
- register: stat_file_sha256
-
-- name: check actual for file with sha256
- assert:
- that:
- - stat_file_sha256.stat.checksum == 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
-
-- name: test win_stat module on file with sha384
- win_stat:
- path: '{{win_stat_dir}}\nested\file.ps1'
- checksum_algorithm: sha384
- register: stat_file_sha384
-
-- name: check actual for file with sha384
- assert:
- that:
- - stat_file_sha384.stat.checksum == 'cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7'
-
-- name: test win_stat module on file with sha512
- win_stat:
- path: '{{win_stat_dir}}\nested\file.ps1'
- checksum_algorithm: sha512
- register: stat_file_sha512
-
-- name: check actual for file with sha512
- assert:
- that:
- - stat_file_sha512.stat.checksum == 'ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f'
-
-- name: test win_stat on hidden file
- win_stat:
- path: '{{win_stat_dir}}\nested\hidden.ps1'
- register: stat_file_hidden
-
-- name: check actual for hidden file
- assert:
- that:
- - stat_file_hidden.stat.attributes == 'Hidden, Archive'
- - stat_file_hidden.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_file_hidden.stat.creationtime == 1477984205
- - stat_file_hidden.stat.exists == True
- - stat_file_hidden.stat.extension == '.ps1'
- - stat_file_hidden.stat.filename == 'hidden.ps1'
- - stat_file_hidden.stat.hlnk_targets == []
- - stat_file_hidden.stat.isarchive == True
- - stat_file_hidden.stat.isdir == False
- - stat_file_hidden.stat.ishidden == True
- - stat_file_hidden.stat.isjunction == False
- - stat_file_hidden.stat.islnk == False
- - stat_file_hidden.stat.isreadonly == False
- - stat_file_hidden.stat.isreg == True
- - stat_file_hidden.stat.isshared == False
- - stat_file_hidden.stat.lastaccesstime == 1477984205
- - stat_file_hidden.stat.lastwritetime == 1477984205
- - stat_file_hidden.stat.nlink == 1
- - stat_file_hidden.stat.owner == 'BUILTIN\Administrators'
- - stat_file_hidden.stat.path == win_stat_dir + '\\nested\\hidden.ps1'
- - stat_file_hidden.stat.size == 3
-
-- name: test win_stat on readonly file
- win_stat:
- path: '{{win_stat_dir}}\nested\read-only.ps1'
- register: stat_readonly
-
-- name: check actual for readonly file
- assert:
- that:
- - stat_readonly.stat.attributes == 'ReadOnly, Archive'
- - stat_readonly.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_readonly.stat.creationtime == 1477984205
- - stat_readonly.stat.exists == True
- - stat_readonly.stat.extension == '.ps1'
- - stat_readonly.stat.filename == 'read-only.ps1'
- - stat_readonly.stat.hlnk_targets == []
- - stat_readonly.stat.isarchive == True
- - stat_readonly.stat.isdir == False
- - stat_readonly.stat.ishidden == False
- - stat_readonly.stat.isjunction == False
- - stat_readonly.stat.islnk == False
- - stat_readonly.stat.isreadonly == True
- - stat_readonly.stat.isreg == True
- - stat_readonly.stat.isshared == False
- - stat_readonly.stat.lastaccesstime == 1477984205
- - stat_readonly.stat.lastwritetime == 1477984205
- - stat_readonly.stat.nlink == 1
- - stat_readonly.stat.owner == 'BUILTIN\Administrators'
- - stat_readonly.stat.path == win_stat_dir + '\\nested\\read-only.ps1'
- - stat_readonly.stat.size == 3
-
-- name: test win_stat on hard link file
- win_stat:
- path: '{{win_stat_dir}}\nested\hard-link.ps1'
- follow: True # just verifies we don't do any weird follow logic for hard links
- register: stat_hard_link
-
-- name: check actual for hard link file
- assert:
- that:
- - stat_hard_link.stat.attributes == 'Archive'
- - stat_hard_link.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_hard_link.stat.creationtime == 1477984205
- - stat_hard_link.stat.exists == True
- - stat_hard_link.stat.extension == '.ps1'
- - stat_hard_link.stat.filename == 'hard-link.ps1'
- - stat_hard_link.stat.hlnk_targets == [ win_stat_dir + '\\nested\hard-target.txt' ]
- - stat_hard_link.stat.isarchive == True
- - stat_hard_link.stat.isdir == False
- - stat_hard_link.stat.ishidden == False
- - stat_hard_link.stat.isjunction == False
- - stat_hard_link.stat.islnk == False
- - stat_hard_link.stat.isreadonly == False
- - stat_hard_link.stat.isshared == False
- - stat_hard_link.stat.lastaccesstime == 1477984205
- - stat_hard_link.stat.lastwritetime == 1477984205
- - stat_hard_link.stat.nlink == 2
- - stat_hard_link.stat.owner == 'BUILTIN\Administrators'
- - stat_hard_link.stat.path == win_stat_dir + '\\nested\\hard-link.ps1'
- - stat_hard_link.stat.size == 3
-
-- name: test win_stat on directory
- win_stat:
- path: '{{win_stat_dir}}\nested'
- register: stat_directory
-
-- name: check actual for directory
- assert:
- that:
- - stat_directory.stat.attributes == 'Directory'
- - stat_directory.stat.checksum is not defined
- - stat_directory.stat.creationtime == 1477984205
- - stat_directory.stat.exists == True
- - stat_directory.stat.extension is not defined
- - stat_directory.stat.filename == 'nested'
- - stat_directory.stat.hlnk_targets == []
- - stat_directory.stat.isarchive == False
- - stat_directory.stat.isdir == True
- - stat_directory.stat.ishidden == False
- - stat_directory.stat.isjunction == False
- - stat_directory.stat.islnk == False
- - stat_directory.stat.isreadonly == False
- - stat_directory.stat.isreg == False
- - stat_directory.stat.isshared == False
- - stat_directory.stat.lastaccesstime == 1477984205
- - stat_directory.stat.lastwritetime == 1477984205
- - stat_directory.stat.nlink == 1
- - stat_directory.stat.owner == 'BUILTIN\Administrators'
- - stat_directory.stat.path == win_stat_dir + '\\nested'
- - stat_directory.stat.size == 24
-
-- name: test win_stat on empty directory
- win_stat:
- path: '{{win_stat_dir}}\folder'
- register: stat_directory_empty
-
-- name: check actual for empty directory
- assert:
- that:
- - stat_directory_empty.stat.attributes == 'Directory'
- - stat_directory_empty.stat.checksum is not defined
- - stat_directory_empty.stat.creationtime == 1477984205
- - stat_directory_empty.stat.exists == True
- - stat_directory_empty.stat.extension is not defined
- - stat_directory_empty.stat.filename == 'folder'
- - stat_directory_empty.stat.hlnk_targets == []
- - stat_directory_empty.stat.isarchive == False
- - stat_directory_empty.stat.isdir == True
- - stat_directory_empty.stat.ishidden == False
- - stat_directory_empty.stat.isjunction == False
- - stat_directory_empty.stat.islnk == False
- - stat_directory_empty.stat.isreadonly == False
- - stat_directory_empty.stat.isreg == False
- - stat_directory_empty.stat.isshared == False
- - stat_directory_empty.stat.lastaccesstime == 1477984205
- - stat_directory_empty.stat.lastwritetime == 1477984205
- - stat_directory_empty.stat.nlink == 1
- - stat_directory_empty.stat.owner == 'BUILTIN\Administrators'
- - stat_directory_empty.stat.path == win_stat_dir + '\\folder'
- - stat_directory_empty.stat.size == 0
-
-- name: test win_stat on directory with space in name
- win_stat:
- path: '{{win_stat_dir}}\folder space'
- register: stat_directory_space
-
-- name: check actual for directory with space in name
- assert:
- that:
- - stat_directory_space.stat.attributes == 'Directory'
- - stat_directory_space.stat.checksum is not defined
- - stat_directory_space.stat.creationtime == 1477984205
- - stat_directory_space.stat.exists == True
- - stat_directory_space.stat.extension is not defined
- - stat_directory_space.stat.filename == 'folder space'
- - stat_directory_space.stat.hlnk_targets == []
- - stat_directory_space.stat.isarchive == False
- - stat_directory_space.stat.isdir == True
- - stat_directory_space.stat.ishidden == False
- - stat_directory_space.stat.isjunction == False
- - stat_directory_space.stat.islnk == False
- - stat_directory_space.stat.isreadonly == False
- - stat_directory_space.stat.isreg == False
- - stat_directory_space.stat.isshared == False
- - stat_directory_space.stat.lastaccesstime == 1477984205
- - stat_directory_space.stat.lastwritetime == 1477984205
- - stat_directory_space.stat.nlink == 1
- - stat_directory_space.stat.owner == 'BUILTIN\Administrators'
- - stat_directory_space.stat.path == win_stat_dir + '\\folder space'
- - stat_directory_space.stat.size == 3
-
-- name: test win_stat on hidden directory
- win_stat:
- path: '{{win_stat_dir}}\hidden'
- register: stat_hidden
-
-- name: check actual for hidden directory
- assert:
- that:
- - stat_hidden.stat.attributes == 'Hidden, Directory'
- - stat_hidden.stat.checksum is not defined
- - stat_hidden.stat.creationtime == 1477984205
- - stat_hidden.stat.exists == True
- - stat_hidden.stat.extension is not defined
- - stat_hidden.stat.filename == 'hidden'
- - stat_hidden.stat.hlnk_targets == []
- - stat_hidden.stat.isarchive == False
- - stat_hidden.stat.isdir == True
- - stat_hidden.stat.ishidden == True
- - stat_hidden.stat.isjunction == False
- - stat_hidden.stat.islnk == False
- - stat_hidden.stat.isreadonly == False
- - stat_hidden.stat.isreg == False
- - stat_hidden.stat.isshared == False
- - stat_hidden.stat.lastaccesstime == 1477984205
- - stat_hidden.stat.lastwritetime == 1477984205
- - stat_hidden.stat.nlink == 1
- - stat_hidden.stat.owner == 'BUILTIN\Administrators'
- - stat_hidden.stat.path == win_stat_dir + '\\hidden'
- - stat_hidden.stat.size == 0
-
-- name: test win_stat on shared directory
- win_stat:
- path: '{{win_stat_dir}}\shared'
- register: stat_shared
-
-- name: check actual for shared directory
- assert:
- that:
- - stat_shared.stat.attributes == 'Directory'
- - stat_shared.stat.checksum is not defined
- - stat_shared.stat.creationtime == 1477984205
- - stat_shared.stat.exists == True
- - stat_shared.stat.extension is not defined
- - stat_shared.stat.filename == 'shared'
- - stat_shared.stat.hlnk_targets == []
- - stat_shared.stat.isarchive == False
- - stat_shared.stat.isdir == True
- - stat_shared.stat.ishidden == False
- - stat_shared.stat.isjunction == False
- - stat_shared.stat.islnk == False
- - stat_shared.stat.isreadonly == False
- - stat_shared.stat.isreg == False
- - stat_shared.stat.isshared == True
- - stat_shared.stat.lastaccesstime == 1477984205
- - stat_shared.stat.lastwritetime == 1477984205
- - stat_shared.stat.nlink == 1
- - stat_shared.stat.owner == 'BUILTIN\Administrators'
- - stat_shared.stat.path == win_stat_dir + '\\shared'
- - stat_shared.stat.sharename == 'folder-share'
- - stat_shared.stat.size == 0
-
-- name: test win_stat on directory symlink
- win_stat:
- path: '{{win_stat_dir}}\link'
- register: stat_symlink
-
-- name: assert directory symlink actual
- assert:
- that:
- - stat_symlink.stat.attributes == 'Directory, ReparsePoint'
- - stat_symlink.stat.creationtime is defined
- - stat_symlink.stat.exists == True
- - stat_symlink.stat.filename == 'link'
- - stat_symlink.stat.hlnk_targets == []
- - stat_symlink.stat.isarchive == False
- - stat_symlink.stat.isdir == True
- - stat_symlink.stat.ishidden == False
- - stat_symlink.stat.islnk == True
- - stat_symlink.stat.isjunction == False
- - stat_symlink.stat.isreadonly == False
- - stat_symlink.stat.isreg == False
- - stat_symlink.stat.isshared == False
- - stat_symlink.stat.lastaccesstime is defined
- - stat_symlink.stat.lastwritetime is defined
- - stat_symlink.stat.lnk_source == win_stat_dir + '\\link-dest'
- - stat_symlink.stat.lnk_target == win_stat_dir + '\\link-dest'
- - stat_symlink.stat.nlink == 1
- - stat_symlink.stat.owner == 'BUILTIN\\Administrators'
- - stat_symlink.stat.path == win_stat_dir + '\\link'
- - stat_symlink.stat.checksum is not defined
-
-- name: test win_stat on file symlink
- win_stat:
- path: '{{win_stat_dir}}\file-link.txt'
- register: stat_file_symlink
-
-- name: assert file symlink actual
- assert:
- that:
- - stat_file_symlink.stat.attributes == 'Archive, ReparsePoint'
- - stat_file_symlink.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_file_symlink.stat.creationtime is defined
- - stat_file_symlink.stat.exists == True
- - stat_file_symlink.stat.extension == '.txt'
- - stat_file_symlink.stat.filename == 'file-link.txt'
- - stat_file_symlink.stat.hlnk_targets == []
- - stat_file_symlink.stat.isarchive == True
- - stat_file_symlink.stat.isdir == False
- - stat_file_symlink.stat.ishidden == False
- - stat_file_symlink.stat.isjunction == False
- - stat_file_symlink.stat.islnk == True
- - stat_file_symlink.stat.isreadonly == False
- - stat_file_symlink.stat.isreg == False
- - stat_file_symlink.stat.isshared == False
- - stat_file_symlink.stat.lastaccesstime is defined
- - stat_file_symlink.stat.lastwritetime is defined
- - stat_file_symlink.stat.lnk_source == win_stat_dir + '\\nested\\file.ps1'
- - stat_file_symlink.stat.lnk_target == win_stat_dir + '\\nested\\file.ps1'
- - stat_file_symlink.stat.nlink == 1
- - stat_file_symlink.stat.owner == 'BUILTIN\\Administrators'
- - stat_file_symlink.stat.path == win_stat_dir + '\\file-link.txt'
-
-- name: test win_stat of file symlink with follow
- win_stat:
- path: '{{win_stat_dir}}\file-link.txt'
- follow: True
- register: stat_file_symlink_follow
-
-- name: assert file system with follow actual
- assert:
- that:
- - stat_file_symlink_follow.stat.attributes == 'Archive'
- - stat_file_symlink_follow.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - stat_file_symlink_follow.stat.creationtime is defined
- - stat_file_symlink_follow.stat.exists == True
- - stat_file_symlink_follow.stat.extension == '.ps1'
- - stat_file_symlink_follow.stat.filename == 'file.ps1'
- - stat_file_symlink_follow.stat.hlnk_targets == []
- - stat_file_symlink_follow.stat.isarchive == True
- - stat_file_symlink_follow.stat.isdir == False
- - stat_file_symlink_follow.stat.ishidden == False
- - stat_file_symlink_follow.stat.isjunction == False
- - stat_file_symlink_follow.stat.islnk == False
- - stat_file_symlink_follow.stat.isreadonly == False
- - stat_file_symlink_follow.stat.isreg == True
- - stat_file_symlink_follow.stat.isshared == False
- - stat_file_symlink_follow.stat.lastaccesstime is defined
- - stat_file_symlink_follow.stat.lastwritetime is defined
- - stat_file_symlink_follow.stat.nlink == 1
- - stat_file_symlink_follow.stat.owner == 'BUILTIN\\Administrators'
- - stat_file_symlink_follow.stat.path == win_stat_dir + '\\nested\\file.ps1'
-
-- name: test win_stat on relative symlink
- win_stat:
- path: '{{win_stat_dir}}\nested\nested\link-rel'
- register: stat_rel_symlink
-
-- name: assert directory relative symlink actual
- assert:
- that:
- - stat_rel_symlink.stat.attributes == 'Directory, ReparsePoint'
- - stat_rel_symlink.stat.creationtime is defined
- - stat_rel_symlink.stat.exists == True
- - stat_rel_symlink.stat.filename == 'link-rel'
- - stat_rel_symlink.stat.hlnk_targets == []
- - stat_rel_symlink.stat.isarchive == False
- - stat_rel_symlink.stat.isdir == True
- - stat_rel_symlink.stat.ishidden == False
- - stat_rel_symlink.stat.isjunction == False
- - stat_rel_symlink.stat.islnk == True
- - stat_rel_symlink.stat.isreadonly == False
- - stat_rel_symlink.stat.isreg == False
- - stat_rel_symlink.stat.isshared == False
- - stat_rel_symlink.stat.lastaccesstime is defined
- - stat_rel_symlink.stat.lastwritetime is defined
- - stat_rel_symlink.stat.lnk_source == win_stat_dir + '\\link-dest'
- - stat_rel_symlink.stat.lnk_target == '..\\..\\link-dest'
- - stat_rel_symlink.stat.nlink == 1
- - stat_rel_symlink.stat.owner == 'BUILTIN\\Administrators'
- - stat_rel_symlink.stat.path == win_stat_dir + '\\nested\\nested\\link-rel'
- - stat_rel_symlink.stat.checksum is not defined
-
-- name: test win_stat on relative multiple symlink with follow
- win_stat:
- path: '{{win_stat_dir}}\outer-link'
- follow: True
- register: stat_symlink_follow
-
-- name: assert directory relative symlink actual
- assert:
- that:
- - stat_symlink_follow.stat.attributes == 'Directory'
- - stat_symlink_follow.stat.creationtime is defined
- - stat_symlink_follow.stat.exists == True
- - stat_symlink_follow.stat.filename == 'link-dest'
- - stat_symlink_follow.stat.hlnk_targets == []
- - stat_symlink_follow.stat.isarchive == False
- - stat_symlink_follow.stat.isdir == True
- - stat_symlink_follow.stat.ishidden == False
- - stat_symlink_follow.stat.isjunction == False
- - stat_symlink_follow.stat.islnk == False
- - stat_symlink_follow.stat.isreadonly == False
- - stat_symlink_follow.stat.isreg == False
- - stat_symlink_follow.stat.isshared == False
- - stat_symlink_follow.stat.lastaccesstime is defined
- - stat_symlink_follow.stat.lastwritetime is defined
- - stat_symlink_follow.stat.nlink == 1
- - stat_symlink_follow.stat.owner == 'BUILTIN\\Administrators'
- - stat_symlink_follow.stat.path == win_stat_dir + '\\link-dest'
- - stat_symlink_follow.stat.checksum is not defined
-
-- name: test win_stat on junction
- win_stat:
- path: '{{win_stat_dir}}\junction-link'
- register: stat_junction_point
-
-- name: assert junction actual
- assert:
- that:
- - stat_junction_point.stat.attributes == 'Directory, ReparsePoint'
- - stat_junction_point.stat.creationtime is defined
- - stat_junction_point.stat.exists == True
- - stat_junction_point.stat.filename == 'junction-link'
- - stat_junction_point.stat.hlnk_targets == []
- - stat_junction_point.stat.isarchive == False
- - stat_junction_point.stat.isdir == True
- - stat_junction_point.stat.ishidden == False
- - stat_junction_point.stat.isjunction == True
- - stat_junction_point.stat.islnk == False
- - stat_junction_point.stat.isreadonly == False
- - stat_junction_point.stat.isreg == False
- - stat_junction_point.stat.isshared == False
- - stat_junction_point.stat.lastaccesstime is defined
- - stat_junction_point.stat.lastwritetime is defined
- - stat_junction_point.stat.lnk_source == win_stat_dir + '\\junction-dest'
- - stat_junction_point.stat.lnk_target == win_stat_dir + '\\junction-dest'
- - stat_junction_point.stat.nlink == 1
- - stat_junction_point.stat.owner == 'BUILTIN\\Administrators'
- - stat_junction_point.stat.path == win_stat_dir + '\\junction-link'
- - stat_junction_point.stat.size == 0
-
-- name: test win_stat on junction with follow
- win_stat:
- path: '{{win_stat_dir}}\junction-link'
- follow: True
- register: stat_junction_point_follow
-
-- name: assert junction with follow actual
- assert:
- that:
- - stat_junction_point_follow.stat.attributes == 'Directory'
- - stat_junction_point_follow.stat.creationtime is defined
- - stat_junction_point_follow.stat.exists == True
- - stat_junction_point_follow.stat.filename == 'junction-dest'
- - stat_junction_point_follow.stat.hlnk_targets == []
- - stat_junction_point_follow.stat.isarchive == False
- - stat_junction_point_follow.stat.isdir == True
- - stat_junction_point_follow.stat.ishidden == False
- - stat_junction_point_follow.stat.isjunction == False
- - stat_junction_point_follow.stat.islnk == False
- - stat_junction_point_follow.stat.isreadonly == False
- - stat_junction_point_follow.stat.isreg == False
- - stat_junction_point_follow.stat.isshared == False
- - stat_junction_point_follow.stat.lastaccesstime is defined
- - stat_junction_point_follow.stat.lastwritetime is defined
- - stat_junction_point_follow.stat.nlink == 1
- - stat_junction_point_follow.stat.owner == 'BUILTIN\\Administrators'
- - stat_junction_point_follow.stat.path == win_stat_dir + '\\junction-dest'
- - stat_junction_point_follow.stat.size == 0
-
-- name: test win_stat module non-existent path
- win_stat:
- path: '{{win_stat_dir}}\this_file_should_not_exist'
- register: win_stat_missing
-
-- name: check win_stat missing result
- assert:
- that:
- - not win_stat_missing.stat.exists
- - win_stat_missing is not failed
- - win_stat_missing is not changed
-
-- name: test win_stat module without path argument
- win_stat:
- register: win_stat_no_args
- failed_when: "win_stat_no_args.msg != 'missing required arguments: path'"
-
-# https://github.com/ansible/ansible/issues/30258
-- name: get path of pagefile
- win_shell: |
- $pagefile = $null
- $cs = Get-CimInstance -ClassName Win32_ComputerSystem
- if ($cs.AutomaticManagedPagefile) {
- $pagefile = "$($env:SystemRoot.Substring(0, 1)):\pagefile.sys"
- } else {
- $pf = Get-CimInstance -ClassName Win32_PageFileSetting
- if ($pf -ne $null) {
- $pagefile = $pf[0].Name
- }
- }
- $pagefile
- register: pagefile_path
-
-- name: get stat of pagefile
- win_stat:
- path: '{{pagefile_path.stdout_lines[0]}}'
- get_checksum: no
- register: pagefile_stat
- when: pagefile_path.stdout_lines|count != 0
-
-- name: assert get stat of pagefile
- assert:
- that:
- - pagefile_stat.stat.exists == True
- when: pagefile_path.stdout_lines|count != 0
-
-# Tests with normal user
-- set_fact:
- gen_pw: password123! + {{ lookup('password', '/dev/null chars=ascii_letters,digits length=8') }}
-
-- name: create test user
- win_user:
- name: '{{win_stat_user}}'
- password: '{{gen_pw}}'
- update_password: always
- groups: Users
-
-- name: get become user profile dir so we can clean it up later
- vars: &become_vars
- ansible_become_user: '{{win_stat_user}}'
- ansible_become_password: '{{gen_pw}}'
- ansible_become_method: runas
- ansible_become: yes
- win_shell: $env:USERPROFILE
- register: profile_dir_out
-
-- name: ensure profile dir contains test username (eg, if become fails silently, prevent deletion of real user profile)
- assert:
- that:
- - win_stat_user in profile_dir_out.stdout_lines[0]
-
-- name: test stat with non admin user on a normal file
- vars: *become_vars
- win_stat:
- path: '{{win_stat_dir}}\nested\file.ps1'
- register: user_file
-
-- name: asert test stat with non admin user on a normal file
- assert:
- that:
- - user_file.stat.attributes == 'Archive'
- - user_file.stat.checksum == 'a9993e364706816aba3e25717850c26c9cd0d89d'
- - user_file.stat.creationtime == 1477984205
- - user_file.stat.exists == True
- - user_file.stat.extension == '.ps1'
- - user_file.stat.filename == 'file.ps1'
- - user_file.stat.hlnk_targets == []
- - user_file.stat.isarchive == True
- - user_file.stat.isdir == False
- - user_file.stat.ishidden == False
- - user_file.stat.isjunction == False
- - user_file.stat.islnk == False
- - user_file.stat.isreadonly == False
- - user_file.stat.isreg == True
- - user_file.stat.isshared == False
- - user_file.stat.lastaccesstime == 1477984205
- - user_file.stat.lastwritetime == 1477984205
- - user_file.stat.nlink == 1
- - user_file.stat.owner == 'BUILTIN\\Administrators'
- - user_file.stat.path == win_stat_dir + '\\nested\\file.ps1'
- - user_file.stat.size == 3
-
-- name: test stat on a symbolic link as normal user
- vars: *become_vars
- win_stat:
- path: '{{win_stat_dir}}\link'
- register: user_symlink
-
-- name: assert test stat on a symbolic link as normal user
- assert:
- that:
- - user_symlink.stat.attributes == 'Directory, ReparsePoint'
- - user_symlink.stat.creationtime is defined
- - user_symlink.stat.exists == True
- - user_symlink.stat.filename == 'link'
- - user_symlink.stat.hlnk_targets == []
- - user_symlink.stat.isarchive == False
- - user_symlink.stat.isdir == True
- - user_symlink.stat.ishidden == False
- - user_symlink.stat.islnk == True
- - user_symlink.stat.isjunction == False
- - user_symlink.stat.isreadonly == False
- - user_symlink.stat.isreg == False
- - user_symlink.stat.isshared == False
- - user_symlink.stat.lastaccesstime is defined
- - user_symlink.stat.lastwritetime is defined
- - user_symlink.stat.lnk_source == win_stat_dir + '\\link-dest'
- - user_symlink.stat.lnk_target == win_stat_dir + '\\link-dest'
- - user_symlink.stat.nlink == 1
- - user_symlink.stat.owner == 'BUILTIN\\Administrators'
- - user_symlink.stat.path == win_stat_dir + '\\link'
- - user_symlink.stat.checksum is not defined
diff --git a/test/integration/targets/win_tempfile/aliases b/test/integration/targets/win_tempfile/aliases
deleted file mode 100644
index 423ce39108..0000000000
--- a/test/integration/targets/win_tempfile/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group2
diff --git a/test/integration/targets/win_tempfile/defaults/main.yml b/test/integration/targets/win_tempfile/defaults/main.yml
deleted file mode 100644
index 824fe00bb1..0000000000
--- a/test/integration/targets/win_tempfile/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_tempfile_path: 'C:\ansible\win_tempfile .ÅÑŚÌβŁÈ [$!@^&test(;)]'
diff --git a/test/integration/targets/win_tempfile/tasks/main.yml b/test/integration/targets/win_tempfile/tasks/main.yml
deleted file mode 100644
index e989d1ada7..0000000000
--- a/test/integration/targets/win_tempfile/tasks/main.yml
+++ /dev/null
@@ -1,231 +0,0 @@
----
-- name: get the current %TEMP% value
- win_shell: '[System.IO.Path]::GetFullPath($env:TEMP)'
- register: temp_value
-
-- name: register temp path value
- set_fact:
- temp_value: '{{ temp_value.stdout | trim }}'
-
-
-- name: get raw %TEMP% value
- win_shell: '$env:TEMP'
- register: raw_temp_value
-
-- name: create temp file defaults check
- win_tempfile:
- register: create_tmp_file_defaults_check
- check_mode: True
-
-- name: get stat of temp file defaults check
- win_stat:
- path: "{{create_tmp_file_defaults_check.path}}"
- register: actual_create_tmp_file_defaults_check
-
-- name: assert create temp file defaults check
- assert:
- that:
- - create_tmp_file_defaults_check is changed
- - create_tmp_file_defaults_check.state == 'file'
- - create_tmp_file_defaults_check.path.startswith(temp_value + '\\ansible.')
- - actual_create_tmp_file_defaults_check.stat.exists == False
-
-- name: create temp file defaults
- win_tempfile:
- register: create_tmp_file_defaults
-
-- name: get stat of temp file defaults
- win_stat:
- path: "{{create_tmp_file_defaults.path}}"
- register: actual_create_tmp_file_defaults
-
-- name: assert create temp file defaults
- assert:
- that:
- - create_tmp_file_defaults is changed
- - create_tmp_file_defaults.state == 'file'
- - create_tmp_file_defaults.path.startswith(temp_value + '\\ansible.')
- - actual_create_tmp_file_defaults.stat.exists == True
- - actual_create_tmp_file_defaults.stat.isdir == False
-
-- name: create temp file defaults again
- win_tempfile:
- register: create_tmp_file_defaults_again
-
-- name: get stat of temp file defaults again
- win_stat:
- path: "{{create_tmp_file_defaults_again.path}}"
- register: actual_create_tmp_file_defaults_again
-
-- name: assert create temp file defaults
- assert:
- that:
- - create_tmp_file_defaults_again is changed
- - create_tmp_file_defaults_again.state == 'file'
- - create_tmp_file_defaults_again.path.startswith(temp_value + '\\ansible.')
- - create_tmp_file_defaults_again.path != create_tmp_file_defaults.path
- - actual_create_tmp_file_defaults_again.stat.exists == True
- - actual_create_tmp_file_defaults_again.stat.isdir == False
-
-- name: create temp folder check
- win_tempfile:
- state: directory
- register: create_tmp_folder_check
- check_mode: True
-
-- name: get stat of temp folder check
- win_stat:
- path: "{{create_tmp_folder_check.path}}"
- register: actual_create_tmp_folder_check
-
-- name: assert create temp folder check
- assert:
- that:
- - create_tmp_folder_check is changed
- - create_tmp_folder_check.state == 'directory'
- - create_tmp_folder_check.path.startswith(temp_value + '\\ansible.')
- - actual_create_tmp_folder_check.stat.exists == False
-
-- name: create temp folder
- win_tempfile:
- state: directory
- register: create_tmp_folder
-
-- name: get stat of temp folder
- win_stat:
- path: "{{create_tmp_folder.path}}"
- register: actual_create_tmp_folder
-
-- name: assert create temp folder
- assert:
- that:
- - create_tmp_folder is changed
- - create_tmp_folder.state == 'directory'
- - create_tmp_folder.path.startswith(temp_value + '\\ansible.')
- - actual_create_tmp_folder.stat.exists == True
- - actual_create_tmp_folder.stat.isdir == True
-
-- name: create temp file with suffix
- win_tempfile:
- suffix: test-suffix
- register: create_tmp_file_suffix
-
-- name: get stat of temp file with suffix
- win_stat:
- path: "{{create_tmp_file_suffix.path}}"
- register: actual_creat_tmp_file_suffix
-
-- name: assert create temp file with suffix
- assert:
- that:
- - create_tmp_file_suffix is changed
- - create_tmp_file_suffix.state == 'file'
- - create_tmp_file_suffix.path.startswith(temp_value + '\\ansible.')
- - create_tmp_file_suffix.path.endswith('test-suffix')
- - actual_creat_tmp_file_suffix.stat.exists == True
- - actual_creat_tmp_file_suffix.stat.isdir == False
-
-- name: create temp file with different prefix
- win_tempfile:
- prefix: test-prefix
- register: create_tmp_file_prefix
-
-- name: get stat of temp file with prefix
- win_stat:
- path: "{{create_tmp_file_prefix.path}}"
- register: actual_creat_tmp_file_prefix
-
-- name: assert create temp file with prefix
- assert:
- that:
- - create_tmp_file_prefix is changed
- - create_tmp_file_prefix.state == 'file'
- - create_tmp_file_prefix.path.startswith(temp_value + '\\test-prefix')
- - actual_creat_tmp_file_prefix.stat.exists == True
- - actual_creat_tmp_file_prefix.stat.isdir == False
-
-- name: create new temp file folder
- win_file:
- path: '{{test_tempfile_path}}\testing folder'
- state: directory
-
-- block:
- - name: create temp file with different path
- win_tempfile:
- path: '{{test_tempfile_path}}\testing folder'
- register: create_tmp_file_difference_path
-
- - name: get stat of temp file with different path
- win_stat:
- path: "{{create_tmp_file_difference_path.path}}"
- register: actual_creat_tmp_file_different_path
-
- - name: assert create temp file with different path
- assert:
- that:
- - create_tmp_file_difference_path is changed
- - create_tmp_file_difference_path.state == 'file'
- - create_tmp_file_difference_path.path.startswith(test_tempfile_path + '\\testing folder\\ansible.')
- - actual_creat_tmp_file_different_path.stat.exists == True
- - actual_creat_tmp_file_different_path.stat.isdir == False
-
- - name: create temp file with DOS 8.3 short name
- win_tempfile:
- path: '{{ test_tempfile_path }}\TESTIN~1'
- register: create_tmp_file_dos_path
-
- - name: get stat of temp file with different path
- win_stat:
- path: '{{ create_tmp_file_dos_path.path }}'
- register: actual_create_tmp_file_dos_path
-
- - name: assert create temp file with different path
- assert:
- that:
- - create_tmp_file_dos_path is changed
- - create_tmp_file_dos_path.state == 'file'
- - create_tmp_file_dos_path.path.startswith(test_tempfile_path + '\\testing folder\\ansible.')
- - actual_create_tmp_file_dos_path.stat.exists == True
- - actual_create_tmp_file_dos_path.stat.isdir == False
-
- always:
- - name: delete temp file folder
- win_file:
- path: "{{test_tempfile_path}}"
- state: absent
-
-- name: get current working directory
- win_shell: $pwd.Path
- register: current_dir
-
-- name: create directory for relative dir tests
- win_file:
- path: '{{ current_dir.stdout | trim }}\win_tempfile'
- state: directory
-
-- block:
- - name: create temp folder with relative path
- win_tempfile:
- path: win_tempfile
- state: directory
- register: create_relative
-
- - name: get stat of temp folder with relative path
- win_stat:
- path: '{{ create_relative.path }}'
- register: actual_create_relative
-
- - name: assert create temp folder with relative path
- assert:
- that:
- - create_relative is changed
- - create_relative.state == 'directory'
- - create_relative.path.startswith((current_dir.stdout | trim) + '\\win_tempfile\\ansible.')
- - actual_create_relative.stat.exists == True
- - actual_create_relative.stat.isdir == True
-
- always:
- - name: remove relative directory tests
- win_file:
- path: '{{ current_dir.stdout | trim }}\win_tempfile'
- state: absent
diff --git a/test/integration/targets/win_template/aliases b/test/integration/targets/win_template/aliases
deleted file mode 100644
index 1eed2ecfaf..0000000000
--- a/test/integration/targets/win_template/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group1
-shippable/windows/smoketest
diff --git a/test/integration/targets/win_template/files/foo.dos.txt b/test/integration/targets/win_template/files/foo.dos.txt
deleted file mode 100644
index b716eca026..0000000000
--- a/test/integration/targets/win_template/files/foo.dos.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-BEGIN
-templated_var_loaded
-END
diff --git a/test/integration/targets/win_template/files/foo.unix.txt b/test/integration/targets/win_template/files/foo.unix.txt
deleted file mode 100644
index d33849f2b5..0000000000
--- a/test/integration/targets/win_template/files/foo.unix.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-BEGIN
-templated_var_loaded
-END
diff --git a/test/integration/targets/win_template/meta/main.yml b/test/integration/targets/win_template/meta/main.yml
deleted file mode 100644
index d328716dfa..0000000000
--- a/test/integration/targets/win_template/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_win_tests
diff --git a/test/integration/targets/win_template/tasks/main.yml b/test/integration/targets/win_template/tasks/main.yml
deleted file mode 100644
index 417aa89ab9..0000000000
--- a/test/integration/targets/win_template/tasks/main.yml
+++ /dev/null
@@ -1,291 +0,0 @@
-# test code for the template module
-# (c) 2014, Michael DeHaan <michael.dehaan@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# DOS TEMPLATE
-- name: fill in a basic template (DOS)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.dos.templated'
- register: template_result
-
-- name: verify that the file was marked as changed (DOS)
- assert:
- that:
- - 'template_result is changed'
-
-- name: fill in a basic template again (DOS)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.dos.templated'
- register: template_result2
-
-- name: verify that the template was not changed (DOS)
- assert:
- that:
- - 'template_result2 is not changed'
-
-# VERIFY DOS CONTENTS
-- name: copy known good into place (DOS)
- win_copy:
- src: foo.dos.txt
- dest: '{{ win_output_dir }}\\foo.dos.txt'
-
-- name: compare templated file to known good (DOS)
- raw: fc.exe {{ win_output_dir }}\\foo.dos.templated {{ win_output_dir }}\\foo.dos.txt
- register: diff_result
-
-- debug:
- var: diff_result
-
-- name: verify templated file matches known good (DOS)
- assert:
- that:
- - '"FC: no differences encountered" in diff_result.stdout'
- - "diff_result.rc == 0"
-
-# UNIX TEMPLATE
-- name: fill in a basic template (Unix)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.unix.templated'
- newline_sequence: '\n'
- register: template_result
-
-- name: verify that the file was marked as changed (Unix)
- assert:
- that:
- - 'template_result is changed'
-
-- name: fill in a basic template again (Unix)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.unix.templated'
- newline_sequence: '\n'
- register: template_result2
-
-- name: verify that the template was not changed (Unix)
- assert:
- that:
- - 'template_result2 is not changed'
-
-# VERIFY UNIX CONTENTS
-- name: copy known good into place (Unix)
- win_copy:
- src: foo.unix.txt
- dest: '{{ win_output_dir }}\\foo.unix.txt'
-
-- name: compare templated file to known good (Unix)
- raw: fc.exe {{ win_output_dir }}\\foo.unix.templated {{ win_output_dir }}\\foo.unix.txt
- register: diff_result
-
-- debug:
- var: diff_result
-
-- name: verify templated file matches known good (Unix)
- assert:
- that:
- - '"FC: no differences encountered" in diff_result.stdout'
-
-# VERIFY DOS CONTENTS
-- name: copy known good into place (DOS)
- win_copy:
- src: foo.dos.txt
- dest: '{{ win_output_dir }}\\foo.dos.txt'
-
-- name: compare templated file to known good (DOS)
- raw: fc.exe {{ win_output_dir }}\\foo.dos.templated {{ win_output_dir }}\\foo.dos.txt
- register: diff_result
-
-- debug:
- var: diff_result
-
-- name: verify templated file matches known good (DOS)
- assert:
- that:
- - '"FC: no differences encountered" in diff_result.stdout'
-
-# TEST BACKUP
-- name: test backup (check_mode)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.unix.templated'
- backup: yes
- register: cm_backup_result
- check_mode: yes
-
-- name: verify that a backup_file was returned
- assert:
- that:
- - cm_backup_result is changed
- - cm_backup_result.backup_file is not none
-
-- name: test backup (normal mode)
- win_template:
- src: foo.j2
- dest: '{{ win_output_dir }}/foo.unix.templated'
- backup: yes
- register: nm_backup_result
-
-- name: check backup_file
- win_stat:
- path: '{{ nm_backup_result.backup_file }}'
- register: backup_file
-
-- name: verify that a backup_file was returned
- assert:
- that:
- - nm_backup_result is changed
- - backup_file.stat.exists == true
-
-- name: create template dest directory
- win_file:
- path: '{{win_output_dir}}\directory'
- state: directory
-
-- name: template src file to directory with backslash (check mode)
- win_template:
- src: foo.j2
- dest: '{{win_output_dir}}\directory\'
- check_mode: yes
- register: template_to_dir_backslash_check
-
-- name: get result of template src file to directory with backslash (check_mode)
- win_stat:
- path: '{{win_output_dir}}\directory\foo.j2'
- register: template_to_dir_backslash_result_check
-
-- name: assert template src file to directory with backslash (check mode)
- assert:
- that:
- - template_to_dir_backslash_check is changed
- - not template_to_dir_backslash_result_check.stat.exists
-
-- name: template src file to directory with backslash
- win_template:
- src: foo.j2
- dest: '{{win_output_dir}}\directory\'
- register: template_to_dir_backslash
-
-- name: get result of template src file to directory with backslash
- win_stat:
- path: '{{win_output_dir}}\directory\foo.j2'
- register: template_to_dir_backslash_result
-
-- name: assert template src file to directory with backslash
- assert:
- that:
- - template_to_dir_backslash is changed
- - template_to_dir_backslash_result.stat.exists
- - template_to_dir_backslash_result.stat.checksum == 'ed4f166b2937875ecad39c06648551f5af0b56d3'
-
-- name: template src file to directory with backslash (idempotent)
- win_template:
- src: foo.j2
- dest: '{{win_output_dir}}\directory\'
- register: template_to_dir_backslash_again
-
-- name: assert template src file to directory with backslash (idempotent)
- assert:
- that:
- - not template_to_dir_backslash_again is changed
-
-- name: template src file to directory (check mode)
- win_template:
- src: another_foo.j2
- dest: '{{win_output_dir}}\directory'
- check_mode: yes
- register: template_to_dir_check
-
-- name: get result of template src file to directory (check_mode)
- win_stat:
- path: '{{win_output_dir}}\directory\another_foo.j2'
- register: template_to_dir_result_check
-
-- name: assert template src file to directory (check mode)
- assert:
- that:
- - template_to_dir_check is changed
- - not template_to_dir_result_check.stat.exists
-
-- name: template src file to directory
- win_template:
- src: another_foo.j2
- dest: '{{win_output_dir}}\directory'
- register: template_to_dir
-
-- name: get result of template src file to directory
- win_stat:
- path: '{{win_output_dir}}\directory\another_foo.j2'
- register: template_to_dir_result
-
-- name: assert template src file to directory with
- assert:
- that:
- - template_to_dir is changed
- - template_to_dir_result.stat.exists
- - template_to_dir_result.stat.checksum == 'b10b6f27290d554a77da2457b2ccd7d6de86b920'
-
-- name: template src file to directory (idempotent)
- win_template:
- src: another_foo.j2
- dest: '{{win_output_dir}}\directory'
- register: template_to_dir_again
-
-- name: assert template src file to directory (idempotent)
- assert:
- that:
- - not template_to_dir_again is changed
-
-- name: template a file with utf-8 encoding
- win_template:
- src: foo.utf-8.j2
- dest: '{{ win_output_dir }}\foo.encoding.txt'
- register: template_utf8
-
-- name: slurp utf-8 templated file
- slurp:
- path: '{{ win_output_dir }}\foo.encoding.txt'
- register: template_utf8_actual
-
-- name: get expected templated contents
- set_fact:
- expected_content: '{{ lookup("template", "foo.utf-8.j2") | trim }}'
-
-- name: assert template a file with utf-8 encoding
- assert:
- that:
- - template_utf8 is changed
- - template_utf8_actual.content | b64decode(encoding='utf-8') == expected_content + "\r\n"
-
-- name: template a file with windows-1252 encoding
- win_template:
- src: foo.utf-8.j2
- dest: '{{ win_output_dir }}\foo.encoding.txt'
- output_encoding: windows-1252
- register: template_windows_1252
-
-- name: slurp windows-1252 encoding
- slurp:
- path: '{{ win_output_dir }}\foo.encoding.txt'
- register: template_windows_1252_actual
-
-- name: assert template a file with windows-1252 encoding
- assert:
- that:
- - template_windows_1252 is changed
- - template_windows_1252_actual.content | b64decode(encoding='windows-1252') == expected_content + "\r\n"
diff --git a/test/integration/targets/win_template/templates/another_foo.j2 b/test/integration/targets/win_template/templates/another_foo.j2
deleted file mode 100644
index 4ee9bca2d7..0000000000
--- a/test/integration/targets/win_template/templates/another_foo.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-ABC
-{{ templated_var }}
-DEF
diff --git a/test/integration/targets/win_template/templates/foo.j2 b/test/integration/targets/win_template/templates/foo.j2
deleted file mode 100644
index e6e3485216..0000000000
--- a/test/integration/targets/win_template/templates/foo.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-BEGIN
-{{ templated_var }}
-END
diff --git a/test/integration/targets/win_template/templates/foo.utf-8.j2 b/test/integration/targets/win_template/templates/foo.utf-8.j2
deleted file mode 100644
index 65b95669b8..0000000000
--- a/test/integration/targets/win_template/templates/foo.utf-8.j2
+++ /dev/null
@@ -1 +0,0 @@
-—café— - {{ templated_var }}
diff --git a/test/integration/targets/win_template/templates/foo2.j2 b/test/integration/targets/win_template/templates/foo2.j2
deleted file mode 100644
index 710d55a736..0000000000
--- a/test/integration/targets/win_template/templates/foo2.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-BEGIN
-[% templated_var %]
-END
diff --git a/test/integration/targets/win_template/vars/main.yml b/test/integration/targets/win_template/vars/main.yml
deleted file mode 100644
index 1e8f64ccf4..0000000000
--- a/test/integration/targets/win_template/vars/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-templated_var: templated_var_loaded
diff --git a/test/integration/targets/win_updates/aliases b/test/integration/targets/win_updates/aliases
deleted file mode 100644
index 98b74ac987..0000000000
--- a/test/integration/targets/win_updates/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group2
-unstable
diff --git a/test/integration/targets/win_updates/defaults/main.yml b/test/integration/targets/win_updates/defaults/main.yml
deleted file mode 100644
index 4946ccb037..0000000000
--- a/test/integration/targets/win_updates/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-win_updates_dir: '{{win_output_dir}}\win_updates'
diff --git a/test/integration/targets/win_updates/tasks/main.yml b/test/integration/targets/win_updates/tasks/main.yml
deleted file mode 100644
index 182090e98a..0000000000
--- a/test/integration/targets/win_updates/tasks/main.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-- name: ensure test folder exists
- win_file:
- path: '{{win_updates_dir}}'
- state: directory
-
-- name: ensure WUA service is running
- win_service:
- name: wuauserv
- state: started
- start_mode: manual
-
-- block:
- - include_tasks: tests.yml
-
- always:
- - name: ensure test folder is deleted
- win_file:
- path: '{{win_updates_dir}}'
- state: absent
-
- - name: ensure WUA service is running
- win_service:
- name: wuauserv
- state: started
- start_mode: manual
diff --git a/test/integration/targets/win_updates/tasks/tests.yml b/test/integration/targets/win_updates/tasks/tests.yml
deleted file mode 100644
index fe54a4b9c8..0000000000
--- a/test/integration/targets/win_updates/tasks/tests.yml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-- name: expect failure when state is not a valid option
- win_updates:
- state: invalid
- register: invalid_state
- failed_when: invalid_state.msg != 'state must be either installed, searched or downloaded'
-
-- name: ensure log file not present before tests
- win_file:
- path: '{{win_updates_dir}}/update.log'
- state: absent
-
-- name: search for updates without log output
- win_updates:
- state: searched
- category_names:
- - CriticalUpdates
- register: update_search_without_log
-
-- name: get stat of update without log file
- win_stat:
- path: '{{win_updates_dir}}/update.log'
- register: update_search_without_log_actual
-
-- name: assert search for updates without log output
- assert:
- that:
- - not update_search_without_log is changed
- - update_search_without_log.reboot_required == False
- - update_search_without_log.updates is defined
- - update_search_without_log.installed_update_count is defined
- - update_search_without_log.found_update_count is defined
- - update_search_without_log_actual.stat.exists == False
-
-- name: search for updates with log output (check)
- win_updates:
- state: searched
- category_names: CriticalUpdates
- log_path: '{{win_updates_dir}}/update.log'
- register: update_search_with_log_check
- check_mode: yes
-
-- name: get stat of update log file (check)
- win_stat:
- path: '{{win_updates_dir}}/update.log'
- register: update_search_with_log_check_actual
-
-- name: assert search for updates with log output
- assert:
- that:
- - not update_search_with_log_check is changed
- - update_search_with_log_check.reboot_required == False
- - update_search_with_log_check.updates is defined
- - update_search_with_log_check.installed_update_count is defined
- - update_search_with_log_check.found_update_count is defined
- - update_search_with_log_check_actual.stat.exists == False
-
-- name: search for updates with log output and use scheduled task
- win_updates:
- state: searched
- category_names:
- - CriticalUpdates
- log_path: '{{win_updates_dir}}/update.log'
- use_scheduled_task: yes
- register: update_search_with_log
-
-- name: get stat of update log file
- win_stat:
- path: '{{win_updates_dir}}/update.log'
- register: update_search_with_log_actual
-
-- name: assert search for updates with log output
- assert:
- that:
- - not update_search_with_log is changed
- - update_search_with_log.reboot_required == False
- - update_search_with_log.updates is defined
- - update_search_with_log.installed_update_count is defined
- - update_search_with_log.found_update_count is defined
- - update_search_with_log_actual.stat.exists
-
-- name: ensure WUA service is stopped for tests
- win_service:
- name: wuauserv
- state: stopped
- start_mode: disabled
-
-- name: expect failed when running with stopped WUA service
- win_updates:
- state: searched
- category_names:
- - CriticalUpdates
- register: update_service_stopped_failed
- failed_when:
- - "'Failed to search for updates with criteria' not in update_service_stopped_failed.msg"
- - "'The service cannot be started' not in update_service_stopped_failed.msg"
diff --git a/test/integration/targets/win_uri/aliases b/test/integration/targets/win_uri/aliases
deleted file mode 100644
index ab5e3056cb..0000000000
--- a/test/integration/targets/win_uri/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/windows/group6
-needs/httptester
-skip/windows/2008 # httptester requires SSH which doesn't work with 2008
diff --git a/test/integration/targets/win_uri/meta/main.yml b/test/integration/targets/win_uri/meta/main.yml
deleted file mode 100644
index 8b53e81a07..0000000000
--- a/test/integration/targets/win_uri/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- prepare_http_tests
diff --git a/test/integration/targets/win_uri/tasks/main.yml b/test/integration/targets/win_uri/tasks/main.yml
deleted file mode 100644
index d2ea71e994..0000000000
--- a/test/integration/targets/win_uri/tasks/main.yml
+++ /dev/null
@@ -1,547 +0,0 @@
----
-# get with mismatch https
-# get with mismatch https and ignore validation
-
-- name: get request without return_content
- win_uri:
- url: https://{{httpbin_host}}/get
- return_content: no
- register: get_request_without_content
-
-- name: assert get request without return_content
- assert:
- that:
- - not get_request_without_content.changed
- - get_request_without_content.content is not defined
- - get_request_without_content.json is not defined
- - get_request_without_content.status_code == 200
-
-- name: get request with xml content
- win_uri:
- url: https://{{httpbin_host}}/xml
- return_content: yes
- register: get_request_with_xml_content
-
-- name: assert get request with xml content
- assert:
- that:
- - not get_request_with_xml_content.changed
- - get_request_with_xml_content.content is defined
- - get_request_with_xml_content.json is not defined
- - get_request_with_xml_content.status_code == 200
-
-- name: get request with binary content
- win_uri:
- url: https://{{httpbin_host}}/image/png
- return_content: yes
- register: get_request_with_binary_content
-
-- name: assert get request with binary content
- assert:
- that:
- - not get_request_with_binary_content.changed
- - get_request_with_binary_content.content is defined
- - get_request_with_binary_content.json is not defined
- - get_request_with_xml_content.status_code == 200
-
-- name: get request with return_content and dest (check mode)
- win_uri:
- url: https://{{httpbin_host}}/get
- return_content: yes
- dest: '{{ remote_tmp_dir }}\get.json'
- register: get_request_with_dest_check
- check_mode: yes
-
-- name: get stat of downloaded file (check mode)
- win_stat:
- path: '{{ remote_tmp_dir }}\get.json'
- register: get_request_with_dest_actual_check
-
-- name: assert get request with return_content and dest (check mode)
- assert:
- that:
- - get_request_with_dest_check.changed
- - get_request_with_dest_check.content is defined
- - get_request_with_dest_check.json is defined
- - get_request_with_dest_actual_check.stat.exists == False
-
-- name: get request with return_content and dest
- win_uri:
- url: https://{{httpbin_host}}/base64/{{ '{"key":"value"}' | b64encode }}
- return_content: yes
- dest: '{{ remote_tmp_dir }}\get.json'
- register: get_request_with_dest
-
-- name: get stat of downloaded file
- win_stat:
- path: '{{ remote_tmp_dir }}\get.json'
- checksum_algorithm: sha1
- get_checksum: yes
- register: get_request_with_dest_actual
-
-- name: assert get request with return_content and dest
- assert:
- that:
- - get_request_with_dest.changed
- - get_request_with_dest.content is defined
- - get_request_with_dest.json is defined
- - get_request_with_dest_actual.stat.exists == True
- - get_request_with_dest_actual.stat.checksum == get_request_with_dest.content|hash('sha1')
-
-- name: get request with return_content and dest (idempotent)
- win_uri:
- url: https://{{httpbin_host}}/base64/{{ '{"key":"value"}' | b64encode }}
- return_content: yes
- dest: '{{ remote_tmp_dir }}\get.json'
- register: get_request_with_dest_again
-
-- name: assert get request with return_content and dest (idempotent)
- assert:
- that:
- - not get_request_with_dest_again.changed
-
-- name: test request with creates option should skip
- win_uri:
- url: https://{{httpbin_host}}/get
- creates: '{{ remote_tmp_dir }}\get.json'
- register: request_with_creates_skipped
-
-- name: assert test request with creates option should skip
- assert:
- that:
- - not request_with_creates_skipped.changed
- - request_with_creates_skipped.skipped
-
-- name: test request with creates option should not skip
- win_uri:
- url: https://{{httpbin_host}}/get
- creates: '{{ remote_tmp_dir }}\fake.json'
- register: request_with_creates_not_skipped
-
-- name: assert test request with creates option should not skip
- assert:
- that:
- - not request_with_creates_not_skipped.changed
- - request_with_creates_not_skipped.skipped is not defined
-
-- name: post request with return_content, dest and different content
- win_uri:
- url: https://{{httpbin_host}}/post
- method: POST
- content_type: application/json
- body: '{"foo": "bar"}'
- return_content: yes
- dest: '{{ remote_tmp_dir }}\get.json'
- register: post_request_with_different_content
-
-- name: get stat of downloaded file
- win_stat:
- path: '{{ remote_tmp_dir }}\get.json'
- checksum_algorithm: sha1
- get_checksum: yes
- register: post_request_with_different_content_actual
-
-- name: assert post request with return_content, dest and different content
- assert:
- that:
- - post_request_with_different_content.changed
- - post_request_with_different_content_actual.stat.exists == True
- - post_request_with_different_content_actual.stat.checksum == post_request_with_different_content.content|hash('sha1')
-
-- name: test safe redirection of get
- win_uri:
- url: https://{{httpbin_host}}/redirect/2
- register: redirect_safe
-
-- name: assert safe redirection of get
- assert:
- that:
- - redirect_safe.status_code == 200
- - redirect_safe.response_uri == 'https://' + httpbin_host + '/get'
-
-- name: test safe redirection of head
- win_uri:
- url: https://{{httpbin_host}}/redirect/2
- method: HEAD
- register: redirect_safe_head
-
-- name: assert safe redirection of head
- assert:
- that:
- - redirect_safe_head.status_code == 200
- - redirect_safe_head.response_uri == 'https://' + httpbin_host + '/get'
-
-- name: test safe redirection of put
- win_uri:
- url: https://{{httpbin_host}}/redirect-to?url=https://{{httpbin_host}}/put
- body: data
- status_code: 302
- method: PUT
- register: redirect_safe_put
-
-- name: assert safe redirection of put
- assert:
- that:
- - redirect_safe_put.status_code == 302
- - redirect_safe_put.response_uri == 'https://' + httpbin_host + '/redirect-to?url=https://' + httpbin_host + '/put'
-
-- name: test none redirection of get
- win_uri:
- url: https://{{httpbin_host}}/redirect/2
- status_code: 302
- follow_redirects: none
- register: redirect_none
-
-- name: assert none redirection of get
- assert:
- that:
- - redirect_none.status_code == 302
- - redirect_none.response_uri == 'https://' + httpbin_host + '/redirect/2'
-
-- name: test none redirection of put
- win_uri:
- url: https://{{httpbin_host}}/redirect-to?url=https://{{httpbin_host}}/put
- body: data
- status_code: 302
- method: PUT
- follow_redirects: none
- register: redirect_none_put
-
-- name: assert none redirection of put
- assert:
- that:
- - redirect_none_put.status_code == 302
- - redirect_none_put.response_uri == 'https://' + httpbin_host + '/redirect-to?url=https://' + httpbin_host + '/put'
-
-- name: test all redirection of get
- win_uri:
- url: https://{{httpbin_host}}/redirect/2
- follow_redirects: all
- register: redirect_all
-
-- name: assert all redirection of get
- assert:
- that:
- - redirect_all.status_code == 200
- - redirect_all.response_uri == 'https://' + httpbin_host + '/get'
-
-- name: test all redirection of put
- win_uri:
- url: https://{{httpbin_host}}/redirect-to?url=https://{{httpbin_host}}/put
- body: data
- method: PUT
- follow_redirects: all
- register: redirect_all_put
-
-- name: assert all redirection of put
- assert:
- that:
- - redirect_all_put.status_code == 200
- - redirect_all_put.response_uri == 'https://' + httpbin_host + '/put'
-
-- name: test exceeded maximum redirection
- win_uri:
- url: https://{{httpbin_host}}/redirect/5
- maximum_redirection: 4
- status_code: 302
- register: maximum_redirection
-
-- name: assert exceeded maximum redirection
- assert:
- that:
- - maximum_redirection.status_code == 302
- - maximum_redirection.response_uri == 'https://' + httpbin_host + '/relative-redirect/1'
-
-- name: test basic auth
- win_uri:
- url: https://{{httpbin_host}}/basic-auth/user/passwd
- user: user
- password: passwd
- register: basic_auth
-
-- name: assert test basic auth
- assert:
- that:
- - not basic_auth.changed
- - basic_auth.status_code == 200
-
-- name: test basic auth with force auth
- win_uri:
- url: https://{{httpbin_host}}/hidden-basic-auth/user/passwd
- user: user
- password: passwd
- force_basic_auth: yes
- register: basic_auth_forced
-
-- name: assert test basic auth with forced auth
- assert:
- that:
- - not basic_auth_forced.changed
- - basic_auth_forced.status_code == 200
-
-- name: test PUT
- win_uri:
- url: https://{{httpbin_host}}/put
- method: PUT
- body: foo=bar
- return_content: yes
- register: put_request
-
-- name: assert test PUT
- assert:
- that:
- - not put_request.changed
- - put_request.status_code == 200
- - put_request.json.data == 'foo=bar'
-
-- name: test OPTIONS
- win_uri:
- url: https://{{httpbin_host}}/
- method: OPTIONS
- register: option_request
-
-- name: assert test OPTIONS
- assert:
- that:
- - not option_request.changed
- - option_request.status_code == 200
- - 'option_request.allow.split(", ")|sort == ["GET", "HEAD", "OPTIONS"]'
-
-# SNI Tests
-
-- name: validate status_codes are correct
- win_uri:
- url: https://{{httpbin_host}}/status/202
- status_code:
- - 202
- - 418
- method: POST
- body: foo
- register: status_code_check
-
-- name: assert validate status_codes are correct
- assert:
- that:
- - not status_code_check.changed
- - status_code_check.status_code == 202
-
-- name: send JSON body with dict type
- win_uri:
- url: https://{{httpbin_host}}/post
- method: POST
- body:
- foo: bar
- list:
- - 1
- - 2
- dict:
- foo: bar
- headers:
- 'Content-Type': 'text/json'
- return_content: yes
- register: json_as_dict
-
-- name: set fact of expected json dict
- set_fact:
- json_as_dict_value:
- foo: bar
- list:
- - 1
- - 2
- dict:
- foo: bar
-
-- name: assert send JSON body with dict type
- assert:
- that:
- - not json_as_dict.changed
- - json_as_dict.json.json == json_as_dict_value
- - json_as_dict.status_code == 200
-
-- name: send JSON body with 1 item in list
- win_uri:
- url: https://{{httpbin_host}}/post
- method: POST
- body:
- - foo: bar
- headers:
- 'Content-Type': 'text/json'
- return_content: yes
- register: json_as_oneitemlist
-
-- name: set fact of expected json 1 item list
- set_fact:
- json_as_oneitemlist_value:
- - foo: bar
-
-- name: assert send JSON body with 1 item in list
- assert:
- that:
- - not json_as_oneitemlist.changed
- - json_as_oneitemlist.json.json == json_as_oneitemlist_value
- - json_as_oneitemlist.status_code == 200
-
-- name: get request with custom headers
- win_uri:
- url: https://{{httpbin_host}}/get
- headers:
- Test-Header: hello
- Another-Header: world
- return_content: yes
- register: get_custom_header
-
-- name: assert request with custom headers
- assert:
- that:
- - not get_custom_header.changed
- - get_custom_header.status_code == 200
- - get_custom_header.json.headers['Test-Header'] == 'hello'
- - get_custom_header.json.headers['Another-Header'] == 'world'
-
-- name: Validate invalid method
- win_uri:
- url: https://{{ httpbin_host }}/anything
- method: UNKNOWN
- register: invalid_method
- ignore_errors: yes
-
-- name: Assert invalid method fails
- assert:
- that:
- - invalid_method is failure
- - invalid_method.status_code == 405
- - invalid_method.status_description == 'METHOD NOT ALLOWED'
-
-# client cert auth tests
-
-- name: get request with timeout
- win_uri:
- url: https://{{httpbin_host}}/delay/10
- timeout: 5
- register: get_with_timeout_fail
- failed_when: '"The operation has timed out" not in get_with_timeout_fail.msg'
-
-- name: connect to fakepath that does not exist
- win_uri:
- url: https://{{httpbin_host}}/fakepath
- status_code: 404
- return_content: yes
- register: invalid_path
-
-# verifies the return values are still set on a non 200 response
-- name: assert connect to fakepath that does not exist
- assert:
- that:
- - not invalid_path.changed
- - invalid_path.status_code == 404
- - invalid_path.status_description == 'NOT FOUND'
- - invalid_path.content is defined
- - invalid_path.method == 'GET'
- - invalid_path.connection is defined
-
-- name: post request with custom headers
- win_uri:
- url: https://{{httpbin_host}}/post
- method: POST
- headers:
- Test-Header: hello
- Another-Header: world
- content_type: application/json
- body: '{"foo": "bar"}'
- return_content: yes
- register: post_request_with_custom_headers
-
-- name: assert post with custom headers
- assert:
- that:
- - not post_request_with_custom_headers.changed
- - post_request_with_custom_headers.status_code == 200
- - post_request_with_custom_headers.json.headers['Content-Type'] == "application/json"
- - post_request_with_custom_headers.json.headers['Test-Header'] == 'hello'
- - post_request_with_custom_headers.json.headers['Another-Header'] == 'world'
-
-- name: validate status codes as list of strings
- win_uri:
- url: https://{{httpbin_host}}/status/202
- status_code:
- - '202'
- - '418'
- method: POST
- body: foo
- return_content: yes
- register: request_status_code_string
-
-- name: assert status codes as list of strings
- assert:
- that:
- - not request_status_code_string.changed
- - request_status_code_string.status_code == 202
-
-- name: validate status codes as comma separated list
- win_uri:
- url: https://{{httpbin_host}}/status/202
- status_code: 202, 418
- method: POST
- body: foo
- return_content: yes
- register: request_status_code_comma
-
-- name: assert status codes as comma separated list
- assert:
- that:
- - not request_status_code_comma.changed
- - request_status_code_comma.status_code == 202
-
-# https://github.com/ansible/ansible/issues/55294
-- name: get json content that is an array
- win_uri:
- url: https://{{httpbin_host}}/base64/{{ '[{"abc":"def"}]' | b64encode }}
- return_content: yes
- register: content_array
-
-- name: assert content of json array
- assert:
- that:
- - not content_array is changed
- - content_array.content == '[{"abc":"def"}]'
- - content_array.json == [{"abc":"def"}]
-
-- name: send request with explicit http_agent
- win_uri:
- url: https://{{httpbin_host}}/get
- http_agent: test-agent
- return_content: yes
- register: http_agent_option
-
-- name: assert send request with explicit http_agent
- assert:
- that:
- - http_agent_option.json.headers['User-Agent'] == 'test-agent'
-
-- name: send request with explicit User-Agent header
- win_uri:
- url: https://{{httpbin_host}}/get
- headers:
- User-Agent: test-agent
- return_content: yes
- register: http_agent_header
-
-- name: assert send request with explicit User-Agent header
- assert:
- that:
- - http_agent_header.json.headers['User-Agent'] == 'test-agent'
-
-- name: send request with explicit http_agent and header (http_agent wins)
- win_uri:
- url: https://{{httpbin_host}}/get
- http_agent: test-agent-option
- headers:
- User-Agent: test-agent-header
- return_content: yes
- register: http_agent_combo
-
-- name: assert send request with explicit http_agent and header (http_agent wins)
- assert:
- that:
- - http_agent_combo.json.headers['User-Agent'] == 'test-agent-option'
- - http_agent_combo.warnings[0] == "The 'User-Agent' header and the 'http_agent' was set, using the 'http_agent' for web request"
diff --git a/test/integration/targets/win_user/aliases b/test/integration/targets/win_user/aliases
deleted file mode 100644
index 6036e173f1..0000000000
--- a/test/integration/targets/win_user/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group7
diff --git a/test/integration/targets/win_user/defaults/main.yml b/test/integration/targets/win_user/defaults/main.yml
deleted file mode 100644
index c6a18ed3a3..0000000000
--- a/test/integration/targets/win_user/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-test_win_user_name: test_win_user
-test_win_user_password: "T35Tus3rP@ssW0rd"
-test_win_user_password2: "pa55wOrd4te5tU53R!"
diff --git a/test/integration/targets/win_user/files/lockout_user.ps1 b/test/integration/targets/win_user/files/lockout_user.ps1
deleted file mode 100644
index e15f13f3bf..0000000000
--- a/test/integration/targets/win_user/files/lockout_user.ps1
+++ /dev/null
@@ -1,17 +0,0 @@
-trap
-{
- Write-Error -ErrorRecord $_
- exit 1;
-}
-
-$username = $args[0]
-[void][system.reflection.assembly]::LoadWithPartialName('System.DirectoryServices.AccountManagement')
-$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Machine', $env:COMPUTERNAME
-For ($i = 1; $i -le 10; $i++) {
- try {
- $pc.ValidateCredentials($username, 'b@DP@ssw0rd')
- }
- catch {
- break
- }
-}
diff --git a/test/integration/targets/win_user/tasks/main.yml b/test/integration/targets/win_user/tasks/main.yml
deleted file mode 100644
index 072a381c9e..0000000000
--- a/test/integration/targets/win_user/tasks/main.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-- name: create test group that has a network logon denied
- win_group:
- name: win_user-test
- state: present
-
-- name: add test group to SeDenyNetworkLogonRight
- win_user_right:
- name: SeDenyNetworkLogonRight
- users:
- - win_user-test
- action: add
-
-- block:
- - name: run tests
- include_tasks: tests.yml
-
- always:
- - name: remove SeDenyNetworkLogonRight on test group
- win_user_right:
- name: SeDenyNetworkLogonRight
- users:
- - win_user-test
- action: remove
-
- - name: remove test group
- win_group:
- name: win_user-test
- state: absent
-
- - name: remove the test user
- win_user:
- name: '{{ test_win_user_name }}'
- state: absent
diff --git a/test/integration/targets/win_user/tasks/tests.yml b/test/integration/targets/win_user/tasks/tests.yml
deleted file mode 100644
index 1c36d32101..0000000000
--- a/test/integration/targets/win_user/tasks/tests.yml
+++ /dev/null
@@ -1,455 +0,0 @@
-# test code for the win_user module
-# (c) 2014, Chris Church <chris@ninemoreminutes.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: remove existing test user if present
- win_user: name="{{ test_win_user_name }}" state="absent"
- register: win_user_remove_result
-
-- name: check user removal result
- assert:
- that:
- - "win_user_remove_result.name"
- - "win_user_remove_result.state == 'absent'"
-
-- name: try to remove test user again
- win_user: name="{{ test_win_user_name }}" state="absent"
- register: win_user_remove_result_again
-
-- name: check user removal result again
- assert:
- that:
- - "win_user_remove_result_again is not changed"
- - "win_user_remove_result_again.name"
- - "win_user_remove_result_again.msg"
- - "win_user_remove_result.state == 'absent'"
-
-- name: test missing user with query state
- win_user: name="{{ test_win_user_name }}" state="query"
- register: win_user_missing_query_result
-
-- name: check missing query result
- assert:
- that:
- - "win_user_missing_query_result is not changed"
- - "win_user_missing_query_result.name"
- - "win_user_missing_query_result.msg"
- - "win_user_missing_query_result.state == 'absent'"
-
-- name: test create user
- win_user: name="{{ test_win_user_name }}" password="{{ test_win_user_password }}" fullname="Test User" description="Test user account" groups="Guests"
- register: win_user_create_result
-
-- name: check user creation result
- assert:
- that:
- - "win_user_create_result is changed"
- - "win_user_create_result.name == '{{ test_win_user_name }}'"
- - "win_user_create_result.fullname == 'Test User'"
- - "win_user_create_result.description == 'Test user account'"
- - "win_user_create_result.path"
- - "win_user_create_result.state == 'present'"
-
-- name: update user full name and description
- win_user: name="{{ test_win_user_name }}" fullname="Test Ansible User" description="Test user account created by Ansible" groups=""
- register: win_user_update_result
-
-- name: check full name and description update result
- assert:
- that:
- - "win_user_update_result is changed"
- - "win_user_update_result.fullname == 'Test Ansible User'"
- - "win_user_update_result.description == 'Test user account created by Ansible'"
-
-- name: update user full name and description again with same values
- win_user: name="{{ test_win_user_name }}" fullname="Test Ansible User" description="Test user account created by Ansible"
- register: win_user_update_result_again
-
-- name: check full name and description result again
- assert:
- that:
- - "win_user_update_result_again is not changed"
- - "win_user_update_result_again.fullname == 'Test Ansible User'"
- - "win_user_update_result_again.description == 'Test user account created by Ansible'"
-
-- name: test again with no options or changes
- win_user: name="{{ test_win_user_name }}"
- register: win_user_nochange_result
-
-- name: check no changes result
- assert:
- that:
- - "win_user_nochange_result is not changed"
-
-- name: test again with query state
- win_user: name="{{ test_win_user_name }}" state="query"
- register: win_user_query_result
-
-- name: check query result
- assert:
- that:
- - "win_user_query_result is not changed"
- - "win_user_query_result.state == 'present'"
- - "win_user_query_result.name == '{{ test_win_user_name }}'"
- - "win_user_query_result.fullname == 'Test Ansible User'"
- - "win_user_query_result.description == 'Test user account created by Ansible'"
- - "win_user_query_result.path"
- - "win_user_query_result.sid"
- - "win_user_query_result.groups == []"
-
-- name: change user password
- win_user: name="{{ test_win_user_name }}" password="{{ test_win_user_password2 }}"
- register: win_user_password_result
-
-- name: check password change result
- assert:
- that:
- - "win_user_password_result is changed"
-
-- name: change user password again to same value
- win_user: name="{{ test_win_user_name }}" password="{{ test_win_user_password2 }}"
- register: win_user_password_result_again
-
-- name: check password change result again
- assert:
- that:
- - "win_user_password_result_again is not changed"
-
-- name: check update_password=on_create for existing user
- win_user: name="{{ test_win_user_name }}" password="ThisP@ssW0rdShouldNotBeUsed" update_password=on_create
- register: win_user_nopasschange_result
-
-- name: check password change with on_create flag result
- assert:
- that:
- - "win_user_nopasschange_result is not changed"
-
-- name: set password expired flag
- win_user: name="{{ test_win_user_name }}" password_expired=yes
- register: win_user_password_expired_result
-
-- name: check password expired result
- assert:
- that:
- - "win_user_password_expired_result is changed"
- - "win_user_password_expired_result.password_expired"
-
-- name: set password when expired
- win_user: name="{{ test_win_user_name }}" password={{ test_win_user_password2 }} update_password=always
- register: win_user_can_set_password_on_expired
-
-- name: check set password on expired result
- assert:
- that:
- - win_user_can_set_password_on_expired is changed
-
-- name: set password expired flag again
- win_user: name="{{ test_win_user_name }}" password_expired=yes
- register: win_user_password_expired_result
-
-- name: check password expired result
- assert:
- that:
- - "win_user_password_expired_result is changed"
- - "win_user_password_expired_result.password_expired"
-
-- name: clear password expired flag
- win_user: name="{{ test_win_user_name }}" password_expired=no
- register: win_user_clear_password_expired_result
-
-- name: check clear password expired result
- assert:
- that:
- - "win_user_clear_password_expired_result is changed"
- - "not win_user_clear_password_expired_result.password_expired"
-
-- name: set password never expires flag
- win_user: name="{{ test_win_user_name }}" password_never_expires=yes
- register: win_user_password_never_expires_result
-
-- name: check password never expires result
- assert:
- that:
- - "win_user_password_never_expires_result is changed"
- - "win_user_password_never_expires_result.password_never_expires"
-
-- name: clear password never expires flag
- win_user: name="{{ test_win_user_name }}" password_never_expires=no
- register: win_user_clear_password_never_expires_result
-
-- name: check clear password never expires result
- assert:
- that:
- - "win_user_clear_password_never_expires_result is changed"
- - "not win_user_clear_password_never_expires_result.password_never_expires"
-
-- name: set user cannot change password flag
- win_user: name="{{ test_win_user_name }}" user_cannot_change_password=yes
- register: win_user_cannot_change_password_result
-
-- name: check user cannot change password result
- assert:
- that:
- - "win_user_cannot_change_password_result is changed"
- - "win_user_cannot_change_password_result.user_cannot_change_password"
-
-- name: clear user cannot change password flag
- win_user: name="{{ test_win_user_name }}" user_cannot_change_password=no
- register: win_user_can_change_password_result
-
-- name: check clear user cannot change password result
- assert:
- that:
- - "win_user_can_change_password_result is changed"
- - "not win_user_can_change_password_result.user_cannot_change_password"
-
-- name: set account disabled flag
- win_user: name="{{ test_win_user_name }}" account_disabled=true
- register: win_user_account_disabled_result
-
-- name: check account disabled result
- assert:
- that:
- - "win_user_account_disabled_result is changed"
- - "win_user_account_disabled_result.account_disabled"
-
-- name: set password on disabled account
- win_user: name="{{ test_win_user_name }}" password={{ test_win_user_password2 }} update_password=always
- register: win_user_can_set_password_on_disabled
-
-- name: check set password on disabled result
- assert:
- that:
- - win_user_can_set_password_on_disabled is changed
- - win_user_can_set_password_on_disabled.account_disabled
-
-- name: clear account disabled flag
- win_user: name="{{ test_win_user_name }}" account_disabled=false
- register: win_user_clear_account_disabled_result
-
-- name: check clear account disabled result
- assert:
- that:
- - "win_user_clear_account_disabled_result is changed"
- - "not win_user_clear_account_disabled_result.account_disabled"
-
-- name: attempt to set account locked flag
- win_user: name="{{ test_win_user_name }}" account_locked=yes
- register: win_user_set_account_locked_result
- ignore_errors: true
-
-- name: verify that attempting to set account locked flag fails
- assert:
- that:
- - "win_user_set_account_locked_result is failed"
- - "win_user_set_account_locked_result is not changed"
-
-- name: attempt to lockout test account
- script: lockout_user.ps1 "{{ test_win_user_name }}"
-
-- name: get user to check if account locked flag is set
- win_user: name="{{ test_win_user_name }}" state="query"
- register: win_user_account_locked_result
-
-- name: clear account locked flag if set
- win_user: name="{{ test_win_user_name }}" account_locked=no
- register: win_user_clear_account_locked_result
- when: "win_user_account_locked_result.account_locked"
-
-- name: check clear account lockout result if account was locked
- assert:
- that:
- - "win_user_clear_account_locked_result is changed"
- - "not win_user_clear_account_locked_result.account_locked"
- when: "win_user_account_locked_result.account_locked"
-
-- name: assign test user to a group
- win_user: name="{{ test_win_user_name }}" groups="Users"
- register: win_user_replace_groups_result
-
-- name: check assign user to group result
- assert:
- that:
- - "win_user_replace_groups_result is changed"
- - "win_user_replace_groups_result.groups|length == 1"
- - "win_user_replace_groups_result.groups[0]['name'] == 'Users'"
-
-- name: assign test user to the same group
- win_user:
- name: "{{ test_win_user_name }}"
- groups: ["Users"]
- register: win_user_replace_groups_again_result
-
-- name: check assign user to group again result
- assert:
- that:
- - "win_user_replace_groups_again_result is not changed"
-
-- name: add user to another group
- win_user: name="{{ test_win_user_name }}" groups="Power Users" groups_action="add"
- register: win_user_add_groups_result
-
-- name: check add user to another group result
- assert:
- that:
- - "win_user_add_groups_result is changed"
- - "win_user_add_groups_result.groups|length == 2"
- - "win_user_add_groups_result.groups[0]['name'] in ('Users', 'Power Users')"
- - "win_user_add_groups_result.groups[1]['name'] in ('Users', 'Power Users')"
-
-- name: add user to another group again
- win_user:
- name: "{{ test_win_user_name }}"
- groups: "Power Users"
- groups_action: add
- register: win_user_add_groups_again_result
-
-- name: check add user to another group again result
- assert:
- that:
- - "win_user_add_groups_again_result is not changed"
-
-- name: remove user from a group
- win_user: name="{{ test_win_user_name }}" groups="Users" groups_action="remove"
- register: win_user_remove_groups_result
-
-- name: check remove user from group result
- assert:
- that:
- - "win_user_remove_groups_result is changed"
- - "win_user_remove_groups_result.groups|length == 1"
- - "win_user_remove_groups_result.groups[0]['name'] == 'Power Users'"
-
-- name: remove user from a group again
- win_user:
- name: "{{ test_win_user_name }}"
- groups:
- - "Users"
- groups_action: remove
- register: win_user_remove_groups_again_result
-
-- name: check remove user from group again result
- assert:
- that:
- - "win_user_remove_groups_again_result is not changed"
-
-- name: reassign test user to multiple groups
- win_user: name="{{ test_win_user_name }}" groups="Users, Guests" groups_action="replace"
- register: win_user_reassign_groups_result
-
-- name: check reassign user groups result
- assert:
- that:
- - "win_user_reassign_groups_result is changed"
- - "win_user_reassign_groups_result.groups|length == 2"
- - "win_user_reassign_groups_result.groups[0]['name'] in ('Users', 'Guests')"
- - "win_user_reassign_groups_result.groups[1]['name'] in ('Users', 'Guests')"
-
-- name: reassign test user to multiple groups again
- win_user:
- name: "{{ test_win_user_name }}"
- groups:
- - "Users"
- - "Guests"
- groups_action: replace
- register: win_user_reassign_groups_again_result
-
-- name: check reassign user groups again result
- assert:
- that:
- - "win_user_reassign_groups_again_result is not changed"
-
-- name: remove user from all groups
- win_user: name="{{ test_win_user_name }}" groups=""
- register: win_user_remove_all_groups_result
-
-- name: check remove user from all groups result
- assert:
- that:
- - "win_user_remove_all_groups_result is changed"
- - "win_user_remove_all_groups_result.groups|length == 0"
-
-- name: remove user from all groups again
- win_user:
- name: "{{ test_win_user_name }}"
- groups: []
- register: win_user_remove_all_groups_again_result
-
-- name: check remove user from all groups again result
- assert:
- that:
- - "win_user_remove_all_groups_again_result is not changed"
-
-- name: assign user to invalid group
- win_user: name="{{ test_win_user_name }}" groups="Userz"
- register: win_user_invalid_group_result
- ignore_errors: true
-
-- name: check invalid group result
- assert:
- that:
- - "win_user_invalid_group_result is failed"
- - "win_user_invalid_group_result.msg"
- - win_user_invalid_group_result.msg is match("group 'Userz' not found")
-
-- name: remove test user when finished
- win_user: name="{{ test_win_user_name }}" state="absent"
- register: win_user_final_remove_result
-
-- name: check final user removal result
- assert:
- that:
- - "win_user_final_remove_result is changed"
- - "win_user_final_remove_result.name"
- - "win_user_final_remove_result.msg"
- - "win_user_final_remove_result.state == 'absent'"
-
-- name: test removed user with query state
- win_user: name="{{ test_win_user_name }}" state="query"
- register: win_user_removed_query_result
-
-- name: check removed query result
- assert:
- that:
- - "win_user_removed_query_result is not changed"
- - "win_user_removed_query_result.name"
- - "win_user_removed_query_result.msg"
- - "win_user_removed_query_result.state == 'absent'"
-
-# Tests the Test-Credential path where LogonUser fails if the user does not
-# have the right for a network logon
-- name: add new user that has the right SeDenyNetworkLogonRight
- win_user:
- name: '{{ test_win_user_name }}'
- password: '{{ test_win_user_password2 }}'
- state: present
- groups:
- - win_user-test
-
-- name: add new user that has the right SeDenyNetworkLogonRight (idempotent)
- win_user:
- name: '{{ test_win_user_name }}'
- password: '{{ test_win_user_password2 }}'
- state: present
- groups:
- - win_user-test
- register: deny_network_idempotent
-
-- name: assert add new user that has the right SeDenyNetworkLogonRight (idempotent)
- assert:
- that:
- - not deny_network_idempotent is changed
diff --git a/test/integration/targets/win_user_right/aliases b/test/integration/targets/win_user_right/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_user_right/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_user_right/defaults/main.yml b/test/integration/targets/win_user_right/defaults/main.yml
deleted file mode 100644
index 3db8c4f006..0000000000
--- a/test/integration/targets/win_user_right/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_win_user_right_name: SeRelabelPrivilege
diff --git a/test/integration/targets/win_user_right/library/test_get_right.ps1 b/test/integration/targets/win_user_right/library/test_get_right.ps1
deleted file mode 100644
index 977022e4db..0000000000
--- a/test/integration/targets/win_user_right/library/test_get_right.ps1
+++ /dev/null
@@ -1,44 +0,0 @@
-#!powershell
-
-#Requires -Module Ansible.ModuleUtils.Legacy
-
-# basic script to get the lsit of users in a particular right
-# this is quite complex to put as a simple script so this is
-# just a simple module
-
-$ErrorActionPreference = 'Stop'
-
-$params = Parse-Args $args -supports_check_mode $false
-$name = Get-AnsibleParam -obj $params -name "name" -type "str" -failifempty $true
-
-$result = @{
- changed = $false
- users = @()
-}
-
-Function Get-Username($sid) {
- $object = New-Object System.Security.Principal.SecurityIdentifier($sid)
- $user = $object.Translate([System.Security.Principal.NTAccount])
- $user.Value
-}
-
-$secedit_ini_path = [IO.Path]::GetTempFileName()
-&SecEdit.exe /export /cfg $secedit_ini_path /quiet
-$secedit_ini = Get-Content -Path $secedit_ini_path
-Remove-Item -Path $secedit_ini_path -Force
-
-foreach ($line in $secedit_ini) {
- if ($line.ToLower().StartsWith("$($name.ToLower()) = ")) {
- $right_split = $line -split "="
- $existing_users = $right_split[-1].Trim() -split ","
- foreach ($user in $existing_users) {
- if ($user.StartsWith("*S")) {
- $result.users += Get-Username -sid $user.substring(1)
- } else {
- $result.users += $user
- }
- }
- }
-}
-
-Exit-Json $result
diff --git a/test/integration/targets/win_user_right/tasks/main.yml b/test/integration/targets/win_user_right/tasks/main.yml
deleted file mode 100644
index 8ab7ba3bb8..0000000000
--- a/test/integration/targets/win_user_right/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- name: get current entries for right
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: actual_users
-
-- name: get facts
- setup:
-
-- block:
- - name: ensure right is empty before test
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: []
- action: set
-
- - name: run tests
- include_tasks: tests.yml
-
- always:
- - name: reset entries for test right
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: '{{actual_users.users}}'
- action: set
diff --git a/test/integration/targets/win_user_right/tasks/tests.yml b/test/integration/targets/win_user_right/tasks/tests.yml
deleted file mode 100644
index 649e8fbe35..0000000000
--- a/test/integration/targets/win_user_right/tasks/tests.yml
+++ /dev/null
@@ -1,390 +0,0 @@
----
-- name: Look up built-in Administrator account name (-500 user whose domain == computer name)
- raw: $machine_sid = (Get-CimInstance Win32_UserAccount -Filter "Domain='$env:COMPUTERNAME'")[0].SID -replace '(S-1-5-21-\d+-\d+-\d+)-\d+', '$1'; (Get-CimInstance Win32_UserAccount -Filter "SID='$machine_sid-500'").Name
- check_mode: no
- register: admin_account_result
-
-- set_fact:
- admin_account_name: "{{ admin_account_result.stdout_lines[0] }}"
-
-- name: fail to set invalid right
- win_user_right:
- name: FailRight
- users: '{{ admin_account_name }}'
- register: fail_invalid_right
- failed_when: fail_invalid_right.msg != 'the specified right FailRight is not a valid right'
-
-- name: fail with invalid username
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: FakeUser
- register: fail_invalid_user
- failed_when: "'account_name FakeUser is not a valid account, cannot get SID' not in fail_invalid_user.msg"
-
-- name: remove from empty right check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Administrators']
- action: remove
- register: remove_empty_right_check
- check_mode: yes
-
-- name: assert remove from empty right check
- assert:
- that:
- - remove_empty_right_check is not changed
- - remove_empty_right_check.added == []
- - remove_empty_right_check.removed == []
-
-- name: remove from empty right
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Administrators']
- action: remove
- register: remove_empty_right
- check_mode: yes
-
-- name: assert remove from empty right
- assert:
- that:
- - remove_empty_right is not changed
- - remove_empty_right.added == []
- - remove_empty_right.removed == []
-
-- name: set administrator check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: '{{ admin_account_name }}'
- action: set
- register: set_administrator_check
- check_mode: yes
-
-- name: get actual set administrator check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: set_administrator_actual_check
-
-- name: assert set administrator check
- assert:
- that:
- - set_administrator_check is changed
- - set_administrator_check.added|count == 1
- - set_administrator_check.added[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - set_administrator_check.removed == []
- - set_administrator_actual_check.users == []
-
-- name: set administrator
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: '{{ admin_account_name }}'
- action: set
- register: set_administrator
-
-- name: get actual set administrator
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: set_administrator_actual
-
-- name: assert set administrator check
- assert:
- that:
- - set_administrator is changed
- - set_administrator.added|count == 1
- - set_administrator.added[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - set_administrator.removed == []
- - set_administrator_actual.users == ['{{ admin_account_name }}']
-
-- name: set administrator again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: '{{ admin_account_name }}'
- action: set
- register: set_administrator_again
-
-- name: assert set administrator check
- assert:
- that:
- - set_administrator_again is not changed
- - set_administrator_again.added == []
- - set_administrator_again.removed == []
-
-- name: remove from right check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users', '.\Backup Operators']
- action: remove
- register: remove_right_check
- check_mode: yes
-
-- name: get actual remove from right check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: remove_right_actual_check
-
-- name: assert remove from right check
- assert:
- that:
- - remove_right_check is changed
- - remove_right_check.removed|count == 1
- - remove_right_check.removed[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - remove_right_check.added == []
- - remove_right_actual_check.users == ['{{ admin_account_name }}']
-
-- name: remove from right
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users', '.\Backup Operators']
- action: remove
- register: remove_right
-
-- name: get actual remove from right
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: remove_right_actual
-
-- name: assert remove from right
- assert:
- that:
- - remove_right is changed
- - remove_right.removed|count == 1
- - remove_right.removed[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - remove_right.added == []
- - remove_right_actual.users == []
-
-- name: remove from right again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users', '.\Backup Operators']
- action: remove
- register: remove_right_again
-
-- name: assert remove from right
- assert:
- that:
- - remove_right_again is not changed
- - remove_right_again.removed == []
- - remove_right_again.added == []
-
-- name: add to empty right check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Administrators']
- action: add
- register: add_right_on_empty_check
- check_mode: yes
-
-- name: get actual add to empty right check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: add_right_on_empty_actual_check
-
-- name: assert add to empty right check
- assert:
- that:
- - add_right_on_empty_check is changed
- - add_right_on_empty_check.removed == []
- - add_right_on_empty_check.added|count == 2
- - add_right_on_empty_check.added[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - add_right_on_empty_check.added[1] == 'BUILTIN\Administrators'
- - add_right_on_empty_actual_check.users == []
-
-- name: add to empty right
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Administrators']
- action: add
- register: add_right_on_empty
-
-- name: get actual add to empty right
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: add_right_on_empty_actual
-
-- name: assert add to empty right
- assert:
- that:
- - add_right_on_empty is changed
- - add_right_on_empty.removed == []
- - add_right_on_empty.added|count == 2
- - add_right_on_empty.added[0]|upper == '{{ansible_hostname|upper}}\{{ admin_account_name|upper }}'
- - add_right_on_empty.added[1] == 'BUILTIN\Administrators'
- - add_right_on_empty_actual.users == ["{{ admin_account_name }}", "BUILTIN\\Administrators"]
-
-- name: add to empty right again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Administrators']
- action: add
- register: add_right_on_empty_again
-
-- name: assert add to empty right
- assert:
- that:
- - add_right_on_empty_again is not changed
- - add_right_on_empty_again.removed == []
- - add_right_on_empty_again.added == []
-
-- name: add to existing right check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users']
- action: add
- register: add_right_on_existing_check
- check_mode: yes
-
-- name: get actual add to existing right check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: add_right_on_existing_actual_check
-
-- name: assert add to existing right check
- assert:
- that:
- - add_right_on_existing_check is changed
- - add_right_on_existing_check.removed == []
- - add_right_on_existing_check.added == ["BUILTIN\\Guests", "BUILTIN\\Users"]
- - add_right_on_existing_actual_check.users == ["{{ admin_account_name }}", "BUILTIN\\Administrators"]
-
-- name: add to existing right
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users']
- action: add
- register: add_right_on_existing
-
-- name: get actual add to existing right
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: add_right_on_existing_actual
-
-- name: assert add to existing right
- assert:
- that:
- - add_right_on_existing is changed
- - add_right_on_existing.removed == []
- - add_right_on_existing.added == ["BUILTIN\\Guests", "BUILTIN\\Users"]
- - add_right_on_existing_actual.users == ["{{ admin_account_name }}", "BUILTIN\\Administrators", "BUILTIN\\Users", "BUILTIN\\Guests"]
-
-- name: add to existing right again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['{{ admin_account_name }}', 'Guests', '{{ansible_hostname}}\Users']
- action: add
- register: add_right_on_existing_again
-
-- name: assert add to existing right
- assert:
- that:
- - add_right_on_existing_again is not changed
- - add_right_on_existing_again.removed == []
- - add_right_on_existing_again.added == []
-
-- name: remove from existing check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Guests', '{{ admin_account_name }}']
- action: remove
- register: remove_on_existing_check
- check_mode: yes
-
-- name: get actual remove from existing check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: remove_on_existing_actual_check
-
-- name: assert remove from existing check
- assert:
- that:
- - remove_on_existing_check is changed
- - remove_on_existing_check.removed == ["BUILTIN\\Guests", "{{ansible_hostname}}\\{{ admin_account_name }}"]
- - remove_on_existing_check.added == []
- - remove_on_existing_actual_check.users == ["{{ admin_account_name }}", "BUILTIN\\Administrators", "BUILTIN\\Users", "BUILTIN\\Guests"]
-
-- name: remove from existing
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Guests', '{{ admin_account_name }}']
- action: remove
- register: remove_on_existing
-
-- name: get actual remove from existing
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: remove_on_existing_actual
-
-- name: assert remove from existing
- assert:
- that:
- - remove_on_existing is changed
- - remove_on_existing.removed == ["BUILTIN\\Guests", "{{ansible_hostname}}\\{{ admin_account_name }}"]
- - remove_on_existing.added == []
- - remove_on_existing_actual.users == ["BUILTIN\\Administrators", "BUILTIN\\Users"]
-
-- name: remove from existing again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Guests', '{{ admin_account_name }}']
- action: remove
- register: remove_on_existing_again
-
-- name: assert remove from existing again
- assert:
- that:
- - remove_on_existing_again is not changed
- - remove_on_existing_again.removed == []
- - remove_on_existing_again.added == []
-
-- name: set to existing check
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Administrators', 'SYSTEM', 'Backup Operators']
- action: set
- register: set_on_existing_check
- check_mode: yes
-
-- name: get actual set to existing check
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: set_on_existing_actual_check
-
-- name: assert set to existing check
- assert:
- that:
- - set_on_existing_check is changed
- - set_on_existing_check.removed == ["BUILTIN\\Users"]
- - set_on_existing_check.added == ["NT AUTHORITY\\SYSTEM", "BUILTIN\\Backup Operators"]
- - set_on_existing_actual_check.users == ["BUILTIN\\Administrators", "BUILTIN\\Users"]
-
-- name: set to existing
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Administrators', 'SYSTEM', 'Backup Operators']
- action: set
- register: set_on_existing
-
-- name: get actual set to existing
- test_get_right:
- name: '{{test_win_user_right_name}}'
- register: set_on_existing_actual
-
-- name: assert set to existing
- assert:
- that:
- - set_on_existing is changed
- - set_on_existing.removed == ["BUILTIN\\Users"]
- - set_on_existing.added == ["NT AUTHORITY\\SYSTEM", "BUILTIN\\Backup Operators"]
- - set_on_existing_actual.users == ["NT AUTHORITY\\SYSTEM", "BUILTIN\\Administrators", "BUILTIN\\Backup Operators"]
-
-- name: set to existing again
- win_user_right:
- name: '{{test_win_user_right_name}}'
- users: ['Administrators', 'SYSTEM', 'Backup Operators']
- action: set
- register: set_on_existing_again
-
-- name: assert set to existing
- assert:
- that:
- - set_on_existing_again is not changed
- - set_on_existing_again.removed == []
- - set_on_existing_again.added == []
diff --git a/test/integration/targets/win_wait_for/aliases b/test/integration/targets/win_wait_for/aliases
deleted file mode 100644
index 11addc63ba..0000000000
--- a/test/integration/targets/win_wait_for/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/windows/group4
-unstable
diff --git a/test/integration/targets/win_wait_for/defaults/main.yml b/test/integration/targets/win_wait_for/defaults/main.yml
deleted file mode 100644
index 9e1155e329..0000000000
--- a/test/integration/targets/win_wait_for/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-test_win_wait_for_path: C:\ansible\win_wait_for
-test_win_wait_for_port: 1234
diff --git a/test/integration/targets/win_wait_for/tasks/main.yml b/test/integration/targets/win_wait_for/tasks/main.yml
deleted file mode 100644
index e7176e80bb..0000000000
--- a/test/integration/targets/win_wait_for/tasks/main.yml
+++ /dev/null
@@ -1,322 +0,0 @@
----
-- name: ensure test folder is deleted for clean slate
- win_file:
- path: '{{test_win_wait_for_path}}'
- state: absent
-
-- name: ensure test folder exists
- win_file:
- path: '{{test_win_wait_for_path}}'
- state: directory
-
-- name: template out the test server
- win_template:
- src: http-server.ps1
- dest: '{{test_win_wait_for_path}}\http-server.ps1'
-
-# invalid arguments
-- name: fail to set port and path
- win_wait_for:
- path: a
- port: 0
- register: fail_port_and_path
- failed_when: fail_port_and_path.msg != 'port and path parameter can not both be passed to win_wait_for'
-
-- name: fail to set exclude_hosts when state isn't drain
- win_wait_for:
- port: 0
- exclude_hosts: a
- state: present
- register: fail_exclude_hosts_not_drained
- failed_when: fail_exclude_hosts_not_drained.msg != 'exclude_hosts should only be with state=drained'
-
-- name: fail to set state drained with path
- win_wait_for:
- path: a
- state: drained
- register: fail_path_drained
- failed_when: fail_path_drained.msg != 'state=drained should only be used for checking a port in the win_wait_for module'
-
-- name: fail to set exclude_hosts with path
- win_wait_for:
- path: a
- exclude_hosts: a
- register: fail_path_exclude_hosts
- failed_when: fail_path_exclude_hosts.msg != 'exclude_hosts should only be with state=drained'
-
-- name: fail to set search_regex with port
- win_wait_for:
- port: 0
- search_regex: a
- register: fail_port_search_regex
- failed_when: fail_port_search_regex.msg != 'regex should by used when checking a string in a file in the win_wait_for module'
-
-- name: fail to set exclude_hosts with port whens tate is not drained
- win_wait_for:
- port: 0
- exclude_hosts: a
- state: present
- register: fail_port_exclude_hosts_not_drained
- failed_when: fail_port_exclude_hosts_not_drained.msg != 'exclude_hosts should only be with state=drained'
-
-# path tests
-- name: timeout while waiting for file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: present
- timeout: 5
- register: fail_timeout_file_present
- ignore_errors: True
-
-- name: assert timeout while waiting for file
- assert:
- that:
- - fail_timeout_file_present.msg == 'timeout while waiting for file ' + test_win_wait_for_path + '\\test.txt to be present'
- - fail_timeout_file_present.wait_attempts == 5
- - fail_timeout_file_present.elapsed > 5
-
-- name: wait for file to not exist - non existing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- register: wait_remove_no_file
-
-- name: assert wait for file to not exist - non existing file
- assert:
- that:
- - wait_remove_no_file.wait_attempts == 1
-
-- name: create file for next test
- win_file:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: touch
-
-- name: run async task to remove file after a timeout
- win_shell: Start-Sleep -Seconds 5; Remove-Item -Path '{{test_win_wait_for_path}}\test.txt' -Force
- async: 30
- poll: 0
-
-- name: wait for file to not exist - existing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- register: wait_remove_existing_file
-
-- name: assert wait for file to not exist - existing file
- assert:
- that:
- - wait_remove_existing_file.wait_attempts > 1
-
-- name: run async task to create file after a timeout
- win_shell: Start-Sleep -Seconds 5; New-Item -Path '{{test_win_wait_for_path}}\test.txt' -Type File
- async: 30
- poll: 0
-
-- name: wait for file to exist - non existing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: present
- register: wait_new_missing_file
-
-- name: assert wait for file to exist - non existing file
- assert:
- that:
- - wait_new_missing_file.wait_attempts > 1
-
-- name: wait for file to exist - existing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: present
- register: wait_new_existing_file
-
-- name: assert wait for file to exist - existing file
- assert:
- that:
- - wait_new_existing_file.wait_attempts == 1
-
-- name: timeout while waiting for file to not exist
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- timeout: 5
- register: fail_timeout_file_absent
- ignore_errors: True
-
-- name: assert timeout while waiting for file to not exist
- assert:
- that:
- - fail_timeout_file_absent.msg == 'timeout while waiting for file ' + test_win_wait_for_path + '\\test.txt to be absent'
- - fail_timeout_file_absent.wait_attempts == 5
- - fail_timeout_file_absent.elapsed > 5
-
-- name: run async task to populate file contents
- win_shell: Start-Sleep -Seconds 5; Set-Content -Path '{{test_win_wait_for_path}}\test.txt' -Value 'hello world`r`nfile contents`r`nEnd line'
- async: 30
- poll: 0
-
-- name: wait for file contents to match regex - empty file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: present
- search_regex: file c.*
- register: wait_regex_match_new
-
-- name: assert wait for file contents to match regex - empty file
- assert:
- that:
- - wait_regex_match_new.wait_attempts > 1
-
-- name: wait for file contents to match regex - existing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: present
- search_regex: file c.*
- register: wait_regex_match_existing
-
-- name: assert wait for file contents to match regex - existing file
- assert:
- that:
- - wait_regex_match_existing.wait_attempts == 1
-
-- name: run async task to clear file contents
- win_shell: Start-Sleep -Seconds 5; Set-Content -Path '{{test_win_wait_for_path}}\test.txt' -Value 'hello world`r`nother contents for file`r`nEnd line'
- async: 30
- poll: 0
-
-- name: wait for file content to not match regex
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- search_regex: file c.*
- register: wait_regex_match_absent_remove
-
-- name: assert wait for file content to not match regex
- assert:
- that:
- - wait_regex_match_absent_remove.wait_attempts > 1
-
-- name: wait for file content to not match regex - existing
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- search_regex: file c.*
- register: wait_regex_match_absent_existing
-
-- name: assert wait for file content to not match regex
- assert:
- that:
- - wait_regex_match_absent_existing.wait_attempts == 1
-
-- name: remove file to test search_regex works on missing files
- win_file:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
-
-- name: wait for file content to not match regex - missing file
- win_wait_for:
- path: '{{test_win_wait_for_path}}\test.txt'
- state: absent
- search_regex: file c.*
- register: wait_regex_match_absent_missing
-
-- name: assert wait for file content to not match regex - missing file
- assert:
- that:
- - wait_regex_match_absent_missing.wait_attempts == 1
-
-# port tests
-- name: timeout waiting for port to come online
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- timeout: 5
- state: started
- register: fail_timeout_port_online
- ignore_errors: True
-
-- name: assert timeout while waiting for port to come online
- assert:
- that:
- - "fail_timeout_port_online.msg == 'timeout while waiting for 127.0.0.1:' + test_win_wait_for_port|string + ' to start listening'"
- - fail_timeout_port_online.wait_attempts > 1
- - fail_timeout_port_online.elapsed > 5
-
-- name: run async task to start web server
- win_shell: Start-Sleep -Seconds 5; {{test_win_wait_for_path}}\http-server.ps1
- async: 30
- poll: 0
-
-- name: wait for port to come online
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: started
- register: wait_for_port_to_start
-
-- name: assert wait for port to come online
- assert:
- that:
- - wait_for_port_to_start.wait_attempts > 1
-
-- name: start web server
- win_shell: '{{test_win_wait_for_path}}\http-server.ps1'
- async: 30
- poll: 0
-
-- name: wait for port that is already online
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: started
- register: wait_for_port_already_started
-
-- name: assert wait for port that is already online
- assert:
- that:
- - wait_for_port_already_started.wait_attempts == 1
-
-# add a manual wait to make sure the port is truly offline for next test
-- name: wait for port to be offline
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: stopped
-
-- name: wait for port that is already offline
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: stopped
- register: wait_for_port_already_stopped
-
-- name: assert wait for port that is already offline
- assert:
- that:
- - wait_for_port_already_stopped.wait_attempts == 1
-
-- name: start web server for offline port test
- win_shell: '{{test_win_wait_for_path}}\http-server.ps1'
- async: 30
- poll: 0
-
-- name: wait for port to go offline
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: stopped
- register: wait_for_port_to_be_stopped
-
-- name: assert wait for port to go offline
- assert:
- that:
- - wait_for_port_to_be_stopped.wait_attempts > 1
-
-- name: wait for offline port to be drained
- win_wait_for:
- port: '{{test_win_wait_for_port}}'
- state: drained
- register: wait_for_drained_port_no_port
-
-- name: assert wait for offline port to be drained
- assert:
- that:
- - wait_for_drained_port_no_port.wait_attempts == 1
-
-- name: clear testing folder
- win_file:
- path: '{{test_win_wait_for_path}}'
- state: absent
diff --git a/test/integration/targets/win_wait_for/templates/http-server.ps1 b/test/integration/targets/win_wait_for/templates/http-server.ps1
deleted file mode 100644
index dd1f981809..0000000000
--- a/test/integration/targets/win_wait_for/templates/http-server.ps1
+++ /dev/null
@@ -1,22 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-$port = {{test_win_wait_for_port}}
-
-$endpoint = New-Object -TypeName System.Net.IPEndPoint([System.Net.IPAddress]::Parse("0.0.0.0"), $port)
-$listener = New-Object -TypeName System.Net.Sockets.TcpListener($endpoint)
-$listener.Server.ReceiveTimeout = 3000
-$listener.Start()
-
-try {
- while ($true) {
- if (-not $listener.Pending()) {
- Start-Sleep -Seconds 1
- } else {
- $client = $listener.AcceptTcpClient()
- $client.Close()
- break
- }
- }
-} finally {
- $listener.Stop()
-}
diff --git a/test/integration/targets/win_whoami/aliases b/test/integration/targets/win_whoami/aliases
deleted file mode 100644
index 3cf5b97e80..0000000000
--- a/test/integration/targets/win_whoami/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/windows/group3
diff --git a/test/integration/targets/win_whoami/tasks/main.yml b/test/integration/targets/win_whoami/tasks/main.yml
deleted file mode 100644
index 404523abfa..0000000000
--- a/test/integration/targets/win_whoami/tasks/main.yml
+++ /dev/null
@@ -1,225 +0,0 @@
----
-- name: run win_whoami with normal execution
- win_whoami:
- register: win_whoami_result
-
-- name: assert win_whoami with normal execution
- assert:
- that:
- - not win_whoami_result is changed
- - win_whoami_result.account.account_name is defined
- - win_whoami_result.account.domain_name is defined
- - win_whoami_result.account.sid is defined
- - win_whoami_result.account.type == 'User'
- - win_whoami_result.authentication_package is defined
- - win_whoami_result.dns_domain_name is defined
- - win_whoami_result.groups|count >= 1
- - win_whoami_result.groups[0].account_name is defined
- - win_whoami_result.groups[0].attributes is defined
- - win_whoami_result.groups[0].domain_name is defined
- - win_whoami_result.groups[0].sid is defined
- - win_whoami_result.groups[0].type is defined
- - win_whoami_result.impersonation_level is defined
- - win_whoami_result.label.account_name == 'High Mandatory Level'
- - win_whoami_result.label.domain_name == 'Mandatory Label'
- - win_whoami_result.label.sid == 'S-1-16-12288'
- - win_whoami_result.label.type == 'Label'
- - win_whoami_result.login_domain is defined
- - win_whoami_result.login_time is defined
- - win_whoami_result.logon_id is defined
- - win_whoami_result.logon_server is defined
- - win_whoami_result.logon_type.startswith('Network')
- - win_whoami_result.privileges is defined
- - win_whoami_result.rights|count >= 1
- - win_whoami_result.token_type == 'TokenPrimary'
- - win_whoami_result.upn is defined
- - win_whoami_result.user_flags is defined
-
-- name: run win_whoami with SYSTEM execution
- win_whoami:
- become: yes
- become_method: runas
- become_user: SYSTEM
- register: win_whoami_result
-
-- name: assert win_whoami with SYSTEM execution
- assert:
- that:
- - not win_whoami_result is changed
- - win_whoami_result.account.account_name == 'SYSTEM'
- - win_whoami_result.account.domain_name == 'NT AUTHORITY'
- - win_whoami_result.account.sid == 'S-1-5-18'
- - win_whoami_result.account.type == 'User'
- - win_whoami_result.authentication_package is defined
- - win_whoami_result.dns_domain_name is defined
- - win_whoami_result.groups|count >= 1
- - win_whoami_result.groups[0].account_name is defined
- - win_whoami_result.groups[0].attributes is defined
- - win_whoami_result.groups[0].domain_name is defined
- - win_whoami_result.groups[0].sid is defined
- - win_whoami_result.groups[0].type is defined
- - win_whoami_result.impersonation_level == 'SecurityAnonymous'
- - win_whoami_result.label.account_name == 'System Mandatory Level'
- - win_whoami_result.label.domain_name == 'Mandatory Label'
- - win_whoami_result.label.sid == 'S-1-16-16384'
- - win_whoami_result.label.type == 'Label'
- - win_whoami_result.login_domain is defined
- - win_whoami_result.login_time is defined
- - win_whoami_result.logon_id is defined
- - win_whoami_result.logon_server is defined
- - win_whoami_result.logon_type == 'System'
- - win_whoami_result.privileges is defined
- - win_whoami_result.rights|count >= 1
- - win_whoami_result.token_type == 'TokenPrimary'
- - win_whoami_result.upn is defined
- - win_whoami_result.user_flags is defined
-
-- set_fact:
- become_username: ansible_become
- become_username_limited: ansible_limited
- gen_pw: password123! + {{lookup('password', '/dev/null chars=ascii_letters,digits length=8')}}
-
-- name: ensure current user is not the become user
- win_shell: whoami
- register: whoami_out
- failed_when: whoami_out.stdout_lines[0].endswith(become_username) or whoami_out.stdout_lines[0].endswith(become_username_limited)
-
-- name: create user
- win_user:
- name: '{{become_username}}'
- password: '{{gen_pw}}'
- update_password: always
- groups: Administrators
- register: become_user_info
-
-- name: create user limited
- win_user:
- name: '{{become_username_limited}}'
- password: '{{gen_pw}}'
- update_password: always
- groups: Users
- register: become_user_info_limited
-
-- block:
- - name: get become user profile dir so we can clean it up later
- vars: &become_vars
- ansible_become_user: '{{become_username}}'
- ansible_become_password: '{{gen_pw}}'
- ansible_become_method: runas
- ansible_become: yes
- win_shell: $env:USERPROFILE
- register: profile_dir_out
-
- - name: ensure profile dir contains test username (eg, if become fails silently, prevent deletion of real user profile)
- assert:
- that:
- - become_username in profile_dir_out.stdout_lines[0]
-
- - name: get become user limited profile dir so we can clean it up later
- vars: &become_vars_limited
- ansible_become_user: '{{become_username_limited}}'
- ansible_become_password: '{{gen_pw}}'
- ansible_become_method: runas
- ansible_become: yes
- win_shell: $env:USERPROFILE
- register: profile_dir_out_limited
-
- - name: ensure limited profile dir contains test username (eg, if become fails silently, prevent deletion of real user profile)
- assert:
- that:
- - become_username_limited in profile_dir_out_limited.stdout_lines[0]
-
- - name: run win_whoami with become execution
- win_whoami:
- vars: *become_vars
- register: win_whoami_result
-
- - name: assert win_whoami with become execution
- assert:
- that:
- - not win_whoami_result is changed
- - win_whoami_result.account.account_name == "ansible_become"
- - win_whoami_result.account.domain_name is defined
- - win_whoami_result.account.sid == become_user_info.sid
- - win_whoami_result.account.type == 'User'
- - win_whoami_result.authentication_package == "NTLM"
- - win_whoami_result.dns_domain_name == ""
- - win_whoami_result.groups|count >= 1
- - win_whoami_result.groups[0].account_name is defined
- - win_whoami_result.groups[0].attributes is defined
- - win_whoami_result.groups[0].domain_name is defined
- - win_whoami_result.groups[0].sid is defined
- - win_whoami_result.groups[0].type is defined
- - win_whoami_result.impersonation_level is defined
- - win_whoami_result.label.account_name == 'High Mandatory Level'
- - win_whoami_result.label.domain_name == 'Mandatory Label'
- - win_whoami_result.label.sid == 'S-1-16-12288'
- - win_whoami_result.label.type == 'Label'
- - win_whoami_result.login_domain is defined
- - win_whoami_result.login_time is defined
- - win_whoami_result.logon_id is defined
- - win_whoami_result.logon_server is defined
- - win_whoami_result.logon_type == "Interactive"
- - win_whoami_result.privileges is defined
- - '"SeInteractiveLogonRight" in win_whoami_result.rights'
- - win_whoami_result.token_type == 'TokenPrimary'
- - win_whoami_result.upn == ''
- - win_whoami_result.user_flags is defined
-
- - name: run win_whoami with limited become execution
- win_whoami:
- vars: *become_vars_limited
- register: win_whoami_result
-
- - name: assert win_whoami with limited become execution
- assert:
- that:
- - not win_whoami_result is changed
- - win_whoami_result.account.account_name == "ansible_limited"
- - win_whoami_result.account.domain_name is defined
- - win_whoami_result.account.sid == become_user_info_limited.sid
- - win_whoami_result.account.type == 'User'
- - win_whoami_result.authentication_package == "NTLM"
- - win_whoami_result.dns_domain_name == ""
- - win_whoami_result.groups|count >= 1
- - win_whoami_result.groups[0].account_name is defined
- - win_whoami_result.groups[0].attributes is defined
- - win_whoami_result.groups[0].domain_name is defined
- - win_whoami_result.groups[0].sid is defined
- - win_whoami_result.groups[0].type is defined
- - win_whoami_result.impersonation_level is defined
- - win_whoami_result.label.account_name == 'Medium Mandatory Level'
- - win_whoami_result.label.domain_name == 'Mandatory Label'
- - win_whoami_result.label.sid == 'S-1-16-8192'
- - win_whoami_result.label.type == 'Label'
- - win_whoami_result.login_domain is defined
- - win_whoami_result.login_time is defined
- - win_whoami_result.logon_id is defined
- - win_whoami_result.logon_server is defined
- - win_whoami_result.logon_type == "Interactive"
- - win_whoami_result.privileges is defined
- - win_whoami_result.rights == []
- - win_whoami_result.token_type == 'TokenPrimary'
- - win_whoami_result.upn == ''
- - win_whoami_result.user_flags is defined
-
- always:
- - name: ensure test user is deleted
- win_user:
- name: '{{item}}'
- state: absent
- with_items:
- - '{{become_username}}'
- - '{{become_username_limited}}'
-
- - name: ensure test user profile is deleted
- win_shell: rmdir /S /Q {{profile_dir_out.stdout_lines[0]}}
- args:
- executable: cmd.exe
- when: become_username in profile_dir_out.stdout_lines[0]
-
- - name: ensure limited test user profile is deleted
- win_shell: rmdir /S /Q {{profile_dir_out_limited.stdout_lines[0]}}
- args:
- executable: cmd.exe
- when: become_username_limited in profile_dir_out_limited.stdout_lines[0]