---
# Test the corrected WireGuard async pattern
- name: Test corrected WireGuard async pattern
  hosts: localhost
  gather_facts: no
  vars:
    test_users: ["testuser1", "testuser2"]
    IP_subject_alt_name: "127.0.0.1"
    wireguard_pki_path: "/tmp/test-fixed-wireguard"

  tasks:
    - name: Create test directory
      file:
        path: "{{ wireguard_pki_path }}/private"
        state: directory
        mode: '0700'

    - name: Generate keys (parallel) - simulating wg genkey
      command: echo "mock_private_key_for_{{ item }}"
      register: wg_genkey
      with_items:
        - "{{ test_users }}"
        - "{{ IP_subject_alt_name }}"
      async: 10
      poll: 0

    - name: Wait for completion - simulating async_status
      async_status:
        jid: "{{ item.ansible_job_id }}"
      with_items: "{{ wg_genkey.results }}"
      register: wg_genkey_results
      until: wg_genkey_results.finished
      retries: 15
      delay: 1

    - name: Save using CORRECTED pattern - item.item.item
      copy:
        dest: "{{ wireguard_pki_path }}/private/{{ item.item.item }}"
        content: "{{ item.stdout }}"
        mode: "0600"
      when: item.changed
      with_items: "{{ wg_genkey_results.results }}"

    - name: Verify files were created with correct names
      stat:
        path: "{{ wireguard_pki_path }}/private/{{ item }}"
      register: file_check
      loop:
        - "testuser1"
        - "testuser2"
        - "127.0.0.1"

    - name: Assert all files exist
      assert:
        that:
          - item.stat.exists
        msg: "File should exist: {{ item.stat.path }}"
      loop: "{{ file_check.results }}"

    - name: Cleanup
      file:
        path: "{{ wireguard_pki_path }}"
        state: absent

    - debug:
        msg: "✅ WireGuard async fix test PASSED - item.item.item is the correct pattern!"
