---
- name: Test quote with unsafe input
  hosts: all
  vars:
    __sshd_test_backup_files:
      - /etc/ssh/sshd_config
      - /etc/ssh/sshd_config.d/00-ansible_system_role.conf

  tasks:
    - name: "Backup configuration files"
      ansible.builtin.include_tasks: tasks/backup.yml

    - name: Configure sshd with bad sysconfig configuration
      block:
        - name: Include the role
          ansible.builtin.include_role:
            name: fedora.linux_system_roles.sshd
          vars:
            sshd_skip_defaults: true
            sshd_verify_hostkeys: []
            sshd_sysconfig_use_strong_rng: "maybe yes"
          register: role_result

        - name: Unreachable task -- the role should have failed!
          ansible.builtin.fail:
            msg: UNREACH

      rescue:
        - name: Check that we failed in the role
          ansible.builtin.assert:
            that:
              - ansible_failed_result.msg != 'UNREACH'
              - not role_result.changed
            msg: "Role has not failed when it should have with invalid inputs"

    - name: Configure sshd with bad path to sshd binary
      block:
        - name: Include the role
          ansible.builtin.include_role:
            name: fedora.linux_system_roles.sshd
          vars:
            sshd_skip_defaults: true
            sshd_verify_hostkeys: []
            sshd_binary: "/usr/sbin/sshd binary"
          register: role_result

        - name: Unreachable task -- the role should have failed!
          ansible.builtin.fail:
            msg: UNREACH

      rescue:
        - name: Check that we failed in the role
          ansible.builtin.assert:
            that:
              - ansible_failed_result.msg != 'UNREACH'
              - not role_result.changed
            msg: "Role has not failed when it should have with invalid inputs"

    - name: Configure sshd with bad path sshd config
      block:
        - name: Include the role
          ansible.builtin.include_role:
            name: fedora.linux_system_roles.sshd
          vars:
            sshd_skip_defaults: true
            sshd_verify_hostkeys: []
            sshd_config_file: /etc/ssh/sshd.config.d/my fancy config
          register: role_result

        - name: Unreachable task -- the role should have failed!
          ansible.builtin.fail:
            msg: UNREACH

      rescue:
        - name: Check that we failed in the role
          ansible.builtin.assert:
            that:
              - ansible_failed_result.msg != 'UNREACH'
              - not role_result.changed
            msg: "Role has not failed when it should have with invalid inputs"

    - name: Make sure service is still running
      ansible.builtin.service:
        name: sshd
        state: started
      register: result
      failed_when: result.changed
      tags: tests::verify
      when:
        - not (ansible_facts['os_family'] == 'RedHat' and ansible_facts['distribution_major_version'] == '6')

    - name: "Restore configuration files"
      ansible.builtin.include_tasks: tasks/restore.yml
