From 424f385548cd49fed947810a0f8c60245f2842bf Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Wed, 17 Apr 2019 08:18:03 +1000 Subject: [PATCH] win_feature - get tests working on psrp (#55353) (cherry picked from commit 15c331cb480e6dd16b632636b7422c23c80916ec) --- .../targets/win_feature/tasks/main.yml | 128 +----------------- .../targets/win_feature/tasks/tests.yml | 127 +++++++++++++++++ 2 files changed, 132 insertions(+), 123 deletions(-) create mode 100644 test/integration/targets/win_feature/tasks/tests.yml diff --git a/test/integration/targets/win_feature/tasks/main.yml b/test/integration/targets/win_feature/tasks/main.yml index d5dcca344ad696..a52b3c0160e247 100644 --- a/test/integration/targets/win_feature/tasks/main.yml +++ b/test/integration/targets/win_feature/tasks/main.yml @@ -18,128 +18,10 @@ - name: check whether servermanager module is available (windows 2008 r2 or later) - raw: PowerShell -Command Import-Module ServerManager + win_shell: if (Get-Command -Name Add-WindowsFeature -ErrorAction SilentlyContinue) { $true } else { $false } + changed_when: False register: win_feature_has_servermanager - ignore_errors: true -- name: start with feature absent - win_feature: - name: "{{ test_win_feature_name }}" - state: absent - when: win_feature_has_servermanager is successful - -- 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 - when: win_feature_has_servermanager is successful - -- 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" - when: win_feature_has_servermanager is successful - -- 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 - when: win_feature_has_servermanager is successful - -- 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 == []" - when: win_feature_has_servermanager is successful - -- name: remove feature - win_feature: - name: "{{ test_win_feature_name }}" - state: absent - register: win_feature_remove_result - when: win_feature_has_servermanager is successful - -- 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 - when: win_feature_has_servermanager is successful - -- 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 == []" - when: win_feature_has_servermanager is successful - -- name: try to install an invalid feature name - win_feature: - name: "Microsoft-Bob" - state: present - register: win_feature_install_invalid_result - ignore_errors: true - when: win_feature_has_servermanager is successful - -- 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" - when: win_feature_has_servermanager is successful - -- name: try to remove an invalid feature name - win_feature: - name: "Microsoft-Bob" - state: absent - register: win_feature_remove_invalid_result - ignore_errors: true - when: win_feature_has_servermanager is successful - -- 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" - when: win_feature_has_servermanager is successful +- 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 new file mode 100644 index 00000000000000..7a48117b70dcaf --- /dev/null +++ b/test/integration/targets/win_feature/tasks/tests.yml @@ -0,0 +1,127 @@ +# test code for the win_feature module +# (c) 2014, Chris Church + +# 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 . + +- 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"