Extend win_psmodule - the second attempt, the previous was #46516 (#50621)

* Extend win_psmodule - rebased at 2019-01-07

* Change a way how defined parameters are added to the list

* Correct registering a repository

* Change way how tests for the check_mode: true are run

* Post-review updates

* Post-review updates -2

* Post-review updates -3

* Switch to PowerShell loop

* Minor updates

* Remove variants of an exception handling

* Change error handling
This commit is contained in:
Wojciech Sciesinski
2019-03-05 21:56:55 +01:00
committed by Jordan Borean
parent 98343993ee
commit 8136e2e4fe
9 changed files with 1442 additions and 187 deletions

View File

@@ -1,7 +1,27 @@
---
powershell_module: powershell-yaml
wrong_module: powershell_yaml
allow_clobber_module: PowerShellCookbook
fake_repo_name: FakeRepo
custom_repo_path: C:\_repo
custom_repo_name: PSRegisterRepo
powershell_module_required_version: 0.3.4
powershell_module_maximum_version_request: 0.2.2
powershell_module_maximum_version_result: 0.2
powershell_module_ultra_high_version: 15.0.0
powershell_module_ultra_low_version: 0.0.1
skip_publisher_check_module: Pester
powershell_module_2: Pester
powershell_module_2_minimum_version_request: 3.1.2
powershell_module_2_maximum_version_request: 3.3.0
powershell_module_2_minimum_maximum_version_result: 3.2.0
allow_prerelease_module: Pester
allow_prerelease_version: 4.4.0-beta2
myget_powershell_module: xActiveDirectory
myget_repository_name: My Get
myget_repository_url: https://www.myget.org/F/powershellgetdemo/api/v2

View File

@@ -0,0 +1,2 @@
dependencies:
- prepare_win_tests

View File

@@ -0,0 +1,30 @@
# This file is part of Ansible
# test code for the win_psmodule module when using winrm connection
# Copyright: (c) 2018, Wojciech Sciesinski <wojciech[at]sciesinski[dot]net>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
---
- name: uninstall any versions of modules used for tests
win_shell: |
$ModulesToUninstall = @('powershell-yaml', 'Pester', 'PowerShellCookbook', 'xActiveDirectory')
ForEach ( $ModuleToUninstall in $ModulesToUninstall ) {
Uninstall-Module $ModuleToUninstall -AllVersions -Force -ErrorAction Ignore
}
changed_when: false
- name: unregister the custom repo
win_psrepository:
name: "{{ item | quote }}"
state: absent
changed_when: false
with_items:
- "{{ custom_repo_name }}"
- "{{ myget_repository_name }}"
- name: remove the custom repo folder
win_file:
path: "{{ custom_repo_path }}"
state: absent
changed_when: false
ignore_errors: yes

View File

@@ -1,28 +1,95 @@
# test code for the win_psmodule module when using winrm connection
# (c) 2017, Daniele Lazzari <lazzari@mailup.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/>.
# 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: get facts
setup:
- name: get PowerShell version
win_shell: '$PSVersionTable.PSVersion.Major'
changed_when: false
register: powershell_major_version
- name: Perform integration tests for Powershell 5+
when: ansible_powershell_version >= 5
- name: update PackageManagement and PowerShellGet when PowerShell < 5.0
when: powershell_major_version.stdout | int < 5
block:
- name: download PackageManagement
win_get_url:
url: https://s3.amazonaws.com/ansible-ci-files/test/integration/targets/win_psmodule/PackageManagement_x64.msi
dest: '{{ win_output_dir }}\PackageManagement_x64.msi'
- name: run all tasks
include: test.yml
- name: install PackageManagement
win_package:
path: '{{ win_output_dir }}\PackageManagement_x64.msi'
state: present
- name: create the required folder
win_file:
path: 'C:\Program Files\PackageManagement\ProviderAssemblies'
state: directory
- name: download nuget
win_get_url:
url: https://s3.amazonaws.com/ansible-ci-files/test/integration/targets/win_psmodule/nuget.exe
dest: 'C:\Program Files\PackageManagement\ProviderAssemblies\NuGet-anycpu.exe'
- name: update NuGet provider
win_shell: 'Find-PackageProvider -Name Nuget -ForceBootstrap -IncludeDependencies'
- name: download and save the nevest version of the PackageManagement module from PowerShell Gallery
win_shell: 'Save-Module -Name PackageManagement, PowerShellGet -Path {{ win_output_dir }} -Force'
- name: unload PackageManagement and PowerShellGet modules
win_shell: 'Remove-Module -Name PackageManagement,PowerShellGet -Force -ErrorAction Ignore'
ignore_errors: yes
- name: get PSModulePath
win_shell: "$($Env:PSModulePath -Split ';')[0]"
register: psmodulepath
- name: remove older versions of the PackageManagement and PowerShellGet
win_file:
path: "{{ psmodulepath.stdout | trim }}\\{{ item }}"
state: absent
with_items:
- PackageManagement
- PowerShellGet
- name: create required folder
win_file:
path: "{{ psmodulepath.stdout | trim }}"
state: directory
- name: update PowerShellGet and PackageManagement modules
win_shell: 'Copy-Item -Path {{ win_output_dir }}\{{ item }} -Destination {{ psmodulepath.stdout | trim }}\ -Recurse -Force'
with_items:
- PackageManagement
- PowerShellGet
- name: update NuGet version
when: powershell_major_version.stdout | int >= 5
win_shell: |
$nuget_exists = (Get-PackageProvider | Where-Object { $_.Name -eq 'Nuget' } | Measure-Object).Count -eq 1
if ( $nuget_exists ) {
$nuget_outdated = (Get-PackageProvider -Name NuGet -ErrorAction Ignore).Version -lt [Version]"2.8.5.201"
}
if ( -not $nuget_exists -or $nuget_outdated ) {
Find-PackageProvider -Name Nuget -ForceBootstrap -IncludeDependencies -Force
}
- name: perform cleanup before tests run
include: clean.yml
- name: run tests
include: tests.yml
- name: peform legacy (backward compatibility) tests
when: powershell_major_version.stdout | int == 5
block:
- name: perform cleanup before legacy tests run
include: clean.yml
- name: run legacy tests
include: tests_legacy.yml

View File

@@ -0,0 +1,808 @@
# This file is part of Ansible
# 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: "get the latest version of the {{ powershell_module }} module in PowerShell Gallery"
win_shell: "((Find-Module -Name {{ powershell_module }}).Version).ToString()"
changed_when: false
register: module_latest_version
- name: "get {{ skip_publisher_check_module }} is preinstalled"
win_shell: "(Get-Module -Name {{ skip_publisher_check_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count"
register: skip_publisher_module_exist
- name: "check installing module from Powershell Gallery - without version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
state: present
check_mode: yes
register: module_without_version_setup_1
- name: get result installing module from Powershell Gallery - without version
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ module_latest_version.stdout | trim }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_without_version_setup_1
- name: "test installing module from Powershell Gallery - without version - check mode: true"
assert:
that:
- module_without_version_setup_1 is changed
- result_module_without_version_setup_1.stdout | trim | bool == false
- name: "check installing module from Powershell Gallery - without version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
state: present
register: module_without_version_setup_1
- name: "get result installing module from Powershell Gallery - without version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ module_latest_version.stdout | trim }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_without_version_setup_1
- name: "test installing module from Powershell Gallery - without version - check mode: false"
assert:
that:
- module_without_version_setup_1 is changed
- result_module_without_version_setup_1.stdout | trim | bool == true
- name: check idempotency installing module from PowerShell Gallery - without version
win_psmodule:
name: "{{ powershell_module }}"
state: present
register: module_without_version_setup_2
- name: test idempotency installing module from PowerShell Gallery - without version
assert:
that:
- module_without_version_setup_2 is not changed
- name: "check uninstalling PowerShell module - without version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
state: absent
check_mode: yes
register: module_uninstall_without_version
- name: "get result uninstalling PowerShell module - without version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable | Measure-Object ).Count -ge 1"
changed_when: false
register: result_module_uninstall_without_version
- name: "test uninstalling PowerShell module - without version - check mode: true"
assert:
that:
- module_uninstall_without_version is changed
- result_module_uninstall_without_version.stdout | trim | bool == true
- name: "check uninstalling PowerShell module - without version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
state: absent
register: module_uninstall_without_version
- name: "get result uninstalling PowerShell module - without version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable | Measure-Object ).Count -eq 0"
changed_when: false
register: result_module_uninstall_without_version
- name: "test uninstalling PowerShell module - without version - check mode: false"
assert:
that:
- module_uninstall_without_version is changed
- result_module_uninstall_without_version.stdout | trim | bool == true
- name: check idempotency uninstalling PowerShell module - without version
win_psmodule:
name: "{{ powershell_module }}"
state: absent
register: module_uninstall_2
- name: test idempotency uninstalling PowerShell module - without version
assert:
that:
- module_uninstall_2 is not changed
- name: "check installing module from Powershell Gallery - required_version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: present
check_mode: yes
register: module_required_version_setup_1
- name: "get result installing module from Powershell Gallery - required_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_required_version }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_required_version_setup_1
- name: "test installing module from Powershell Gallery - required_version - check mode: true"
assert:
that:
- module_required_version_setup_1 is changed
- result_module_required_version_setup_1.stdout | trim | bool == false
- name: "check installing module from Powershell Gallery - required_version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: present
register: module_required_version_setup_1
- name: "get result installing module from Powershell Gallery - required_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_required_version }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_required_version_setup_1
- name: "test installing module from Powershell Gallery - required_version - check mode: false"
assert:
that:
- module_required_version_setup_1 is changed
- result_module_required_version_setup_1.stdout | trim | bool == true
- name: check idempotency installing module from Powershell Gallery - required_version
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: present
register: module_required_version_setup_2
- name: test idempotency installing module from Powershell Gallery - required_version
assert:
that:
- module_required_version_setup_2 is not changed
- name: "check uninstall PowerShell module - required_version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: absent
register: module_uninstall_required_version
- name: "get result uninstall PowerShell module - required_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_required_version }}' } | Measure-Object).Count -eq 0"
changed_when: false
register: result_module_uninstall_required_version
- name: "test PowerShell module uninstall - required_version - check mode: false"
assert:
that:
- module_uninstall_required_version is changed
- result_module_uninstall_required_version.stdout | trim | bool == true
- name: check installing module from Powershell Gallery - required_version but not existing
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_ultra_high_version }}"
state: present
register: module_required_version_setup_3
ignore_errors: yes
- name: test installing module from Powershell Gallery - required_version but not existing
assert:
that:
- module_required_version_setup_3 is not changed
- module_required_version_setup_3 is failed
- "'Problems installing {{ powershell_module }} module: No match was found for the specified search criteria' in module_required_version_setup_3.msg"
- name: "check installing module from Powershell Gallery - maximum_version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_maximum_version_request }}"
state: present
check_mode: yes
register: module_maximum_version_setup_1
- name: "get result installing module from Powershell Gallery - maximum_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_maximum_version_setup_1
- name: "test installing module from Powershell Gallery - maximum_version - check mode: true"
assert:
that:
- module_maximum_version_setup_1 is changed
- result_module_maximum_version_setup_1.stdout | trim | bool == false
- name: "check installing module from Powershell Gallery - maximum_version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_maximum_version_request }}"
state: present
register: module_maximum_version_setup_1
- name: "get result installing module from Powershell Gallery - maximum_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_maximum_version_setup_1
- name: "test installing module from Powershell Gallery - maximum_version - check mode: false"
assert:
that:
- module_maximum_version_setup_1 is changed
- result_module_maximum_version_setup_1.stdout | trim | bool == true
- name: check idempotency installing module from Powershell Gallery - maximum_version
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_maximum_version_request }}"
state: present
register: module_maximum_version_setup_2
- name: test idempotency installing module from Powershell Gallery - maximum_version
assert:
that:
- module_maximum_version_setup_2 is not changed
- name: "check uninstall PowerShell module - maximum_version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_maximum_version_request }}"
state: absent
check_mode: yes
register: module_uninstall_maximum_version
- name: "get result uninstall PowerShell module - maximum_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_uninstall_maximum_version
- name: "test PowerShell module uninstall - maximum_version - check mode: true"
assert:
that:
- module_uninstall_maximum_version is changed
- result_module_uninstall_maximum_version.stdout | trim | bool == true
- name: "check uninstall PowerShell module - maximum_version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_maximum_version_request }}"
state: absent
register: module_uninstall_maximum_version
- name: "get result uninstall PowerShell module - maximum_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_maximum_version_result }}' } | Measure-Object).Count -eq 0"
changed_when: false
register: result_module_uninstall_maximum_version
- name: "test PowerShell module uninstall - maximum_version - check mode: false"
assert:
that:
- module_uninstall_maximum_version is changed
- result_module_uninstall_maximum_version.stdout | trim | bool == true
- name: check installing module from Powershell Gallery - maximum_version but not existing
win_psmodule:
name: "{{ powershell_module }}"
maximum_version: "{{ powershell_module_ultra_low_version }}"
state: present
register: module_maximum_version_setup_3
ignore_errors: yes
- name: test installing module from Powershell Gallery - maximum_version but not existing
assert:
that:
- module_maximum_version_setup_3 is not changed
- module_maximum_version_setup_3 is failed
# Don't move skip_publisher_check tests below minimum_version and maximum_version tests
- name: check installing module with skip_publisher_check not active
win_psmodule:
name: "{{ skip_publisher_check_module }}"
# Adding a required version is required because the tested module
# is bundled within OS and has not be digitally signed (since 4.4.3 it's)
required_version: "4.2.0"
# Run only for systems with built'in module e.g. Windows 10
when: skip_publisher_module_exist.stdout | int == 1
register: fail_skip_publisher_check
ignore_errors: yes
- name: test installing module with skip_publisher_check not active
assert:
that:
- fail_skip_publisher_check is failed
- "'being installed is not catalog signed. Ensure that the version' in fail_skip_publisher_check.msg"
when: skip_publisher_module_exist.stdout | int >= 1
- name: "check installing module with skip_publisher_check active - check mode: true"
win_psmodule:
name: "{{ skip_publisher_check_module }}"
# Adding a required version is required because the tested module
# is bundled within OS and has not be digitally signed (since 4.4.3 it's)
required_version: "4.2.0"
skip_publisher_check: yes
check_mode: yes
register: ok_skip_publisher_check
- name: "get result installing module with skip_publisher_check active - check mode: true"
win_shell: "(Get-Module -Name {{ skip_publisher_check_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq {{ skip_publisher_module_exist.stdout | int }}"
changed_when: false
register: result_ok_skip_publisher_check
- name: "test installing module with skip_publisher_check active - check mode: true"
assert:
that:
- ok_skip_publisher_check is changed
- result_ok_skip_publisher_check.stdout | trim | bool == true
- name: "check installing module with skip_publisher_check active - check mode: false"
win_psmodule:
name: "{{ skip_publisher_check_module }}"
# Adding a required version is required because the tested module
# is bundled within OS and has not be digitally signed (since 4.4.3 it's)
required_version: "4.2.0"
skip_publisher_check: yes
register: ok_skip_publisher_check
- name: "get result installing module with skip_publisher_check active - check mode: false"
win_shell: "(Get-Module -Name {{ skip_publisher_check_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq {{ skip_publisher_module_exist.stdout | int + 1 }}"
changed_when: false
register: result_ok_skip_publisher_check
- name: "test installing module with skip_publisher_check active - check mode: false"
assert:
that:
- ok_skip_publisher_check is changed
- result_ok_skip_publisher_check.stdout | trim | bool == true
- name: "check Powershell Gallery module setup - minimum_version and maximum_version - check mode: true"
win_psmodule:
name: "{{ powershell_module_2 }}"
minimum_version: "{{ powershell_module_2_minimum_version_request }}"
maximum_version: "{{ powershell_module_2_maximum_version_request }}"
skip_publisher_check: yes
state: present
check_mode: yes
register: module_minimum_maximim_version_setup_1
- name: "get result Powershell Gallery module setup - minimum_version and maximum_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module_2 }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_2_minimum_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_minimum_maximim_version_setup_1
- name: "test Powershell Gallery module setup - minimum_version and maximum_version - check mode: true"
assert:
that:
- module_minimum_maximim_version_setup_1 is changed
- result_module_minimum_maximim_version_setup_1.stdout | trim | bool == false
- name: "check Powershell Gallery module setup - minimum_version and maximum_version - check mode: false"
win_psmodule:
name: "{{ powershell_module_2 }}"
minimum_version: "{{ powershell_module_2_minimum_version_request }}"
maximum_version: "{{ powershell_module_2_maximum_version_request }}"
skip_publisher_check: yes
state: present
register: module_minimum_maximim_version_setup_1
- name: "get result Powershell Gallery module setup - minimum_version and maximum_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module_2 }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_2_minimum_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_minimum_maximim_version_setup_1
- name: "test Powershell Gallery module setup - minimum_version and maximum_version - check mode: false"
assert:
that:
- module_minimum_maximim_version_setup_1 is changed
- result_module_minimum_maximim_version_setup_1.stdout | trim | bool == true
- name: check idempotency reinstalling module - minimum_version and maximum_version
win_psmodule:
name: "{{ powershell_module_2 }}"
minimum_version: "{{ powershell_module_2_minimum_version_request }}"
maximum_version: "{{ powershell_module_2_maximum_version_request }}"
state: present
register: module_minimum_maximim_version_setup_2
- name: test idempotency reinstalling module - minimum_version and maximum_version
assert:
that:
- module_minimum_maximim_version_setup_2 is not changed
- name: "check uninstall PowerShell module - minimum_version and maximum_version - check mode: true"
win_psmodule:
name: "{{ powershell_module_2 }}"
minimum_version: "{{ powershell_module_2_minimum_version_request }}"
maximum_version: "{{ powershell_module_2_maximum_version_request }}"
state: absent
check_mode: yes
register: module_uninstall_minimum_maximum_version
- name: "get result uninstall PowerShell module - minimum_version and maximum_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module_2 }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_2_minimum_maximum_version_result }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_uninstall_minimum_maximum_version
- name: "test uninstall PowerShell module - minimum_version and maximum_version - check mode: true"
assert:
that:
- module_uninstall_minimum_maximum_version is changed
- result_module_uninstall_minimum_maximum_version.stdout | trim | bool == true
- name: "check uninstall PowerShell module - minimum_version and maximum_version - check mode: false"
win_psmodule:
name: "{{ powershell_module_2 }}"
minimum_version: "{{ powershell_module_2_minimum_version_request }}"
maximum_version: "{{ powershell_module_2_maximum_version_request }}"
state: absent
register: module_uninstall_minimum_maximum_version
- name: "get result uninstall PowerShell module - minimum_version and maximum_version - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module_2 }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_2_minimum_maximum_version_result }}' } | Measure-Object).Count -eq 0"
changed_when: false
register: result_module_uninstall_minimum_maximum_version
- name: "test uninstall PowerShell module - minimum_version and maximum_version - check mode: false"
assert:
that:
- module_uninstall_minimum_maximum_version is changed
- result_module_uninstall_minimum_maximum_version.stdout | trim | bool == true
- name: check installing module with allow_clobber not active
win_psmodule:
name: "{{ allow_clobber_module }}"
register: fail_allow_clobber
ignore_errors: yes
- name: test installing module with allow_clobber not active
assert:
that:
- fail_allow_clobber is failed
- "'The following commands are already available on this system' in fail_allow_clobber.msg"
- name: "check installing module with allow_clobber active - check mode: true"
win_psmodule:
name: "{{ allow_clobber_module }}"
allow_clobber: yes
check_mode: yes
register: ok_allow_clobber
- name: "get result installing module with allow_clobber active - check mode: true"
win_shell: "(Get-Module -Name {{ allow_clobber_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq 1"
changed_when: false
register: result_ok_allow_clobber
- name: "test installing module with allow_clobber active - check mode: true"
assert:
that:
- ok_allow_clobber is changed
- result_ok_allow_clobber.stdout | trim | bool == false
- name: "check installing module with allow_clobber active - check mode: false"
win_psmodule:
name: "{{ allow_clobber_module }}"
allow_clobber: yes
register: ok_allow_clobber
- name: "get result installing module with allow_clobber active - check mode: false"
win_shell: "(Get-Module -Name {{ allow_clobber_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq 1"
changed_when: false
register: result_ok_allow_clobber
- name: "test installing module with allow_clobber active - check mode: false"
assert:
that:
- ok_allow_clobber is changed
- result_ok_allow_clobber.stdout | trim | bool == true
- name: "check uninstall PowerShell module allow_clobber - check mode: true"
win_psmodule:
name: "{{ allow_clobber_module }}"
state: absent
check_mode: yes
register: module_uninstall_4
- name: "get uninstall PowerShell module allow_clobber - check mode: true"
win_shell: "(Get-Module -Name {{ allow_clobber_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq 1"
register: result_module_uninstall_4
- name: "test uninstall PowerShell module allow_clobber - check mode: true"
assert:
that:
- module_uninstall_4 is changed
- result_module_uninstall_4.stdout | trim | bool == true
- name: "check uninstall PowerShell module allow_clobber - check mode: false"
win_psmodule:
name: "{{ allow_clobber_module }}"
state: absent
register: module_uninstall_4
- name: "get uninstall PowerShell module allow_clobber - check mode: false"
win_shell: "(Get-Module -Name {{ allow_clobber_module }} -ListAvailable -ErrorAction Ignore | Measure-Object).Count -eq 0"
register: result_module_uninstall_4
- name: "test uninstall PowerShell module allow_clobber - check mode: false"
assert:
that:
- module_uninstall_4 is changed
- result_module_uninstall_4.stdout | trim | bool == true
- name: check installing module with allow_prerelease not active
win_psmodule:
name: "{{ allow_prerelease_module }}"
required_version: "{{ allow_prerelease_version }}"
allow_prerelease: no
skip_publisher_check: yes
register: fail_allow_prerelease
ignore_errors: yes
- name: test installing module with allow_prerelease not active
assert:
that:
- fail_allow_prerelease is failed
- name: "check installing prerelease module with allow_prerelease active - check mode: true"
win_psmodule:
name: "{{ allow_prerelease_module }}"
required_version: "{{ allow_prerelease_version }}"
allow_prerelease: yes
skip_publisher_check: yes
check_mode: yes
register: ok_allow_prerelease
- name: "test installing prerelease module with allow_prerelease active - check mode: true"
assert:
that:
- ok_allow_prerelease is changed
- name: "check installing prerelease module with allow_prerelease active - check mode: false"
win_psmodule:
name: "{{ allow_prerelease_module }}"
required_version: "{{ allow_prerelease_version }}"
allow_prerelease: yes
skip_publisher_check: yes
register: ok_allow_prerelease
- name: "test installing prerelease module with allow_prerelease active - check mode: false"
assert:
that:
- ok_allow_prerelease is changed
- name: check installing module with a wrong name
win_psmodule:
name: "{{ wrong_module }}"
state: present
ignore_errors: yes
register: module_fail
- name: test installing module with a wrong name
assert:
that:
- module_fail is failed
- "'Problems installing {{ wrong_module }} module: No match was found for the specified search criteria' in module_fail.msg"
- name: check installing module from Powershell Gallery - without version 3
win_psmodule:
name: "{{ powershell_module }}"
state: present
register: module_without_version_setup_3
- name: get result installing module from Powershell Gallery - without version 3
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ module_latest_version.stdout | trim }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_without_version_setup_3
- name: test Powershell Gallery module setup - without version 3
assert:
that:
- module_without_version_setup_3 is changed
- result_module_without_version_setup_3.stdout | trim | bool == true
- name: check installing module from Powershell Gallery - required_version 4
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: present
register: module_required_version_setup_4
- name: get result installing module from Powershell Gallery - required_version 4
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_required_version }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_required_version_setup_4
- name: test installing module from Powershell Gallery - required_version 4
assert:
that:
- module_required_version_setup_4 is changed
- result_module_required_version_setup_4.stdout | trim | bool == true
- name: "check uninstall PowerShell module - required_version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
required_version: "{{ powershell_module_required_version }}"
state: absent
check_mode: yes
register: module_uninstall_required_version
- name: "get result uninstall PowerShell module - required_version - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ powershell_module_required_version }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_uninstall_required_version
- name: "test PowerShell module uninstall - required_version - check mode: true"
assert:
that:
- module_uninstall_required_version is changed
- result_module_uninstall_required_version.stdout | trim | bool == true
- name: "check uninstall PowerShell module - minimum_version - ultra high version - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
minimum_version: "{{ powershell_module_ultra_high_version }}"
state: absent
check_mode: yes
register: module_uninstall_minimum_version
- name: "test Powershell Gallery module setup - minimum_version - ultra high version - check mode: true"
assert:
that:
- module_uninstall_minimum_version is not changed
- name: "check uninstall PowerShell module - minimum_version - ultra high version - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
minimum_version: "{{ powershell_module_ultra_high_version }}"
state: absent
register: module_uninstall_minimum_version
- name: "test Powershell Gallery module setup - minimum_version - ultra high version - check mode: false"
assert:
that:
- module_uninstall_minimum_version is not changed
- name: check fake custom ps repository registration attempt
win_psmodule:
name: "{{ wrong_module }}"
repository: "{{ fake_repo_name }}"
ignore_errors: yes
register: fake_repo_fail
- name: test fake custom ps repository registration attempt
assert:
that:
- fake_repo_fail is failed
- name: check installing module from the My Get repository and registering that repository at the same time
win_psmodule:
name: "{{ myget_powershell_module }}"
repository: "{{ myget_repository_name }}"
url: "{{ myget_repository_url }}"
state: present
register: adding_repository
- name: get installing module from the My Get repository and registering that repository at the same time
win_shell: |
$repo = Get-PSRepository -Name {{ myget_repository_name | quote }} -ErrorAction Ignore
$module = Get-Module -Name {{ myget_powershell_module }} -ListAvailable
($repo | Measure-Object).Count
$repo.SourceLocation
$repo.InstallationPolicy
($module | Measure-Object).Count
register: result_adding_repository
- name: test installing module from the My Get repository and registering that repository at the same time
assert:
that:
- adding_repository is changed
- result_adding_repository.stdout_lines[0] == '1'
- result_adding_repository.stdout_lines[1] == myget_repository_url
- result_adding_repository.stdout_lines[2] == 'Trusted'
- result_adding_repository.stdout_lines[3] == '1'
- name: check uninstalling module from the My Get repository and unregistering that repository at the same time
win_psmodule:
name: "{{ myget_powershell_module }}"
repository: "{{ myget_repository_name }}"
state: absent
register: removing_repository
- name: get uninstalling module from the My Get repository and registering that repository at the same time
win_shell: |
$repo = Get-PSRepository -Name {{ myget_repository_name | quote }} -ErrorAction Ignore
$module = Get-Module -Name {{ myget_powershell_module }} -ListAvailable
($repo | Measure-Object).Count
($module | Measure-Object).Count
register: result_removing_repository
- name: test uninstalling module from the My Get repository and registering that repository at the same time
assert:
that:
- removing_repository is changed
- result_removing_repository.stdout_lines[0] == '0'
- result_removing_repository.stdout_lines[1] == '0'
# I don't know why Publish-Module doesn't work correctly under Ansible and PowerShell 3.0
- name: check operations related to the custom repository
when: powershell_major_version.stdout | int >= 4
block:
- name: "check sample module is uninstalled - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
state: absent
register: module_uninstall_4
- name: "create repository path - check mode: false"
win_file:
path: "{{custom_repo_path}}"
state: directory
- name: "copy some module to custom repo - check mode: false"
win_shell: |
$ErrorActionPreference = "Stop"
Save-Module -Name "{{powershell_module}}" -Repository PSGallery -Path $env:Temp | Out-Null
$repoName = "{{custom_repo_name}}"
$repoPath = "{{custom_repo_path}}"
Register-PSRepository -Name $repoName -SourceLocation $repoPath -InstallationPolicy Trusted | Out-Null
Publish-Module -Repository PSRegisterRepo -Path "$env:temp\Powershell-yaml" -Force -Confirm:$false -Verbose | Out-Null
Start-Sleep -Seconds 15
Get-ChildItem -Path $repoPath\* -include *.nupkg | Where-Object { $_.Name -match "{{powershell_module}}" } | ForEach-Object { $_.Name }
register: saved_package
- name: "check installing module from custom Powershell repository - check mode: true"
win_psmodule:
name: "{{ powershell_module }}"
state: present
repository: "{{custom_repo_name}}"
check_mode: yes
register: module_from_custom_repo
- name: "test sample module in custom repo - check mode: false"
assert:
that:
- powershell_module | lower in ((saved_package.stdout_lines | last) | lower)
- name: "get the latest version of module in custom repo"
win_shell: "((Find-Module -Name {{ powershell_module }} -Repository {{custom_repo_name}}).Version).ToString()"
changed_when: false
register: saved_module_latest_version
- name: "get result installing module from custom Powershell repository - check mode: true"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ saved_module_latest_version.stdout }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_from_custom_repo
- name: "test installing module from custom Powershell repository - check mode: true"
assert:
that:
- module_from_custom_repo is changed
- result_module_from_custom_repo.stdout | trim | bool == false
- name: "check installing module from custom Powershell repository - check mode: false"
win_psmodule:
name: "{{ powershell_module }}"
state: present
repository: "{{custom_repo_name}}"
register: module_from_custom_repo
- name: "get result installing module from custom Powershell repository - check mode: false"
win_shell: "(Get-Module -Name {{ powershell_module }} -ListAvailable -ErrorAction Ignore | Where-Object { $_.Version -eq '{{ saved_module_latest_version.stdout }}' } | Measure-Object).Count -eq 1"
changed_when: false
register: result_module_from_custom_repo
- name: "test installing module from custom Powershell repository - check mode: false"
assert:
that:
- module_from_custom_repo is changed
- result_module_from_custom_repo.stdout | trim | bool == true
- name: test module was installed from custom repo
win_shell: "(Get-InstalledModule -Name {{ powershell_module }}).Repository"
register: is_package_customrepo
- name: test sample module is installed from custom repo
assert:
that:
- is_package_customrepo.stdout_lines[0] == custom_repo_name

View File

@@ -1,5 +1,15 @@
# This file is part of Ansible
# test code for the win_psmodule module when using winrm connection
# 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)
---
# The file contains tests for backward compatibility only - for Ansible < 2.8.
# They should be removed under a deprecation of the functionalities for adding/removing
# repositories.
- name: install module from Powershell Gallery
win_psmodule:
name: "{{ powershell_module }}"
@@ -46,7 +56,7 @@
- "ok_allow_clobber is changed"
- name: check wrong module install attempt
win_psmodule:
win_psmodule:
name: "{{ wrong_module }}"
state: present
ignore_errors: yes
@@ -146,35 +156,35 @@
- name: Copy some module to custom repo
win_shell: |
# Need PSGet 1.6.0 for publishing and named repo usage
$psg = [PSCustomObject]@{ n="PowerShellGet"; v="1.6.0"};
Remove-Module -Name $psg.n -Force -EA SilentlyContinue;
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -EV missingProvider -Force | Out-Null;
$psg = [PSCustomObject]@{ n="PowerShellGet"; v="1.6.0"}
Remove-Module -Name $psg.n -Force -ErrorAction SilentlyContinue
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -ErrorVariable missingProvider -Force | Out-Null
if($missingProvider){
Install-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Confirm:$false -Force | Out-Null;
Install-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Confirm:$false -Force | Out-Null
# Unload previous version
Remove-Module -Name $psg.n -Force -EA SilentlyContinue;
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Force | Out-Null;
Remove-Module -Name $psg.n -Force -ErrorAction SilentlyContinue;
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Force | Out-Null
}
$modName = "{{powershell_module}}";
$temp = $env:Temp;
$modName = "{{powershell_module}}"
$temp = $env:Temp
Save-Module -Name $modName -Repository PSGallery -Path $temp | Out-Null;
Save-Module -Name $modName -Repository PSGallery -Path $temp | Out-Null
$repoName = "{{custom_repo_name}}";
$repoPath = "{{custom_repo_path}}";
$repoName = "{{custom_repo_name}}"
$repoPath = "{{custom_repo_path}}"
if(!(Test-Path $repoPath)){
New-Item -Type Directory $repoPath -Force | Out-Null;
New-Item -Type Directory $repoPath -Force | Out-Null
}
Register-PSRepository -Name $repoName -SourceLocation $repoPath -InstallationPolicy Trusted | Out-Null;
Publish-Module -Path "$temp\\$modName" -Repository $repoName -Force -Confirm:$false | Out-Null;
Get-ChildItem "$repoPath\\*" | ? Name -match "$modName.*.nupkg" | % Name;
Register-PSRepository -Name $repoName -SourceLocation $repoPath -InstallationPolicy Trusted | Out-Null
Publish-Module -Path "$temp\\$modName" -Repository $repoName -Force -Confirm:$false | Out-Null
Get-ChildItem -Path "$repoPath\\*" | Where-Object { $_.Name -match "$modName.*.nupkg" } | ForEach-Object { $_.Name }
register: saved_package
- name: Validate sample module in custom repo