# https://github.com/ansible/ansible/issues/71916
- name: Test setting expiration for a user account that does not have an /etc/shadow entry
  when: ansible_facts.os_family in ['RedHat', 'Debian']
  block:
    - name: Remove ansibulluser
      user:
        name: ansibulluser
        state: absent
        remove: yes

    - name: Create user account entry in /etc/passwd
      lineinfile:
        path: /etc/passwd
        line: "ansibulluser::575:575::/home/dummy:/bin/bash"
        regexp: "^ansibulluser.*"
        state: present

    - name: Create user with negative expiration
      user:
        name: ansibulluser
        uid: 575
        expires: -1
      register: user_test_expires_no_shadow_1

    - name: Create user with negative expiration again
      user:
        name: ansibulluser
        uid: 575
        expires: -1
      register: user_test_expires_no_shadow_2

    - name: Ensure changes were made appropriately
      assert:
        that:
          - user_test_expires_no_shadow_1 is changed
          - user_test_expires_no_shadow_2 is not changed

    - name: Get expiration date for ansibulluser
      getent:
        database: shadow
        key: ansibulluser

    - name: LINUX | Ensure proper expiration date was set
      assert:
        msg: "expiry is supposed to be empty or -1, not {{ getent_shadow['ansibulluser'][6] }}"
        that:
          - not getent_shadow['ansibulluser'][6] or getent_shadow['ansibulluser'][6] | int < 0
