From 997ea78b1fd2d1863c241849f0f5bb93478ecbe0 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Tue, 30 Sep 2014 16:20:10 -0400 Subject: [PATCH] Add integration tests for the win_feature module. --- .../roles/test_win_feature/defaults/main.yml | 4 + .../roles/test_win_feature/tasks/main.yml | 131 ++++++++++++++++++ test/integration/test_winrm.yml | 1 + 3 files changed, 136 insertions(+) create mode 100644 test/integration/roles/test_win_feature/defaults/main.yml create mode 100644 test/integration/roles/test_win_feature/tasks/main.yml diff --git a/test/integration/roles/test_win_feature/defaults/main.yml b/test/integration/roles/test_win_feature/defaults/main.yml new file mode 100644 index 00000000000..e1833cd8a84 --- /dev/null +++ b/test/integration/roles/test_win_feature/defaults/main.yml @@ -0,0 +1,4 @@ +--- + +# Feature not normally installed by default. +test_win_feature_name: Telnet-Client diff --git a/test/integration/roles/test_win_feature/tasks/main.yml b/test/integration/roles/test_win_feature/tasks/main.yml new file mode 100644 index 00000000000..a49622c232d --- /dev/null +++ b/test/integration/roles/test_win_feature/tasks/main.yml @@ -0,0 +1,131 @@ +# 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 + restart: no + 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|changed" + - "win_feature_install_result.success" + - "win_feature_install_result.exitcode == 'Success'" + - "not win_feature_install_result.restart_needed" + - "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].restart_needed 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 + restart: no + include_sub_features: yes + include_management_tools: yes + register: win_feature_install_again_result + +- name: check result of installing feature again + assert: + that: + - "not win_feature_install_again_result|changed" + - "win_feature_install_again_result.success" + - "win_feature_install_again_result.exitcode == 'NoChangeNeeded'" + - "not win_feature_install_again_result.restart_needed" + - "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|changed" + - "win_feature_remove_result.success" + - "win_feature_remove_result.exitcode == 'Success'" + - "not win_feature_remove_result.restart_needed" + - "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].restart_needed is defined" + - "win_feature_remove_result.feature_result[0].skip_reason" + - "win_feature_remove_result.feature_result[0].success is defined" + +- 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: + - "not win_feature_remove_again_result|changed" + - "win_feature_remove_again_result.success" + - "win_feature_remove_again_result.exitcode == 'NoChangeNeeded'" + - "not win_feature_remove_again_result.restart_needed" + - "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|failed" + - "not win_feature_install_invalid_result|changed" + - "win_feature_install_invalid_result.msg" + - "win_feature_install_invalid_result.exitcode == 'InvalidArgs'" + +- 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|failed" + - "not win_feature_remove_invalid_result|changed" + - "win_feature_remove_invalid_result.msg" + - "win_feature_remove_invalid_result.exitcode == 'InvalidArgs'" diff --git a/test/integration/test_winrm.yml b/test/integration/test_winrm.yml index c05a1308318..415f381d46a 100644 --- a/test/integration/test_winrm.yml +++ b/test/integration/test_winrm.yml @@ -29,3 +29,4 @@ - { role: test_win_get_url, tags: test_win_get_url } - { role: test_win_msi, tags: test_win_msi } - { role: test_win_service, tags: test_win_service } + - { role: test_win_feature, tags: test_win_feature }