authorized_keys - consistent behavior in check_mode

Previously check_mode would incorrectly return changed=False even when a
change would have taken place if ran without check_mode, with
integration tests that confirmed this incorrect behavior. Also the
module did not correctly populate the return values when run in
check_mode. Both of these issues are resolved in this PR.

Fixes https://github.com/ansible-collections/ansible.posix/issues/37

Signed-off-by: Adam Miller <admiller@redhat.com>
This commit is contained in:
Adam Miller 2020-06-18 23:01:06 -05:00
parent 0d0f8217cf
commit 86a5950efa
3 changed files with 18 additions and 10 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- authorized_keys - fix inconsistent return value for check mode (https://github.com/ansible-collections/ansible.posix/issues/37)

View file

@ -635,13 +635,9 @@ def enforce_state(module, params):
} }
params['diff'] = diff params['diff'] = diff
if module.check_mode: if not module.check_mode:
module.exit_json(changed=True, diff=diff) writefile(module, filename, new_content)
writefile(module, filename, new_content)
params['changed'] = True params['changed'] = True
else:
if module.check_mode:
module.exit_json(changed=False)
return params return params

View file

@ -410,12 +410,13 @@
# ------------------------------------------------------------- # -------------------------------------------------------------
# check mode # check mode
- name: copy an existing file in place with comments - name: CHECK MODE | copy an existing file in place with comments
copy: copy:
src: existing_authorized_keys src: existing_authorized_keys
dest: "{{ output_dir | expanduser }}/authorized_keys" dest: "{{ output_dir | expanduser }}/authorized_keys"
- authorized_key: - name: CHECK MODE | add key in check mode to validate return codes
authorized_key:
user: root user: root
key: "{{ multiple_key_different_order_2 }}" key: "{{ multiple_key_different_order_2 }}"
state: present state: present
@ -423,13 +424,21 @@
check_mode: True check_mode: True
register: result register: result
- name: assert that the file was not changed - name: CHECK MODE | assert that authorized_keys return values are consistent
assert:
that:
- 'result.changed == True'
- '"user" in result'
- '"key" in result'
- name: CHECK MODE | recopy authorized_keys to ensure it was not changed
copy: copy:
src: existing_authorized_keys src: existing_authorized_keys
dest: "{{ output_dir | expanduser }}/authorized_keys" dest: "{{ output_dir | expanduser }}/authorized_keys"
register: result register: result
- assert: - name: CHECK MODE | assert that the authorized_keys file was not changed
assert:
that: that:
- 'result.changed == False' - 'result.changed == False'