mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
pamd - fixed single line issue (#2989)
* fixed pamd single line issue * added changelog fragment * supported case for 0 lines, improved test
This commit is contained in:
parent
28193b699b
commit
a3a40f6de3
4 changed files with 72 additions and 4 deletions
2
changelogs/fragments/2989-pamd-single-line.yaml
Normal file
2
changelogs/fragments/2989-pamd-single-line.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- pamd - fixed problem with files containing only one or two lines (https://github.com/ansible-collections/community.general/issues/2925).
|
|
@ -733,14 +733,19 @@ class PamdService(object):
|
|||
lines = []
|
||||
current_line = self._head
|
||||
|
||||
mark = "# Updated by Ansible - %s" % datetime.now().isoformat()
|
||||
while current_line is not None:
|
||||
lines.append(str(current_line))
|
||||
current_line = current_line.next
|
||||
|
||||
if lines[1].startswith("# Updated by Ansible"):
|
||||
lines.pop(1)
|
||||
|
||||
lines.insert(1, "# Updated by Ansible - " + datetime.now().isoformat())
|
||||
if len(lines) <= 1:
|
||||
lines.insert(0, "")
|
||||
lines.insert(1, mark)
|
||||
else:
|
||||
if lines[1].startswith("# Updated by Ansible"):
|
||||
lines[1] = mark
|
||||
else:
|
||||
lines.insert(1, mark)
|
||||
|
||||
return '\n'.join(lines) + '\n'
|
||||
|
||||
|
|
5
tests/integration/targets/pamd/aliases
Normal file
5
tests/integration/targets/pamd/aliases
Normal file
|
@ -0,0 +1,5 @@
|
|||
shippable/posix/group1
|
||||
skip/aix
|
||||
skip/freebsd
|
||||
skip/osx
|
||||
skip/macos
|
56
tests/integration/targets/pamd/tasks/main.yml
Normal file
56
tests/integration/targets/pamd/tasks/main.yml
Normal file
|
@ -0,0 +1,56 @@
|
|||
# (c) 2021, Alexei Znamensky
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
- name: Set value for temp limit configuration
|
||||
set_fact:
|
||||
test_pamd_file: "/tmp/pamd_file"
|
||||
|
||||
- name: Copy temporary pam.d file
|
||||
copy:
|
||||
content: "session required pam_lastlog.so silent showfailed"
|
||||
dest: "{{ test_pamd_file }}"
|
||||
|
||||
- name: Test working on a single-line file works (2925)
|
||||
community.general.pamd:
|
||||
path: /tmp
|
||||
name: pamd_file
|
||||
type: session
|
||||
control: required
|
||||
module_path: pam_lastlog.so
|
||||
module_arguments: silent
|
||||
state: args_absent
|
||||
register: pamd_file_output
|
||||
|
||||
- name: Check if changes made
|
||||
assert:
|
||||
that:
|
||||
- pamd_file_output is changed
|
||||
|
||||
- name: Copy temporary pam.d file
|
||||
copy:
|
||||
content: ""
|
||||
dest: "{{ test_pamd_file }}"
|
||||
|
||||
# This test merely demonstrates that, as-is, module will not perform any changes on an empty file
|
||||
# All the existing values for "state" will first search for a rule matching type, control, module_path
|
||||
# and will not perform any change whatsoever if no existing rules match.
|
||||
- name: Test working on a empty file works (2925)
|
||||
community.general.pamd:
|
||||
path: /tmp
|
||||
name: pamd_file
|
||||
type: session
|
||||
control: required
|
||||
module_path: pam_lastlog.so
|
||||
module_arguments: silent
|
||||
register: pamd_file_output_empty
|
||||
|
||||
- name: Read back the file
|
||||
slurp:
|
||||
src: "{{ test_pamd_file }}"
|
||||
register: pamd_file_slurp
|
||||
|
||||
- name: Check if changes made
|
||||
assert:
|
||||
that:
|
||||
- pamd_file_output_empty is not changed
|
||||
- pamd_file_slurp.content|b64decode == ''
|
Loading…
Reference in a new issue