summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/slurp/tasks/test_unreadable.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/slurp/tasks/test_unreadable.yml')
-rw-r--r--test/integration/targets/slurp/tasks/test_unreadable.yml74
1 files changed, 74 insertions, 0 deletions
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