You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/win_psmodule/tasks/test.yml

208 lines
5.6 KiB
YAML

---
- name: install module from Powershell Gallery
win_psmodule:
name: "{{ powershell_module }}"
state: present
register: module_setup
- name: test Powershell Gallery module setup
assert:
that:
- "module_setup is changed"
- "module_setup.output == 'Module {{ powershell_module }} installed'"
- name: check idempotency reinstalling module
win_psmodule:
name: "{{ powershell_module }}"
state: present
register: module_reinstall
- name: test win_psmodule idempotency
assert:
that:
- "module_reinstall is not changed"
- name: check module install with allow_clobber not active
win_psmodule:
name: "{{ allow_clobber_module }}"
register: fail_allow_clobber
ignore_errors: yes
- name: test allow_clobber has failed
assert:
that:
- "fail_allow_clobber is failed"
- name: check module install with allow_clobber active
win_psmodule:
name: "{{ allow_clobber_module }}"
allow_clobber: yes
register: ok_allow_clobber
- name: test module install with allow_clobber active
assert:
that:
- "ok_allow_clobber is changed"
- name: check wrong module install attempt
win_psmodule:
name: "{{ wrong_module }}"
state: present
ignore_errors: yes
register: module_fail
- name: test module setup fails
assert:
that:
- "module_fail is failed"
- name: check fake custom ps repository registration attempt
win_psmodule:
name: "{{ wrong_module }}"
repository: Fake repository
url: http://my_fake_repo.com/repo/
ignore_errors: yes
register: repo_fail
- name: test fake custom ps repository registration attempt
assert:
that:
- "repo_fail is failed"
- name: check module is installed
win_shell: (Get-Module -Name {{ powershell_module }} -ListAvailable).Name
register: module_check
- name: test module is installed
assert:
that:
- "module_check.stdout_lines[0] == '{{ powershell_module }}'"
- name: check allow_clobber module is installed
win_shell: (Get-Module -Name {{ allow_clobber_module }} -ListAvailable).Name
register: allow_clobber_check
- name: test allow_clobber module is installed
assert:
that:
- "allow_clobber_check.stdout_lines[0] == '{{ allow_clobber_module }}'"
- name: remove installed powershell module
win_psmodule:
name: powershell-yaml
state: absent
register: module_uninstall
- name: test powershell module removal
assert:
that:
- "module_uninstall is changed"
- "module_uninstall.output == 'Module {{ powershell_module }} removed'"
- name: check module is uninstalled
win_shell: (Get-Module -Name {{ powershell_module }} -ListAvailable).Name
register: module_check
- name: test module is no more present
assert:
that:
- "module_check.stdout == ''"
- name: check idempotency re-removing module
win_psmodule:
name: "{{ powershell_module }}"
state: absent
register: module_uninstall_2
- name: test idempotency
assert:
that:
- "module_uninstall_2 is not changed"
- name: check removing allow_clobber module
win_psmodule:
name: "{{ allow_clobber_module }}"
state: absent
register: module_uninstall_3
- name: test removing allow_clobber module
assert:
that:
- "module_uninstall_2 is not changed"
- "module_uninstall_3 is changed"
- name: Create repository path
win_file:
path: "{{custom_repo_path}}"
state: directory
- name: Make sure sample module is uninstalled
win_psmodule:
name: "{{ powershell_module }}"
state: absent
register: module_uninstall_4
- 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;
if($missingProvider){
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;
}
$modName = "{{powershell_module}}";
$temp = $env:Temp;
Save-Module -Name $modName -Repository PSGallery -Path $temp | Out-Null;
$repoName = "{{custom_repo_name}}";
$repoPath = "{{custom_repo_path}}";
if(!(Test-Path $repoPath)){
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: saved_package
- name: Validate sample module in custom repo
assert:
that:
- "powershell_module in (saved_package.stdout_lines | last)"
- name: Install module from custom Powershell repository
win_psmodule:
name: "{{ powershell_module }}"
state: present
repository: "{{custom_repo_name}}"
url: "{{custom_repo_path}}"
register: module_from_custom_repo
- name: Test custom Powershell repository module install
assert:
that:
- "module_from_custom_repo is changed"
- "module_from_custom_repo.output == 'Module {{ powershell_module }} installed'"
- name: Verify module was installed from custom repo
win_shell: (Get-InstalledModule -Name "{{powershell_module}}").Repository
register: is_package_customrepo
- name: Validate sample module is installed from custom repo
assert:
that:
- "is_package_customrepo.stdout_lines[0] == custom_repo_name"