---
# 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: set destination filename
  set_fact:
    bl_file: '{{ remote_tmp_dir }}/blacklist-ansible.conf'

- name: copy blacklist file
  copy:
    src: 'files/blacklist'
    dest: '{{ bl_file }}'

- name: Original stat
  stat:
    path: '{{ bl_file }}'
  register: orig_stat

- name: remove non-existing item from list
  community.general.kernel_blacklist:
    blacklist_file: '{{ bl_file }}'
    state: absent
    name: zzzz
  register: bl_test_1

- name: add existing item from list
  community.general.kernel_blacklist:
    blacklist_file: '{{ bl_file }}'
    state: present
    name: bbbb
  register: bl_test_1a

- name: stat_test_1
  stat:
    path: '{{ bl_file }}'
  register: stat_test_1

- name: assert file is unchanged
  assert:
    that:
    - bl_test_1 is not changed
    - bl_test_1a is not changed
    - orig_stat.stat.size == stat_test_1.stat.size
    - orig_stat.stat.checksum == stat_test_1.stat.checksum
    - orig_stat.stat.mtime == stat_test_1.stat.mtime
    - stat_test_1.stat.checksum == 'blacklist aaaa\nblacklist bbbb\nblacklist cccc\n' | checksum

- name: add new item to list
  community.general.kernel_blacklist:
    blacklist_file: '{{ bl_file }}'
    state: present
    name: dddd
  register: bl_test_2

- name: slurp_test_2
  slurp:
    src: '{{ bl_file }}'
  register: slurp_test_2

- name: assert element is added
  assert:
    that:
    - bl_test_2 is changed
    - slurp_test_2.content|b64decode == content
  vars:
    content: |
      blacklist aaaa
      blacklist bbbb
      blacklist cccc
      blacklist dddd

- name: remove item from list
  community.general.kernel_blacklist:
    blacklist_file: '{{ bl_file }}'
    state: absent
    name: bbbb
  register: bl_test_3

- name: slurp_test_3
  slurp:
    src: '{{ bl_file }}'
  register: slurp_test_3

- name: assert element is added
  assert:
    that:
    - bl_test_3 is changed
    - slurp_test_3.content|b64decode == content
  vars:
    content: |
      blacklist aaaa
      blacklist cccc
      blacklist dddd