---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

- name: (Removal, {{select_crypto_backend}}) Generate privatekey
  openssl_privatekey:
    path: '{{ remote_tmp_dir }}/removal_privatekey.pem'
    size: '{{ default_rsa_key_size_certificates }}'

- name: (Removal, {{select_crypto_backend}}) Generate CSR
  openssl_csr:
    path: '{{ remote_tmp_dir }}/removal_csr.csr'
    privatekey_path: '{{ remote_tmp_dir }}/removal_privatekey.pem'

- name: (Removal, {{select_crypto_backend}}) Generate selfsigned certificate
  x509_certificate:
    path: '{{ remote_tmp_dir }}/removal_cert.pem'
    csr_path: '{{ remote_tmp_dir }}/removal_csr.csr'
    privatekey_path: '{{ remote_tmp_dir }}/removal_privatekey.pem'
    provider: selfsigned
    selfsigned_digest: sha256
    select_crypto_backend: '{{ select_crypto_backend }}'

- name: "(Removal, {{select_crypto_backend}}) Check that file is not gone"
  stat:
    path: "{{ remote_tmp_dir }}/removal_cert.pem"
  register: removal_1_prestat

- name: "(Removal, {{select_crypto_backend}}) Remove certificate"
  x509_certificate:
    path: "{{ remote_tmp_dir }}/removal_cert.pem"
    state: absent
    select_crypto_backend: '{{ select_crypto_backend }}'
    return_content: true
  register: removal_1

- name: "(Removal, {{select_crypto_backend}}) Check that file is gone"
  stat:
    path: "{{ remote_tmp_dir }}/removal_cert.pem"
  register: removal_1_poststat

- name: "(Removal, {{select_crypto_backend}}) Remove certificate (idempotent)"
  x509_certificate:
    path: "{{ remote_tmp_dir }}/removal_cert.pem"
    state: absent
    select_crypto_backend: '{{ select_crypto_backend }}'
  register: removal_2

- name: (Removal, {{select_crypto_backend}}) Ensure removal worked
  assert:
    that:
    - removal_1_prestat.stat.exists
    - removal_1 is changed
    - not removal_1_poststat.stat.exists
    - removal_2 is not changed
    - removal_1.certificate is none
