---
# -------------------------------------------------------------
# Setup steps
- name: Clean up the working directory and files
  ansible.builtin.file:
    path: "{{ output_dir }}"
    state: absent

- name: Create the working directory
  ansible.builtin.file:
    path: "{{ output_dir }}"
    state: directory
    mode: "0744"

- name: Copy an existing file in place with comments
  ansible.builtin.copy:
    src: existing_authorized_keys
    dest: "{{ output_dir | expanduser }}/authorized_keys"
    mode: "0600"

- name: Add multiple keys different order
  ansible.posix.authorized_key:
    user: root
    key: "{{ multiple_key_different_order_2 }}"
    state: present
    path: "{{ output_dir | expanduser }}/authorized_keys"
  register: result

- name: Get the file content
  ansible.builtin.command: /bin/cat "{{ output_dir | expanduser }}/authorized_keys"
  changed_when: false
  register: multiple_keys_existing

- name: Assert that the key was added and comments and ordering preserved
  ansible.builtin.assert:
    that:
      - result.changed == True
      - '"# I like candy" in multiple_keys_existing.stdout'
      - '"# I like candy" in multiple_keys_existing.stdout_lines[0]'
      - '"ssh-rsa DATA_BASIC 1@testing" in multiple_keys_existing.stdout'
      # The specific index is a little fragile, but I want to verify the line shows up
      # as the 3rd line in the new entries after the existing entries and comments are preserved
      - '"ssh-rsa DATA_BASIC 1@testing" in multiple_keys_existing.stdout_lines[7]'

# start afresh

- name: Remove file foo.txt
  ansible.builtin.file:
    path: "{{ output_dir | expanduser }}/authorized_keys"
    state: absent

- name: Touch the authorized_keys file
  ansible.builtin.file:
    dest: "{{ output_dir }}/authorized_keys"
    state: touch
    mode: "0600"
  register: result

- name: Assert that the authorized_keys file was created
  ansible.builtin.assert:
    that:
      - result.changed == True
      - result.state == "file"
