ansible/test/integration/targets/win_package/tasks/msix_tests.yml

448 lines
13 KiB
YAML

---
- name: enable sideloading of apps for test
win_regedit:
path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
name: AllowAllTrustedApps
data: 1
type: dword
state: present
notify: remove sideloading mode for msix
- name: download makeappx binaries
win_get_url:
url: '{{ makeappx_url }}'
dest: '{{ test_path }}\makeappx.zip'
- name: extract makeappx binaries
win_shell: Expand-Archive -LiteralPath '{{ test_path }}\makeappx.zip' -DestinationPath '{{ test_path }}\makeappx'
- name: setup MSIX packages
win_make_appx:
packages:
- identity: '{{ msix_id }}'
version: 1.0.0.0
filename: WinPackage-1.0.0.0.msix
- identity: '{{ msix_id }}'
version: 1.0.0.1
filename: WinPackage-1.0.0.1.msix
- identity: '{{ appx_id }}'
version: 1.0.0.0
filename: WinPackage.appx
- identity: '{{ msixbundle_id }}'
version: 1.0.0.1
architecture: x64
resource_id: resid
filename: WinPackageBundle-x64.msix
- identity: '{{ msixbundle_id }}'
version: 1.0.0.1
architecture: x86
resource_id: resid
filename: WinPackageBundle-x86.msix
- identity: '{{ appxbundle_id }}'
version: 1.0.0.1
architecture: x64
resource_id: resid
filename: WinPackageBundle-x64.appx
- identity: '{{ appxbundle_id }}'
version: 1.0.0.1
architecture: x86
resource_id: resid
filename: WinPackageBundle-x86.appx
- identity: FailMsix
version: 1.2.3.4
min_version: 99.0.0.0
max_version: 99.0.0.0
filename: Fail.msix
bundles:
- files:
- WinPackageBundle-x64.msix
- WinPackageBundle-x86.msix
filename: WinPackageBundle.msixbundle
- files:
- WinPackageBundle-x64.appx
- WinPackageBundle-x86.appx
filename: WinPackageBundle.appxbundle
publisher: CN=Ansible Core, O=Ansible, L=Durhan, S=NC, C=USA
path: '{{ test_path }}'
makeappx_path: '{{ test_path }}\makeappx\makeappx.exe'
signtool_path: '{{ test_path }}\makeappx\signtool.exe'
become: yes # New-SelfSignedCertificate requires this to store the cert with key into the store.
become_method: runas
vars:
ansible_become_user: '{{ ansible_user }}'
ansible_become_pass: '{{ ansible_password }}'
register: test_win_package_msix_packages
notify: remove trusted root cert
- name: install msix (check mode)
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
state: present
register: msix_install_check
check_mode: yes
- name: get result of install msix (check mode)
win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
register: msix_install_actual_check
changed_when: False
- name: assert install msix (check mode)
assert:
that:
- msix_install_check is changed
- msix_install_check.rc == 0
- not msix_install_check.reboot_required
- not msix_install_actual_check.stdout | trim | bool
- name: install msix
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
state: present
register: msix_install
- name: get result of install msix
win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
register: msix_install_actual
changed_when: False
- name: assert install msix
assert:
that:
- msix_install is changed
- msix_install.rc == 0
- not msix_install.reboot_required
- msix_install_actual.stdout | trim | bool
- name: install msix (idempotence)
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
state: present
register: msix_install_again
- name: assert install msix (idempotence)
assert:
that:
- not msix_install_again is changed
- name: install updated msix package
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
state: present
register: msix_install_updated
- name: get result of install updated msix package
win_shell: Get-AppxPackage -Name '{{ msix_id }}' | Select-Object -ExpandProperty Version
changed_when: False
register: msix_install_updated_actual
- name: assert result of install updated msix package
assert:
that:
- msix_install_updated is changed
- msix_install_updated.rc == 0
- not msix_install_updated.reboot_required
- msix_install_updated_actual.stdout | trim == "1.0.0.1"
- name: fail to install older msix when new is present
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.0.msix'
state: present
register: fail_msix_older
failed_when: "'unexpected status from Add-AppxPackage' not in fail_msix_older.msg"
- name: remove msix by path (check mode)
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
state: absent
register: msix_uninstall_check
check_mode: yes
- name: get result of remove msix by path (check mode)
win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
changed_when: False
register: msix_uninstall_actual_check
- name: assert results of remove msix by path (check mode)
assert:
that:
- msix_uninstall_check is changed
- msix_uninstall_check.rc == 0
- not msix_uninstall_check.reboot_required
- msix_uninstall_actual_check.stdout | trim | bool
- name: remove msix by path
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
state: absent
register: msix_uninstall
- name: get result of remove msix by path
win_shell: if (Get-AppxPackage -Name '{{ msix_id }}') { $true } else { $false }
changed_when: False
register: msix_uninstall_actual
- name: assert results of remove msix by path
assert:
that:
- msix_uninstall is changed
- msix_uninstall.rc == 0
- not msix_uninstall.reboot_required
- not msix_uninstall_actual.stdout | trim | bool
- name: remove msix by path (idempotence)
win_package:
path: '{{ test_path }}\WinPackage-1.0.0.1.msix'
state: absent
register: msix_uninstall_again
- name: assert results of remove msix by path (idempotence)
assert:
that:
- not msix_uninstall_again is changed
# The install steps are the same as msix so no need for check and idempotency tests
- name: install appx
win_package:
path: '{{ test_path }}\WinPackage.appx'
state: present
register: appx_install
- name: get result of install appx
win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
changed_when: False
register: appx_install_actual
- name: assert results of install appx
assert:
that:
- appx_install is changed
- appx_install.rc == 0
- not appx_install.reboot_required
- appx_install_actual.stdout | trim | bool
- name: remove appx by id (check mode)
win_package:
product_id: '{{ appx_id }}'
state: absent
register: appx_uninstall_check
check_mode: yes
- name: get result of remove appx (check mode)
win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
changed_when: False
register: appx_uninstall_actual_check
- name: assert results of remove appx by id (check mode)
assert:
that:
- appx_uninstall_check is changed
- appx_uninstall_check.rc == 0
- not appx_uninstall_check.reboot_required
- appx_uninstall_actual_check.stdout | trim | bool
- name: remove appx by id
win_package:
product_id: '{{ appx_id }}'
state: absent
register: appx_uninstall
- name: get result of remove appx
win_shell: if (Get-AppxPackage -Name '{{ appx_id }}') { $true } else { $false }
changed_when: False
register: appx_uninstall_actual
- name: assert results of remove appx by id
assert:
that:
- appx_uninstall is changed
- appx_uninstall.rc == 0
- not appx_uninstall.reboot_required
- not appx_uninstall_actual.stdout | trim | bool
- name: remove appx by id (idempotence)
win_package:
product_id: '{{ appx_id }}'
state: absent
register: appx_uninstall_again
- name: assert results of remove appx by id (idempotence)
assert:
that:
- not appx_uninstall_again is changed
- name: validate failures are detected on a bad package
win_package:
path: '{{ test_path }}\Fail.msix'
state: present
register: fail_msix
failed_when: "'unexpected status from Add-AppxPackage' not in fail_msix.msg"
- name: install msixbundle (check mode)
win_package:
path: '{{ test_path }}\WinPackageBundle.msixbundle'
state: present
register: msixbundle_install_check
check_mode: yes
- name: get result of install msixbundle (check mode)
win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_install_actual_check
- name: assert install msixbundle (check mode)
assert:
that:
- msixbundle_install_check is changed
- msixbundle_install_check.rc == 0
- not msixbundle_install_check.reboot_required
- not msixbundle_install_actual_check.stdout | trim | bool
- name: install msixbundle
win_package:
path: '{{ test_path }}\WinPackageBundle.msixbundle'
state: present
register: msixbundle_install
- name: get result of install msixbundle
win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_install_actual
- name: assert install msixbundle
assert:
that:
- msixbundle_install is changed
- msixbundle_install.rc == 0
- not msixbundle_install.reboot_required
- msixbundle_install_actual.stdout | trim | bool
- name: install msixbundle (idempotence)
win_package:
path: '{{ test_path }}\WinPackageBundle.msixbundle'
state: present
register: msixbundle_install_again
- name: assert install msixbundle (idempotence)
assert:
that:
- not msixbundle_install_again is changed
- name: uninstall msixbundle by id (check mode)
win_package:
product_id: '{{ msixbundle_id }}'
state: absent
register: msixbundle_uninstall_check
check_mode: yes
- name: get result of uninstall msixbundle by id (check mode)
win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_uninstall_actual_check
- name: assert uninstall msixbundle by id (check mode)
assert:
that:
- msixbundle_uninstall_check is changed
- msixbundle_uninstall_check.rc == 0
- not msixbundle_uninstall_check.reboot_required
- msixbundle_uninstall_actual_check.stdout | trim | bool
- name: uninstall msixbundle by id
win_package:
product_id: '{{ msixbundle_id }}'
state: absent
register: msixbundle_uninstall
- name: get result of uninstall msixbundle by id
win_shell: if (Get-AppxPackage -Name '{{ msixbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_uninstall_actual
- name: assert uninstall msixbundle by id
assert:
that:
- msixbundle_uninstall is changed
- msixbundle_uninstall.rc == 0
- not msixbundle_uninstall.reboot_required
- not msixbundle_uninstall_actual.stdout | trim | bool
- name: uninstall msixbundle by id (idempotence)
win_package:
product_id: '{{ msixbundle_id }}'
state: absent
register: msixbundle_uninstall_again
- name: assert uninstall msixbundle by id (idempotence)
assert:
that:
- not msixbundle_uninstall_again is changed
# The logic for appxbundle is the same for msixbundle no need for check and idempotence tests
- name: install appxbundle
win_package:
path: '{{ test_path }}\WinPackageBundle.appxbundle'
state: present
register: appxbundle_install
- name: get result of install appxbundle
win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
changed_when: False
register: appxbundle_install_actual
- name: assert install appxbundle
assert:
that:
- appxbundle_install is changed
- appxbundle_install.rc == 0
- not appxbundle_install.reboot_required
- appxbundle_install_actual.stdout | trim | bool
- name: uninstall appxbundle by path (check mode)
win_package:
path: '{{ test_path }}\WinPackageBundle.appxbundle'
state: absent
register: msixbundle_uninstall_check
check_mode: yes
- name: get result of uninstall appxbundle by path (check mode)
win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_uninstall_actual_check
- name: assert uninstall appxbundle by path (check mode)
assert:
that:
- msixbundle_uninstall_check is changed
- msixbundle_uninstall_check.rc == 0
- not msixbundle_uninstall_check.reboot_required
- msixbundle_uninstall_actual_check.stdout | trim | bool
- name: uninstall appxbundle by path
win_package:
path: '{{ test_path }}\WinPackageBundle.appxbundle'
state: absent
register: msixbundle_uninstall
- name: get result of uninstall appxbundle by path
win_shell: if (Get-AppxPackage -Name '{{ appxbundle_id }}') { $true } else { $false }
changed_when: False
register: msixbundle_uninstall_actual
- name: assert uninstall appxbundle by path
assert:
that:
- msixbundle_uninstall is changed
- msixbundle_uninstall.rc == 0
- not msixbundle_uninstall.reboot_required
- not msixbundle_uninstall_actual.stdout | trim | bool
- name: uninstall appxbundle by path (idempotence)
win_package:
path: '{{ test_path }}\WinPackageBundle.appxbundle'
state: absent
register: msixbundle_uninstall_again
- name: assert uninstall appxbundle by path (idempotence)
assert:
that:
- not msixbundle_uninstall_again is changed