diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:05:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:05:48 +0000 |
commit | ab76d0c3dcea928a1f252ce827027aca834213cd (patch) | |
tree | 7e3797bdd2403982f4a351608d9633c910aadc12 /test/integration/targets/slurp | |
parent | Initial commit. (diff) | |
download | ansible-core-ab76d0c3dcea928a1f252ce827027aca834213cd.tar.xz ansible-core-ab76d0c3dcea928a1f252ce827027aca834213cd.zip |
Adding upstream version 2.14.13.upstream/2.14.13
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/integration/targets/slurp')
-rw-r--r-- | test/integration/targets/slurp/aliases | 2 | ||||
-rw-r--r-- | test/integration/targets/slurp/files/bar.bin | bin | 0 -> 256 bytes | |||
-rw-r--r-- | test/integration/targets/slurp/meta/main.yml | 3 | ||||
-rw-r--r-- | test/integration/targets/slurp/tasks/main.yml | 69 | ||||
-rw-r--r-- | test/integration/targets/slurp/tasks/test_unreadable.yml | 74 |
5 files changed, 148 insertions, 0 deletions
diff --git a/test/integration/targets/slurp/aliases b/test/integration/targets/slurp/aliases new file mode 100644 index 0000000..6eae8bd --- /dev/null +++ b/test/integration/targets/slurp/aliases @@ -0,0 +1,2 @@ +shippable/posix/group1 +destructive diff --git a/test/integration/targets/slurp/files/bar.bin b/test/integration/targets/slurp/files/bar.bin Binary files differnew file mode 100644 index 0000000..38d4d8a --- /dev/null +++ b/test/integration/targets/slurp/files/bar.bin diff --git a/test/integration/targets/slurp/meta/main.yml b/test/integration/targets/slurp/meta/main.yml new file mode 100644 index 0000000..3448ece --- /dev/null +++ b/test/integration/targets/slurp/meta/main.yml @@ -0,0 +1,3 @@ +dependencies: + - setup_remote_tmp_dir + - setup_test_user diff --git a/test/integration/targets/slurp/tasks/main.yml b/test/integration/targets/slurp/tasks/main.yml new file mode 100644 index 0000000..f8ebb15 --- /dev/null +++ b/test/integration/targets/slurp/tasks/main.yml @@ -0,0 +1,69 @@ +# test code for the slurp module. Based on win_slurp test cases +# (c) 2014, Chris Church <chris@ninemoreminutes.com> + +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see <http://www.gnu.org/licenses/>. + +- name: Create a UTF-8 file to test with + copy: + content: 'We are at the café' + dest: '{{ remote_tmp_dir }}/foo.txt' + +- name: test slurping an existing file + slurp: + src: '{{ remote_tmp_dir }}/foo.txt' + register: slurp_existing + +- name: check slurp existing result + assert: + that: + - 'slurp_existing.content' + - 'slurp_existing.encoding == "base64"' + - 'slurp_existing is not changed' + - 'slurp_existing is not failed' + - 'slurp_existing.content | b64decode == "We are at the café"' + +- name: Create a binary file to test with + copy: + src: bar.bin + dest: '{{ remote_tmp_dir }}/bar.bin' + +- name: test slurping a binary file + slurp: + path: '{{ remote_tmp_dir }}/bar.bin' + register: slurp_binary + no_log: true + +- name: check slurp result of binary + assert: + that: + - "slurp_binary.content" + - "slurp_binary.encoding == 'base64'" + - "slurp_binary is not changed" + - "slurp_binary is not failed" + +- name: test slurp with missing argument + action: slurp + register: slurp_no_args + ignore_errors: true + +- name: check slurp with missing argument result + assert: + that: + - "slurp_no_args is failed" + - "slurp_no_args.msg" + - "slurp_no_args is not changed" + +- import_tasks: test_unreadable.yml diff --git a/test/integration/targets/slurp/tasks/test_unreadable.yml b/test/integration/targets/slurp/tasks/test_unreadable.yml new file mode 100644 index 0000000..cab80cf --- /dev/null +++ b/test/integration/targets/slurp/tasks/test_unreadable.yml @@ -0,0 +1,74 @@ +- name: test slurping a non-existent file + slurp: + src: '{{ remote_tmp_dir }}/i_do_not_exist' + register: slurp_missing + ignore_errors: yes + +- name: Create a directory to test with + file: + path: '{{ remote_tmp_dir }}/baz/' + state: directory + +- name: test slurping a directory + slurp: + src: '{{ remote_tmp_dir }}/baz' + register: slurp_dir + ignore_errors: yes + +# Ensure unreadable file and directory handling and error messages +# https://github.com/ansible/ansible/issues/67340 + +- name: create unreadable file + copy: + content: "Hello, World!" + dest: "{{ remote_tmp_dir }}/qux.txt" + mode: '0600' + owner: root + +- name: test slurp unreadable file + slurp: + src: "{{ remote_tmp_dir }}/qux.txt" + register: slurp_unreadable_file + vars: &test_user_become + ansible_become: yes + ansible_become_user: "{{ test_user_name }}" + ansible_become_password: "{{ test_user_plaintext_password }}" + ignore_errors: yes + +- name: create unreadable directory + file: + path: "{{ remote_tmp_dir }}/test_data" + state: directory + mode: '0700' + owner: root + +- name: test slurp unreadable directory + slurp: + src: "{{ remote_tmp_dir }}/test_data" + register: slurp_unreadable_dir + vars: *test_user_become + ignore_errors: yes + +- name: Try to access file as directory + slurp: + src: "{{ remote_tmp_dir }}/qux.txt/somefile" + ignore_errors: yes + register: slurp_path_file_as_dir + +- name: check slurp failures + assert: + that: + - slurp_missing is failed + - slurp_missing.msg is search('file not found') + - slurp_missing is not changed + - slurp_unreadable_file is failed + - slurp_unreadable_file.msg is regex('^file is not readable:') + - slurp_unreadable_file is not changed + - slurp_unreadable_dir is failed + - slurp_unreadable_dir.msg is regex('^file is not readable:') + - slurp_unreadable_dir is not changed + - slurp_path_file_as_dir is failed + - slurp_path_file_as_dir is search('unable to slurp file') + - slurp_dir is failed + - slurp_dir.msg is search('source is a directory and must be a file') + - slurp_dir is not changed |