ansible/test/integration/targets/win_psmodule/tasks/main.yml
2019-03-11 05:43:21 +10:00

454 lines
13 KiB
YAML

# test code for the win_psmodule module when using winrm connection
# Copyright: (c) 2018, Wojciech Sciesinski <wojciech[at]sciesinski[dot]net>
# Copyright: (c) 2017, Daniele Lazzari <lazzari@mailup.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
---
- name: setup test repos and modules
import_tasks: setup.yml
# Remove the below task in Ansible 2.12
- name: ensure warning is fired when adding a repo
win_psmodule:
name: ansible-test1
repository: some repo
url: '{{ remote_tmp_dir }}'
state: present
register: dep_repo_add
ignore_errors: yes # will fail because this repo doesn't actually have this module
check_mode: yes
- name: assert warning is fired when adding a repo
assert:
that:
- dep_repo_add is changed
- dep_repo_add.deprecations|length == 1
- dep_repo_add.deprecations[0].msg == 'Adding a repo with this module is deprecated, the repository parameter should only be used to select a repo. Use win_psrepository to manage repos'
- dep_repo_add.deprecations[0].version == 2.12
- name: install package (check mode)
win_psmodule:
name: ansible-test1
state: present
register: install_check
check_mode: yes
- name: get result of install package (check mode)
win_shell: (Get-Module -ListAvailable -Name ansible-test1 | Measure-Object).Count
register: install_actual_check
- name: assert install package (check mode)
assert:
that:
- install_check is changed
- install_actual_check.stdout | trim | int == 0
- name: install package
win_psmodule:
name: ansible-test1
state: present
register: install
- name: get result of install package
win_shell: Import-Module -Name ansible-test1; Get-AnsibleTest1 | ConvertTo-Json
register: install_actual
- name: assert install package
assert:
that:
- install is changed
- install_actual.stdout | from_json == {"Name":"ansible-test1","Version":"1.1.0","Repo":"PSRepo 1"}
- name: install package (idempotent)
win_psmodule:
name: ansible-test1
state: present
register: install_again
- name: assert install package (idempotent)
assert:
that:
- not install_again is changed
- name: remove package (check mode)
win_psmodule:
name: ansible-test1
state: absent
register: remove_check
check_mode: yes
- name: get result of remove package (check mode)
win_shell: (Get-Module -ListAvailable -Name ansible-test1 | Measure-Object).Count
register: remove_actual_check
- name: remove package (check mode)
assert:
that:
- remove_check is changed
- remove_actual_check.stdout | trim | int == 1
- name: remove package
win_psmodule:
name: ansible-test1
state: absent
register: remove
- name: get result of remove package
win_shell: (Get-Module -ListAvailable -Name ansible-test1 | Measure-Object).Count
register: remove_actual
- name: assert remove package
assert:
that:
- remove is changed
- remove_actual.stdout | trim | int == 0
- name: remove package (idempotent)
win_psmodule:
name: ansible-test1
state: absent
register: remove_again
- name: assert remove package (idempotent)
assert:
that:
- not remove_again is changed
- name: fail to install module that exists in multiple repos
win_psmodule:
name: ansible-test2
state: present
register: fail_multiple_pkg
failed_when: 'fail_multiple_pkg.msg != "Problems installing ansible-test2 module: Unable to install, multiple modules matched ''ansible-test2''. Please specify a single -Repository."'
- name: install module with specific repository
win_psmodule:
name: ansible-test2
repository: PSRepo 2
state: present
register: install_repo
- name: get result of install module with specific repository
win_shell: Import-Module -Name ansible-test2; Get-AnsibleTest2 | ConvertTo-Json
register: install_repo_actual
- name: assert install module with specific repository
assert:
that:
- install_repo is changed
- install_repo_actual.stdout | from_json == {"Name":"ansible-test2","Version":"1.0.0","Repo":"PSRepo 2"}
- name: install module with specific repository (idempotent)
win_psmodule:
name: ansible-test2
repository: PSRepo 2
state: present
register: install_repo_again
- name: assert install module with specific repository (idempotent)
assert:
that:
- not install_repo_again is changed
- name: remove package that was installed from specific repository
win_psmodule:
name: ansible-test2
state: absent
register: remove_repo_without_source
- name: get result of remove package that was installed from specific repository
win_shell: (Get-Module -ListAvailable -Name ansible-test2 | Measure-Object).Count
register: remove_repo_without_source_actual
- name: assert remove package that was installed from specific repository
assert:
that:
- remove_repo_without_source is changed
- remove_repo_without_source_actual.stdout | trim | int == 0
- name: fail to install required version that is missing
win_psmodule:
name: ansible-test1
required_version: 0.9.0
state: present
register: fail_missing_req
failed_when: '"Problems installing ansible-test1 module: No match was found for the specified search criteria" not in fail_missing_req.msg'
- name: install required version
win_psmodule:
name: ansible-test1
required_version: 1.0.0
state: present
register: install_req_version
- name: get result of install required version
win_shell: Import-Module -Name ansible-test1; Get-AnsibleTest1 | ConvertTo-Json
register: install_req_version_actual
- name: assert install required version
assert:
that:
- install_req_version is changed
- install_req_version_actual.stdout | from_json == {"Name":"ansible-test1","Version":"1.0.0","Repo":"PSRepo 1"}
- name: install required version (idempotent)
win_psmodule:
name: ansible-test1
required_version: 1.0.0
state: present
register: install_req_version_again
- name: assert install required version (idempotent)
assert:
that:
- not install_req_version_again is changed
- name: remove required version
win_psmodule:
name: ansible-test1
required_version: 1.0.0
state: absent
register: remove_req_version
- name: get result of remove required version
win_shell: (Get-Module -ListAvailable -Name ansible-test1 | Measure-Object).Count
register: remove_req_version_actual
- name: assert remove required version
assert:
that:
- remove_req_version is changed
- remove_req_version_actual.stdout | trim | int == 0
- name: remove required version (idempotent)
win_psmodule:
name: ansible-test1
required_version: 1.0.0
state: absent
register: remove_req_version_again
- name: assert remove required version (idempotent)
assert:
that:
- not remove_req_version_again is changed
- name: install min max version
win_psmodule:
name: ansible-test1
minimum_version: 1.0.1
maximum_version: 1.0.9
state: present
register: install_min_max
- name: get result of install min max version
win_shell: Import-Module -Name ansible-test1; Get-AnsibleTest1 | ConvertTo-Json
register: install_min_max_actual
- name: assert install min max version
assert:
that:
- install_min_max is changed
- install_min_max_actual.stdout | from_json == {"Name":"ansible-test1","Version":"1.0.5","Repo":"PSRepo 1"}
- name: install min max version (idempotent)
win_psmodule:
name: ansible-test1
minimum_version: 1.0.1
maximum_version: 1.0.9
state: present
register: install_min_max_again
- name: assert install min max version (idempotent)
assert:
that:
- not install_min_max_again is changed
- name: update package to latest version
win_psmodule:
name: ansible-test1
state: latest
register: update_module
- name: get result of update package to latest version
win_shell: Import-Module -Name ansible-test1; Get-AnsibleTest1 | ConvertTo-Json
register: update_module_actual
- name: assert update package to latest version
assert:
that:
- update_module is changed
- update_module_actual.stdout | from_json == {"Name":"ansible-test1","Version":"1.1.0","Repo":"PSRepo 1"}
- name: update package to latest version (idempotent)
win_psmodule:
name: ansible-test1
state: latest
register: update_module_again
- name: assert update package to latest version (idempotent)
assert:
that:
- not update_module_again is changed
- name: remove package that does not match min version
win_psmodule:
name: ansible-test1
minimum_version: 2.0.0
state: absent
register: remove_min_no_change
- name: assert remove package that does not match min version
assert:
that:
- not remove_min_no_change is changed
- name: remove package that does not match max version
win_psmodule:
name: ansible-test1
maximum_version: 0.9.0
state: absent
register: remove_max_no_change
- name: assert remove package that does not match max version
assert:
that:
- not remove_max_no_change is changed
- name: uninstall package to clear tests
win_psmodule:
name: ansible-test1
state: absent
- name: install package with max version
win_psmodule:
name: ansible-test2
maximum_version: 1.0.0
repository: PSRepo 1
state: present
register: install_max
- name: get result of install package with max version
win_shell: Import-Module -Name ansible-test2; Get-AnsibleTest2 | ConvertTo-Json
register: install_max_actual
- name: assert install package with max version
assert:
that:
- install_max is changed
- install_max_actual.stdout | from_json == {"Name":"ansible-test2","Version":"1.0.0","Repo":"PSRepo 1"}
- name: fail to install updated package without skip publisher
win_psmodule:
name: ansible-test2
required_version: 1.0.1 # This version has been pureposefully not been signed for testing
repository: PSRepo 1
state: present
register: fail_skip_pub
failed_when: '"The version ''1.0.1'' of the module ''ansible-test2'' being installed is not catalog signed" not in fail_skip_pub.msg'
- name: install updated package provider with skip publisher
win_psmodule:
name: ansible-test2
required_version: 1.0.1
repository: PSRepo 1
state: present
skip_publisher_check: yes
register: install_skip_pub
- name: get result of install updated package provider with skip publisher
win_shell: Import-Module -Name ansible-test2; Get-AnsibleTest2 | ConvertTo-Json
register: install_skip_pub_actual
- name: assert install updated package provider with skip publisher
assert:
that:
- install_skip_pub is changed
- install_skip_pub_actual.stdout | from_json == {"Name":"ansible-test2","Version":"1.0.1","Repo":"PSRepo 1"}
- name: remove test package 2 for clean test
win_psmodule:
name: ansible-test2
state: absent
- name: fail to install clobbered module
win_psmodule:
name: ansible-clobber
state: present
register: fail_clobbering_time
failed_when: '"If you still want to install this module ''ansible-clobber'', use -AllowClobber parameter." not in fail_clobbering_time.msg'
- name: install clobbered module
win_psmodule:
name: ansible-clobber
allow_clobber: yes
state: present
register: install_clobber
- name: get result of install clobbered module
win_shell: Import-Module -Name ansible-clobber; Enable-PSTrace | ConvertTo-Json
register: install_clobber_actual
- name: assert install clobbered module
assert:
that:
- install_clobber is changed
- install_clobber_actual.stdout | from_json == {"Name":"ansible-clobber","Version":"0.1.0","Repo":"PSRepo 1"}
- name: remove clobbered module
win_psmodule:
name: ansible-clobber
state: absent
register: remove_clobber
- name: get result of remove clobbered module
win_shell: (Get-Module -ListAvailable -Name ansible-clobber | Measure-Object).Count
register: remove_clobber_actual
- name: assert remove clobbered module
assert:
that:
- remove_clobber is changed
- remove_clobber_actual.stdout | trim | int == 0
- name: fail to install prerelese module
win_psmodule:
name: ansible-test2
repository: PSRepo 1
required_version: 1.1.0-beta1
state: present
register: fail_install_prerelease
failed_when: '"The ''-AllowPrerelease'' parameter must be specified when using the Prerelease string" not in fail_install_prerelease.msg'
- name: install prerelease module
win_psmodule:
name: ansible-test2
repository: PSRepo 1
required_version: 1.1.0-beta1
allow_prerelease: yes
state: present
register: install_prerelease
- name: get result of install prerelease module
win_shell: Import-Module -Name ansible-test2; Get-AnsibleTest2 | ConvertTo-Json
register: install_prerelease_actual
- name: assert install prerelease module
assert:
that:
- install_prerelease is changed
- install_prerelease_actual.stdout | from_json == {"Name":"ansible-test2","Version":"1.1.0","Repo":"PSRepo 1"}
- name: remove prerelease module
win_psmodule:
name: ansible-test2
state: absent
register: remove_prerelease
- name: get result of remove prerelease module
win_shell: (Get-Module -ListAvailable -Name ansible-test2 | Measure-Object).Count
register: remove_prerelease_actual
- name: assert remove prerelease module
assert:
that:
- remove_prerelease is changed
- remove_prerelease_actual.stdout | trim | int == 0