summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Borean <jborean93@gmail.com>2017-06-20 02:43:44 +1000
committerjhawkesworth <jhawkesworth@users.noreply.github.com>2017-06-19 17:43:44 +0100
commitc05d3c3821d3ba008c47cdcaf4d05bfeb88d0b14 (patch)
tree31a83bc3131b8dcf0c5ec4e489902e8a9ddb55f8
parent0aba04fdad7283eb9c7fee81f49cda3b18ef3f84 (diff)
downloadansible-c05d3c3821d3ba008c47cdcaf4d05bfeb88d0b14.tar.gz
win_owner: added tests and fixed up bool handling (#25088)
* win_owner: added tests and fixed up bool handling * explicitly gathering facts in test * Removed manualy entry in test group
-rw-r--r--lib/ansible/modules/windows/win_owner.ps14
-rw-r--r--lib/ansible/modules/windows/win_owner.py6
-rw-r--r--test/integration/targets/win_owner/aliases1
-rw-r--r--test/integration/targets/win_owner/defaults/main.yml1
-rw-r--r--test/integration/targets/win_owner/tasks/main.yml233
5 files changed, 239 insertions, 6 deletions
diff --git a/lib/ansible/modules/windows/win_owner.ps1 b/lib/ansible/modules/windows/win_owner.ps1
index 82de19a400..c7209e9285 100644
--- a/lib/ansible/modules/windows/win_owner.ps1
+++ b/lib/ansible/modules/windows/win_owner.ps1
@@ -90,7 +90,7 @@ $check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -type "b
$path = Get-AnsibleParam -obj $params -name "path" -type "path" -failifempty $true
$user = Get-AnsibleParam -obj $params -name "user" -type "str" -failifempty $true
-$recurse = Get-AnsibleParam -obj $params -name "recurse" -type "bool" -default "no" -validateset "no","yes" -resultobj $result
+$recurse = Get-AnsibleParam -obj $params -name "recurse" -type "bool" -default $false -resultobj $result
If (-Not (Test-Path -Path $path)) {
Fail-Json $result "$path file or directory does not exist on the host"
@@ -129,7 +129,7 @@ Try {
}
}
Catch {
- Fail-Json $result "an error occurred when attempting to change owner on $path for $user"
+ Fail-Json $result "an error occurred when attempting to change owner on $path for $($user): $($_.Exception.Message)"
}
Exit-Json $result
diff --git a/lib/ansible/modules/windows/win_owner.py b/lib/ansible/modules/windows/win_owner.py
index 96f8833ffb..150d69a35f 100644
--- a/lib/ansible/modules/windows/win_owner.py
+++ b/lib/ansible/modules/windows/win_owner.py
@@ -45,10 +45,8 @@ options:
recurse:
description:
- Indicates if the owner should be changed recursively
- choices:
- - no
- - yes
- default: no
+ type: bool
+ default: 'no'
author: Hans-Joachim Kliemeck (@h0nIg)
'''
diff --git a/test/integration/targets/win_owner/aliases b/test/integration/targets/win_owner/aliases
new file mode 100644
index 0000000000..10e03fc2bf
--- /dev/null
+++ b/test/integration/targets/win_owner/aliases
@@ -0,0 +1 @@
+windows/ci/group1
diff --git a/test/integration/targets/win_owner/defaults/main.yml b/test/integration/targets/win_owner/defaults/main.yml
new file mode 100644
index 0000000000..f71d353ec8
--- /dev/null
+++ b/test/integration/targets/win_owner/defaults/main.yml
@@ -0,0 +1 @@
+test_win_owner_path: C:\ansible\win_owner
diff --git a/test/integration/targets/win_owner/tasks/main.yml b/test/integration/targets/win_owner/tasks/main.yml
new file mode 100644
index 0000000000..b5f1ed54e4
--- /dev/null
+++ b/test/integration/targets/win_owner/tasks/main.yml
@@ -0,0 +1,233 @@
+---
+# Setup tests
+- name: gather facts on host for use with later tests
+ setup:
+
+- name: remove test path to ensure baseline
+ win_file:
+ path: "{{test_win_owner_path}}"
+ state: absent
+
+- name: create test paths
+ win_file:
+ path: "{{test_win_owner_path}}\\{{item}}"
+ state: directory
+ with_items:
+ - folder
+ - folder\folder1
+ - folder\folder2
+ - folder with space
+ - folder with space\folder1
+ - folder with space\folder2
+
+- name: create system test files
+ win_copy:
+ dest: "{{test_win_owner_path}}\\{{item}}"
+ content: content
+ with_items:
+ - 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
+
+# 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 != 'invalid-user is not a valid user or group on the host machine or domain'
+
+- 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_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\folder').Owner"
+ register: actual_defaults_check
+
+- name: assert set owner defaults check
+ assert:
+ that:
+ - defaults_check|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_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\folder').Owner"
+ register: actual_defaults
+
+- name: assert set owner defaults
+ assert:
+ that:
+ - defaults|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: get owner of folder of set owner defaults again
+ win_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\folder').Owner"
+ register: actual_defaults_again
+
+- name: assert set owner defaults again
+ assert:
+ that:
+ - not defaults_again|changed
+ - actual_defaults_again.stdout_lines[0] == 'NT AUTHORITY\SYSTEM'
+
+- 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_command: powershell.exe "(Get-Acl -Path '{{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|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_command: powershell.exe "(Get-Acl -Path '{{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|changed
+
+- name: set owner recurse again
+ win_owner:
+ path: "{{test_win_owner_path}}\\folder"
+ user: SYSTEM
+ recurse: True
+ register: recurse_again
+
+- name: get owner of folder of set owner recurse again
+ win_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\{{item}}').Owner"
+ register: actual_recurse_again
+ failed_when: actual_recurse_again.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 again
+ assert:
+ that:
+ - not recurse_again|changed
+
+- name: create test user
+ win_user:
+ name: test win owner
+
+- 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_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\{{item}}').Owner"
+ register: actual_recurse_space
+ failed_when: actual_recurse_space.stdout_lines[0]|upper != ansible_hostname + '\\TEST WIN OWNER'
+ 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|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: get owner of folder of set owner with space recurse again
+ win_command: powershell.exe "(Get-Acl -Path '{{test_win_owner_path}}\\{{item}}').Owner"
+ register: actual_recurse_space_again
+ failed_when: actual_recurse_space_again.stdout_lines[0]|upper != ansible_hostname + '\\TEST WIN OWNER'
+ 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 again
+ assert:
+ that:
+ - not recurse_space_again|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