63 lines
2.1 KiB
YAML
63 lines
2.1 KiB
YAML
---
|
|
# Run: ansible-playbook tests/users/test_users.yml
|
|
# One host per fixture: set_fact state cannot be cleared between loop iterations.
|
|
- name: Register one host per users fixture
|
|
hosts: localhost
|
|
gather_facts: false
|
|
connection: local
|
|
vars_files:
|
|
- users_fixtures.yml
|
|
tasks:
|
|
- name: Add the fixture host
|
|
ansible.builtin.add_host:
|
|
name: "{{ uf.name }}"
|
|
groups: users_fixtures
|
|
ansible_connection: local
|
|
ansible_python_interpreter: "{{ ansible_playbook_python }}"
|
|
expect: "{{ uf.expect }}"
|
|
system: "{{ _system }}"
|
|
system_cfg: "{{ _system if uf.precomputed | default(false) else omit }}"
|
|
vars:
|
|
_system: "{{ users_fixture_system | combine(uf.system, {'name': uf.name}, recursive=True) }}"
|
|
loop: "{{ users_fixtures }}"
|
|
loop_control:
|
|
loop_var: uf
|
|
label: "{{ uf.name }}"
|
|
|
|
- name: Run global_defaults against each users fixture
|
|
hosts: users_fixtures
|
|
gather_facts: false
|
|
vars:
|
|
hypervisor:
|
|
type: libvirt
|
|
url: qemu:///system
|
|
storage: default
|
|
boot_iso: /var/lib/libvirt/images/fixture.iso
|
|
tasks:
|
|
- name: Normalize and validate
|
|
block:
|
|
- name: Load global defaults
|
|
ansible.builtin.include_role:
|
|
name: global_defaults
|
|
|
|
- name: Record the pass
|
|
ansible.builtin.set_fact:
|
|
users_outcome: pass
|
|
rescue:
|
|
- name: Record the failure
|
|
ansible.builtin.set_fact:
|
|
users_outcome: >-
|
|
{{ ([ansible_failed_result.msg | default('')]
|
|
+ (ansible_failed_result.results | default([]) | map(attribute='msg', default='') | list))
|
|
| join(' ') }}
|
|
|
|
- name: Assert the expected outcome
|
|
ansible.builtin.assert:
|
|
that:
|
|
- >-
|
|
(users_outcome == 'pass' and bootstrap_primary_user.name == expect.primary)
|
|
if expect.primary is defined
|
|
else (expect.fail in users_outcome)
|
|
fail_msg: "[{{ inventory_hostname }}] expected {{ expect }}, got: {{ users_outcome }}"
|
|
success_msg: "[{{ inventory_hostname }}] OK"
|